eqwalizer icon indicating copy to clipboard operation
eqwalizer copied to clipboard

Exhaustiveness checking

Open michallepicki opened this issue 2 years ago • 2 comments

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

michallepicki avatar Aug 06 '22 08:08 michallepicki

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.

ilya-klyuchnikov avatar Aug 06 '22 13:08 ilya-klyuchnikov

It will be clarified as part of documentation soon.

ilya-klyuchnikov avatar Aug 06 '22 13:08 ilya-klyuchnikov