@@ -13,50 +13,44 @@ defmodule ElixirScript.Preprocess.Aliases do
1313
1414 #the "Hello.World" would be placed in a set and later used for building an alias
1515 """
16- def process ( ast , env ) do
17-
18- state = % { add: HashSet . new , defined: HashSet . new }
19-
20- { new_ast , state } = Macro . prewalk ( ast , state , fn ( x , acc ) ->
21- process_aliases ( x , acc , env )
16+ def process ( module_name_list , ast , env ) do
17+ new_ast = Macro . prewalk ( ast , fn ( x ) ->
18+ process_aliases ( x , env , module_name_list )
2219 end )
2320
24- { new_ast , state . add }
25- end
26-
27- def process_aliases ( { :alias , _ , [ { :__aliases__ , _ , _name } , [ as: { :__aliases__ , _ , alias_name } ] ] } = ast , state , _ ) do
28- { ast , % { state | defined: HashSet . put ( state . defined , List . last ( alias_name ) ) } }
29- end
21+ module = ElixirScript.State . get_module ( module_name_list )
3022
31- def process_aliases ( { :alias , _ , [ { :__aliases__ , _ , name } ] } = ast , state , _ ) do
32- { ast , % { state | defined: HashSet . put ( state . defined , List . last ( name ) ) } }
23+ if module do
24+ { new_ast , ElixirScript.Module . aliases ( module ) }
25+ else
26+ { new_ast , [ ] }
27+ end
3328 end
3429
35- def process_aliases ( { { :. , meta1 , [ { :__aliases__ , meta2 , aliases } , function ] } , meta3 , params } = ast , state , env ) when aliases in [ [ :Collectable ] , [ :Enumerable ] , [ :Inspect ] , [ :List , :Chars ] , [ :String , :Chars ] ] do
30+ def process_aliases ( { { :. , meta1 , [ { :__aliases__ , meta2 , aliases } , function ] } , meta3 , params } , _ , module_name_list ) when aliases in [ [ :Collectable ] , [ :Enumerable ] , [ :Inspect ] , [ :List , :Chars ] , [ :String , :Chars ] ] do
3631 new_ast = { { :. , meta1 , [ { :__aliases__ , meta2 , List . last ( aliases ) |> List . wrap } , function ] } , meta3 , params }
37-
38- new_state = % { state | add: HashSet . put ( state . add , [ :Elixir ] ++ aliases ) }
39- { new_ast , new_state }
32+ ElixirScript.State . add_alias ( module_name_list , { :__aliases__ , meta2 , [ :Elixir ] ++ aliases } )
33+ new_ast
4034 end
4135
4236
43- def process_aliases ( { { :. , meta1 , [ { :__aliases__ , meta2 , aliases } , function ] } , meta3 , params } = ast , state , env ) do
37+ def process_aliases ( { { :. , meta1 , [ { :__aliases__ , meta2 , aliases } , function ] } , meta3 , params } = ast , _ , module_name_list ) do
4438 if ElixirScript.State . module_listed? ( aliases ) do
4539 new_ast = { { :. , meta1 , [ { :__aliases__ , meta2 , List . last ( aliases ) |> List . wrap } , function ] } , meta3 , params }
4640
47- new_state = if ! HashSet . member? ( state . defined , List . last ( aliases ) ) do
48- % { state | add: HashSet . put ( state . add , aliases ) }
49- else
50- state
41+ module = ElixirScript.State . get_module ( module_name_list )
42+
43+ if ! ElixirScript.Module . has_alias? ( module , { :__aliases__ , meta2 , List . last ( aliases ) |> List . wrap } ) do
44+ ElixirScript.State . add_alias ( module_name_list , { :__aliases__ , meta2 , aliases } )
5145 end
5246
53- { new_ast , new_state }
47+ new_ast
5448 else
55- { ast , state }
49+ ast
5650 end
5751 end
5852
59- def process_aliases ( ast , state , _ ) do
60- { ast , state }
53+ def process_aliases ( ast , _ , _ ) do
54+ ast
6155 end
62- end
56+ end
0 commit comments