[erlang-questions] Record initializer work-around for smart_exceptions?

Scott Lystig Fritchie fritchie@REDACTED
Fri Apr 25 23:15:39 CEST 2008


Hi.  I suppose this question could be directed to Thomas Lindren, but I
thought I'd share with a wider audience.

Is there a way to avoid these errors (due to introducing temp variables
by the parse transform) when a record initializer contains something
other than a simple term?

    ./foo.erl:0: variable '_0' in record definition
    ./foo.erl:0: variable '_1' in record definition

... in a module like this (using the R11B-5 compiler, at least):

    -module(foo).
    -compile(export_all).
    
    %% -record(foo, { item = 0 }).  % works
    -record(foo, { item = -1 }). % doesn't work
    %% -record(foo, { item = erlang:now() }).  % doesn't work
    %% -record(foo, { item = now() }). % works 
    
    func() -> #foo{}.

"Simple term" is a bit misleading, because -1 appears to be a simple
term in my book, but the hyphen confuses the parse transform.  Much of
the code I'd like to use with smart_exceptions uses negative constants,
unfortunately.

-Scott



More information about the erlang-questions mailing list