From 80b5d84dc8ac1782ecb7ff43162fb515e8f6a9f2 Mon Sep 17 00:00:00 2001 From: Mike J Innes Date: Sun, 4 Mar 2018 13:09:06 +0000 Subject: [PATCH] fixes #20 --- src/interpret.jl | 2 +- test/interpret.jl | 7 +++++++ test/stepping.jl | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/interpret.jl b/src/interpret.jl index 7510af04b35c2..28c2c229eb431 100644 --- a/src/interpret.jl +++ b/src/interpret.jl @@ -81,7 +81,7 @@ function _step_expr(frame, pc) if node.head == :(=) lhs = node.args[1] if isexpr(node.args[2], :new) - new_expr = Expr(:new, map(x->lookup_var_if_var(frame, x), node.args[2].args)...) + new_expr = Expr(:new, map(x->QuoteNode(lookup_var_if_var(frame, x)), node.args[2].args)...) rhs = eval(frame.meth.module, new_expr) else rhs = (isexpr(node.args[2], :call) || isexpr(node.args[2], :foreigncall)) ? evaluate_call(frame, node.args[2]) : diff --git a/test/interpret.jl b/test/interpret.jl index 019e7a6e54242..f9b4f9b34b98b 100644 --- a/test/interpret.jl +++ b/test/interpret.jl @@ -67,4 +67,11 @@ end @assert step_through(enter_call_expr(:($(foo_sym)()))) == Symbol +# Make sure evalling "new" works with symbols +function new_sym() + a = :a + () -> a +end + +step_through(enter_call_expr(:($new_sym()))) diff --git a/test/stepping.jl b/test/stepping.jl index 1c7b1907312bf..e48f6edd90e95 100644 --- a/test/stepping.jl +++ b/test/stepping.jl @@ -206,4 +206,4 @@ try execute_command(state, state.stack[1], Val{:n}(), "n") catch e @assert isa(e, ErrorException) -end \ No newline at end of file +end