Skip to content

Commit c6294ad

Browse files
Merge pull request #7 from pepijndevos/master
Eval into caller module
2 parents 500150d + 9d9d40a commit c6294ad

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

Diff for: Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ version = "0.1.0"
77
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
88

99
[targets]
10-
test = ["Test"]
10+
test = ["Test"]

Diff for: src/Unroll.jl

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
module Unroll
22

33

4-
copy_and_substitute_tree(e, varname, newtext) = e
4+
copy_and_substitute_tree(e, varname, newtext, mod) = e
55

6-
copy_and_substitute_tree(e::Symbol, varname, newtext) =
6+
copy_and_substitute_tree(e::Symbol, varname, newtext, mod) =
77
e == varname ? newtext : e
88

9-
function copy_and_substitute_tree(e::Expr, varname, newtext)
9+
function copy_and_substitute_tree(e::Expr, varname, newtext, mod)
1010
e2 = Expr(e.head)
1111
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))
1313
end
1414
if e.head == :if
1515
newe = e2
1616
try
17-
u = eval(e2.args[1])
17+
u = Core.eval(mod, e2.args[1])
1818
if u == true
1919
newe = e2.args[2]
2020
elseif u == false
@@ -41,9 +41,8 @@ macro unroll(expr)
4141
end
4242
varname = expr.args[1].args[1]
4343
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__)
4746
push!(ret.args, e2)
4847
end
4948
esc(ret)
@@ -57,8 +56,8 @@ macro tuplegen(expr)
5756
end
5857
varname = expr.args[2].args[1]
5958
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__)
6261
push!(ret.args,e2)
6362
end
6463
esc(ret)

0 commit comments

Comments
 (0)