[erlang-questions] incomplete union checks in dialyzer

Motiejus Jakštys <>
Thu Aug 30 11:38:10 CEST 2012


Hi,

-module(gg).
-export([oho/0]).

-type(error_enum() ::
      f01 | f02 | f03 | f04 | f05 | f06 | f07
    | f08 | f09 | f10 | f11 | f12 | f13 | f14
).

-spec oho() -> error_enum().
oho() -> oh_no.


$ erlc +debug_info gg.erl && dialyzer --no_check_plt gg.beam
  Proceeding with analysis... done in 0m0.48s
done (passed successfully)

Which is wrong ('oh_no' is not part of error_enum()). However, if I
remove "| f14`":

$ erlc +debug_info gg.erl && dialyzer --no_check_plt gg.beam
  Proceeding with analysis...
gg.erl:9: Invalid type specification for function gg:oho/0. The
success typing is () -> 'oh_no'
 done in 0m0.51s
done (warnings were emitted)

Which is right. How come?

-- 
Motiejus Jakštys



More information about the erlang-questions mailing list