@@ -107,7 +107,8 @@ translate_each({ alias, Meta, [Ref, KV] }, S) ->
107107 { as , false } ->
108108 { Old , SR };
109109 { as , Other } ->
110- { TOther , SA } = translate_each (Other , SR # elixir_scope {aliases = []}),
110+ { TOther , SA } = translate_each (no_alias_expansion (Other ),
111+ SR # elixir_scope {aliases = [],macro_aliases = []}),
111112 case TOther of
112113 { atom , _ , Atom } -> { Atom , SA };
113114 _ -> syntax_error (Meta , S # elixir_scope .file ,
@@ -127,7 +128,8 @@ translate_each({ alias, Meta, [Ref, KV] }, S) ->
127128 end ,
128129
129130 { { nil , ? line (Meta ) }, SF # elixir_scope {
130- aliases = orddict :store (New , Old , S # elixir_scope .aliases )
131+ aliases = orddict :store (New , Old , S # elixir_scope .aliases ),
132+ macro_aliases = orddict :store (New , Old , S # elixir_scope .macro_aliases )
131133 } }
132134 end ;
133135 _ ->
@@ -213,7 +215,7 @@ translate_each({ '__CALLER__', Meta, Atom }, S) when is_atom(Atom) ->
213215% % Aliases
214216
215217translate_each ({ '__aliases__' , Meta , _ } = Alias , S ) ->
216- case elixir_aliases :expand (Alias , S # elixir_scope .aliases ) of
218+ case elixir_aliases :expand (Alias , S # elixir_scope .aliases , S # elixir_scope . macro_aliases ) of
217219 Atom when is_atom (Atom ) -> { { atom , ? line (Meta ), Atom }, S };
218220 Aliases ->
219221 { TAliases , SA } = translate_args (Aliases , S ),
@@ -555,6 +557,12 @@ expand_var_context(Meta, Alias, Msg, S) ->
555557 syntax_error (Meta , S # elixir_scope .file , " ~ts , expected a compile time available alias or an atom" , [Msg ])
556558 end .
557559
560+ no_alias_expansion ({ '__aliases__' , Meta , [H |T ] }) when (H /= 'Elixir' ) and is_atom (H ) ->
561+ { '__aliases__' , Meta , ['Elixir' ,H |T ] };
562+
563+ no_alias_expansion (Other ) ->
564+ Other .
565+
558566% % Translate args
559567
560568% % Variables in arguments are not propagated from one
0 commit comments