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

Ali Yakout <>
Tue Jan 15 08:12:29 CET 2008


Hi,

I came across some strange compiler behavior.


The compiler should display a warning if some clause can't match because
the previous one do.
And this is true for the following:

-record(state, {name, accountNo, input, pin}).

eval(Command, Args) ->
    io:format("Executing ~p ... ~n", [Command]);
eval({quit}, _) ->
    done.

8> c("me").
me.erl:7: Warning: this clause cannot match because a previous clause at
line 5 always matches
{ok,me}


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.

9> c("me").
{ok,me}



Regards,
Ali Yakout
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080115/aae2dbe7/attachment.html>


More information about the erlang-questions mailing list