[erlang-questions] Opaque types vs lists:foldl

Magnus Henoch magnus.henoch@REDACTED
Wed Nov 30 13:51:26 CET 2011

Hi all,

I just discovered that when running Dialyzer on this module:



-record(x, {y = []}).
-opaque state() :: #x{}.

foo() ->
    lists:foldl(fun bar/2, #x{}, [a, b, c]).

bar(A, X) ->
    X#x{y = [A|X#x.y]}.

I get:

foo.erl:8: Function foo/0 has no local return

If I comment out the "-opaque" line or change it to "-type", the error
goes away.  I get the same result with R14B01 and R15A.

Is this a bug or a feature?

Magnus Henoch
Erlang Solutions Ltd

More information about the erlang-questions mailing list