1
1
module Unroll
2
2
3
3
4
- copy_and_substitute_tree (e, varname, newtext) = e
4
+ copy_and_substitute_tree (e, varname, newtext, mod ) = e
5
5
6
- copy_and_substitute_tree (e:: Symbol , varname, newtext) =
6
+ copy_and_substitute_tree (e:: Symbol , varname, newtext, mod ) =
7
7
e == varname ? newtext : e
8
8
9
- function copy_and_substitute_tree (e:: Expr , varname, newtext)
9
+ function copy_and_substitute_tree (e:: Expr , varname, newtext, mod )
10
10
e2 = Expr (e. head)
11
11
for subexp in e. args
12
- push! (e2. args, copy_and_substitute_tree (subexp, varname, newtext))
12
+ push! (e2. args, copy_and_substitute_tree (subexp, varname, newtext, mod ))
13
13
end
14
14
if e. head == :if
15
15
newe = e2
16
16
try
17
- u = Core. eval (@__MODULE__ , e2. args[1 ])
17
+ u = Core. eval (mod , e2. args[1 ])
18
18
if u == true
19
19
newe = e2. args[2 ]
20
20
elseif u == false
@@ -41,8 +41,8 @@ macro unroll(expr)
41
41
end
42
42
varname = expr. args[1 ]. args[1 ]
43
43
ret = Expr (:block )
44
- for k in Core. eval (@__MODULE__ , expr. args[1 ]. args[2 ])
45
- e2 = copy_and_substitute_tree (expr. args[2 ], varname, k)
44
+ for k in Core. eval (__module__ , expr. args[1 ]. args[2 ])
45
+ e2 = copy_and_substitute_tree (expr. args[2 ], varname, k, __module__ )
46
46
push! (ret. args, e2)
47
47
end
48
48
esc (ret)
@@ -56,8 +56,8 @@ macro tuplegen(expr)
56
56
end
57
57
varname = expr. args[2 ]. args[1 ]
58
58
ret = Expr (:tuple )
59
- for k in Core. eval (@__MODULE__ , expr. args[2 ]. args[2 ])
60
- e2 = copy_and_substitute_tree (expr. args[1 ], varname, k)
59
+ for k in Core. eval (__module__ , expr. args[2 ]. args[2 ])
60
+ e2 = copy_and_substitute_tree (expr. args[1 ], varname, k, __module__ )
61
61
push! (ret. args,e2)
62
62
end
63
63
esc (ret)
0 commit comments