[erlang-questions] Bug ?!

Mats Cronqvist <>
Mon Oct 2 09:35:26 CEST 2006


datacompboy wrote:
> Is that a bug of compiler?
> 
> -module(a).
> -record(x, {a, b, c}).
> -export([bug/1]).
> 
> bug(X) ->
>   receive
>     {msg, X#x.a} -> ok
>   after 0 -> ok
>   end.
> 
> We got "illegal pattern" on {msg, X#x.a}.
> If we change code so:
> bug(X) ->
>   XA = X#x.a,
>   receive
>     {msg, XA} -> ok
>   after 0 -> ok
>   end.
> 
> it works. Is that bug of records compilation, or feature?!

   it's an artifact of the (rather lame) way records are implemented. (X#x.a is 
essentially a macro for element(?INDEX(a,x),X), where INDEX is the field 
position of a in x).
   so, a feature :>

   mats



More information about the erlang-questions mailing list