[erlang-questions] Why the compiler doesn't complain!

Bjorn Gustavsson bjorn@REDACTED
Tue Jan 15 11:29:08 CET 2008

"Ali Yakout" <ali.yakout@REDACTED> writes:

> The compiler should display a warning if some clause can't match because
> the previous one do.

The compiler does not guarantee that the compiler will display a
warning for every clause that cannot be reached. The compiler will
only display a warning if it is smart enough to see that the second
clause cannot match.

> But, when adding a record to the match clause, it goes ok !
> eval2(Command, #state{name = "erl"}) ->
>     io:format("Executing ~p ... ~n", [Command]);
> eval2({quit}, #state{name = "erl"}) ->
>     done.

The compiler is not smart enough in this case.

Dialyzer may handle this better.

Björn Gustavsson, Erlang/OTP, Ericsson AB

More information about the erlang-questions mailing list