@@ -13,25 +13,25 @@ defmodule Support.Async do
13
13
end ,
14
14
do: block
15
15
) do
16
- id = :crypto . strong_rand_bytes ( 12 ) |> Base . encode16 ( )
17
- test_module_name = Module . concat ( __CALLER__ . module , "AsyncTest_#{ id } " )
18
- fun_name = :"async_test_#{ id } "
19
- after_compile_fun_name = :"async_test_ac_#{ id } "
20
-
21
16
quote do
17
+ id = :crypto . strong_rand_bytes ( 12 ) |> Base . encode16 ( )
18
+ test_module_name = Module . concat ( __MODULE__ , "AsyncTest_#{ id } " )
19
+ fun_name = :"async_test_#{ id } "
20
+ after_compile_fun_name = :"async_test_ac_#{ id } "
21
+
22
22
@ tags_attrs [ :tag , :describetag , :moduletag ]
23
23
|> Enum . flat_map ( fn attr ->
24
24
Module . get_attribute ( __MODULE__ , attr )
25
25
|> Enum . map ( & { attr , & 1 } )
26
26
end )
27
27
28
- def unquote ( fun_name ) ( unquote ( context ) ) do
28
+ def unquote ( unquoted_var ( : fun_name) ) ( unquote ( context ) ) do
29
29
unquote ( block )
30
30
end
31
31
32
- def unquote ( after_compile_fun_name ) ( _bytecode , _env ) do
33
- test_name = unquote ( test_name )
34
- fun_name = unquote ( fun_name )
32
+ def unquote ( unquoted_var ( : after_compile_fun_name) ) ( _bytecode , _env ) do
33
+ test_name = unquote ( unquoted ( test_name ) )
34
+ fun_name = unquote ( unquoted_var ( : fun_name) )
35
35
36
36
content =
37
37
quote do
@@ -46,12 +46,20 @@ defmodule Support.Async do
46
46
end
47
47
end
48
48
49
- Module . create ( unquote ( test_module_name ) , content , __ENV__ )
49
+ Module . create ( unquote ( unquoted_var ( : test_module_name) ) , content , __ENV__ )
50
50
end
51
51
52
- @ after_compile { __MODULE__ , unquote ( after_compile_fun_name ) }
52
+ @ after_compile { __MODULE__ , after_compile_fun_name }
53
53
54
54
Module . delete_attribute ( __MODULE__ , :tag )
55
55
end
56
56
end
57
+
58
+ defp unquoted_var ( name ) do
59
+ unquoted ( Macro . var ( name , __MODULE__ ) )
60
+ end
61
+
62
+ defp unquoted ( ast ) do
63
+ { :unquote , [ ] , [ ast ] }
64
+ end
57
65
end
0 commit comments