77fn (Meta , Clauses , S ) ->
88 Transformer = fun ({ ArgsWithGuards , CMeta , Expr }, Acc ) ->
99 { Args , Guards } = elixir_clauses :extract_splat_guards (ArgsWithGuards ),
10- elixir_clauses :assigns_block (? line (CMeta ), fun elixir_translator : translate /2 , Args , [Expr ], Guards , umergec (S , Acc ))
10+ elixir_clauses :assigns_block (? line (CMeta ), fun translate_fn_match /2 , Args , [Expr ], Guards , umergec (S , Acc ))
1111 end ,
1212
1313 { TClauses , NS } = lists :mapfoldl (Transformer , S , Clauses ),
@@ -21,6 +21,10 @@ fn(Meta, Clauses, S) ->
2121 " cannot mix clauses with different arities in function definition" )
2222 end .
2323
24+ translate_fn_match (Arg , S ) ->
25+ { TArg , TS } = elixir_translator :translate (Arg , S # elixir_scope {extra = fn_match }),
26+ { TArg , TS # elixir_scope {extra = S # elixir_scope .extra } }.
27+
2428capture (Meta , { '/' , _ , [{ { '.' , _ , [M , F ] }, _ , [] }, A ] }, S ) when is_atom (F ), is_integer (A ) ->
2529 { [MF , FF , AF ], SF } = elixir_translator :translate_args ([M , F , A ], S ),
2630 { { 'fun' , ? line (Meta ), { function , MF , FF , AF } }, SF };
0 commit comments