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 = eval (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,9 +41,8 @@ macro unroll(expr)
41
41
end
42
42
varname = expr. args[1 ]. args[1 ]
43
43
ret = Expr (:block )
44
- dump (expr. args[1 ]. args[2 ])
45
- for k in eval (expr. args[1 ]. args[2 ])
46
- 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__)
47
46
push! (ret. args, e2)
48
47
end
49
48
esc (ret)
@@ -57,8 +56,8 @@ macro tuplegen(expr)
57
56
end
58
57
varname = expr. args[2 ]. args[1 ]
59
58
ret = Expr (:tuple )
60
- for k in eval (expr. args[2 ]. args[2 ])
61
- 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__ )
62
61
push! (ret. args,e2)
63
62
end
64
63
esc (ret)
0 commit comments