Skip to content

Commit 042a905

Browse files
authored
also maybe_quote ssavalues and locals (#400)
1 parent 0110a60 commit 042a905

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/utils.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,8 +516,8 @@ function eval_code(frame::Frame, expr)
516516
res = gensym()
517517
eval_expr = Expr(:let,
518518
Expr(:block, map(x->Expr(:(=), x...), [(v.name, maybe_quote(v.value isa Core.Box ? v.value.contents : v.value)) for v in vars])...,
519-
map(x->Expr(:(=), x...), [(Symbol("%$i"), data.ssavalues[i]) for i in defined_ssa])...,
520-
map(x->Expr(:(=), x...), [(Symbol("@_$i"), data.locals[i].value) for i in defined_locals])...),
519+
map(x->Expr(:(=), x...), [(Symbol("%$i"), maybe_quote(data.ssavalues[i])) for i in defined_ssa])...,
520+
map(x->Expr(:(=), x...), [(Symbol("@_$i"), maybe_quote(data.locals[i].value)) for i in defined_locals])...),
521521
Expr(:block,
522522
Expr(:(=), res, expr),
523523
Expr(:tuple, res, Expr(:tuple, [v.name for v in vars]...))

test/eval_code.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,16 @@ if VERSION >= v"1.4" # for var"" syntax
8484
@test eval_code(frame, "var\"%2\"") == Val(2)
8585
@test eval_code(frame, "var\"@_1\"") == f
8686
end
87+
88+
function fun(;output=:sym)
89+
x = 5
90+
y = 3
91+
end
92+
fr = JuliaInterpreter.enter_call(fun)
93+
fr = JuliaInterpreter.maybe_step_through_wrapper!(fr)
94+
JuliaInterpreter.step_expr!(fr)
95+
@test eval_code(fr, "x") == 5
96+
@test eval_code(fr, "output") == :sym
97+
eval_code(fr, "output = :foo")
98+
@test eval_code(fr, "output") == :foo
99+

0 commit comments

Comments
 (0)