[erlang-questions] dialyzer: user-defined types just synonyms?
Thu Apr 22 15:57:09 CEST 2010
Cause I may extend this function in the future. Or got this version
after refactoring and don't want to change code that uses it.
Kostis Sagonas wrote:
> Dmitry Belyaev wrote:
>> And one more question. I have a code:
>> -spec start() -> ok.
>> start() ->
>> case check_atom(good) of
>> ok -> ok;
>> error -> error
>> -spec check_atom(good | nice) -> ok | error.
>> check_atom(Atom) ->
>> Dialyzer shows:
>> test.erl:10: The pattern 'error' can never match the type 'ok'
>> I'd like it to pay more attention to -spec than to function's body so
>> I wouldn't get this message. Is it possible?
> You've defined two functions in your example, one that returns either
> 'ok' or 'error' and you give it a spec that says it only returns 'ok'
> and one that clearly returns 'ok' only and your spec claims it returns
> 'error' also. Why on earth you would you want to do that in your
> program? If you want obfuscated code, write in C instead.
> Dialyzer has detected that you are clearly an evil programmer :-)
> Why should it be nice to you?
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:
More information about the erlang-questions