eqwalizer
eqwalizer copied to clipboard
Exhaustiveness checking
Is there a plan to have exhaustiveness checking of case expressions?
Currently this code doesn't result in any errors:
-module(testmod).
-export([testfun/0]).
-spec testfun() -> pos_integer().
testfun() ->
case a() of
ok -> 1
end.
-spec a() -> ok | number().
a() ->
case rand:uniform(10) rem 2 of
0 -> ok;
1 -> 1
end.
$ rebar3 compile
===> Verifying dependencies...
===> Analyzing applications...
===> Compiling myapp
$ elp eqwalize-all
Loading rebar3 build_info
Loading applications ████████████████████ 2/2
Seeding database
Compiling dependencies
NO ERRORS
Is there a plan to have exhaustiveness checking of case expressions?
In the short term - no. The main rationale for the current design choice: Erlang "let it crash philosophy" - for real world programs such checks may be rather noisy. - Consider implementations of gen_server - such checks would force users to add "default clauses".
We can re-consider this in future.
It will be clarified as part of documentation soon.