[erlang-questions] Opaque types vs lists:foldl

Magnus Henoch <>
Wed Nov 30 13:51:26 CET 2011


Hi all,

I just discovered that when running Dialyzer on this module:

-module(foo).

-export([foo/0]).

-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
http://www.erlang-solutions.com/




More information about the erlang-questions mailing list