[eeps] EEP 24 revision

Bjorn Gustavsson <>
Mon Oct 27 16:45:30 CET 2008


On Wed, Oct 22, 2008 at 8:32 AM, Kenneth Lundin <>wrote:

> Thanks for the reference implementation but we already have this
> implemented.
> We will look at your implementation and see if it adds something to
> the one we already have.
>

My implementation makes sure that Name/Arity is allowed is allowed only in
attributes and
nowhere else.

/Bjorn

*** erl_parse.yrl@@/OTP_R12B-4    2008-06-10 14:47:26.000000000 +0200
--- erl_parse.yrl@@/main/release/r12b_patch/r12b_otp_7586/1    2008-10-08
16:06:09.000000000 +0200
***************
*** 704,710 ****
      end;
  build_attribute({atom,La,Attr}, Val) ->
      case Val of
!     [Expr] ->
          {attribute,La,Attr,term(Expr)};
      _Other -> return_error(La, "bad attribute")
      end.
--- 705,712 ----
      end;
  build_attribute({atom,La,Attr}, Val) ->
      case Val of
!     [Expr0] ->
!         Expr = attribute_farity(Expr0),
          {attribute,La,Attr,term(Expr)};
      _Other -> return_error(La, "bad attribute")
      end.
***************
*** 715,720 ****
--- 717,734 ----
  var_list(Other) ->
      return_error(?line(Other), "bad variable list").

+ attribute_farity({cons,L,H,T}) ->
+     {cons,L,attribute_farity(H),attribute_farity(T)};
+ attribute_farity({tuple,L,Args0}) ->
+     Args = attribute_farity_list(Args0),
+     {tuple,L,Args};
+ attribute_farity({op,L,'/',{atom,_,_}=Name,{integer,_,_}=Arity}) ->
+     {tuple,L,[Name,Arity]};
+ attribute_farity(Other) -> Other.
+
+ attribute_farity_list(Args) ->
+     [attribute_farity(A) || A <- Args].
+
  -spec(error_bad_decl/2 :: (integer(), attributes()) -> no_return()).

  error_bad_decl(L, S) ->


-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/eeps/attachments/20081027/42f56d12/attachment.html>


More information about the eeps mailing list