@@ -439,17 +439,17 @@ function repl_backend_loop(backend::REPLBackend, get_module::Function)
439
439
# exit flag
440
440
break
441
441
end
442
- if ast_or_func isa Expr
443
- ast = ast_or_func
444
- eval_user_input (ast, backend, get_module ())
445
- else
442
+ if show_value == 2 # 2 indicates a function to be called
446
443
f = ast_or_func
447
444
try
448
445
ret = f ()
449
446
put! (backend. response_channel, Pair {Any, Bool} (ret, false ))
450
447
catch err
451
448
put! (backend. response_channel, Pair {Any, Bool} (err, true ))
452
449
end
450
+ else
451
+ ast = ast_or_func
452
+ eval_user_input (ast, backend, get_module ())
453
453
end
454
454
end
455
455
return nothing
@@ -582,20 +582,19 @@ function print_response(errio::IO, response, backend::Union{REPLBackendRef,Nothi
582
582
repl_display_error (errio, val)
583
583
else
584
584
if val != = nothing && show_value
585
- try
586
- if specialdisplay === nothing
587
- # display calls may require being run on the main thread
588
- eval_with_backend (backend) do
589
- Base. invokelatest (display, val)
590
- end
591
- else
592
- eval_with_backend (backend) do
593
- Base. invokelatest (display, specialdisplay, val)
594
- end
585
+ val2, iserr = if specialdisplay === nothing
586
+ # display calls may require being run on the main thread
587
+ eval_with_backend (backend) do
588
+ Base. invokelatest (display, val)
595
589
end
596
- catch
590
+ else
591
+ eval_with_backend (backend) do
592
+ Base. invokelatest (display, specialdisplay, val)
593
+ end
594
+ end
595
+ if iserr
597
596
println (errio, " Error showing value of type " , typeof (val), " :" )
598
- rethrow ( )
597
+ throw (val2 )
599
598
end
600
599
end
601
600
end
@@ -1154,7 +1153,7 @@ function eval_with_backend(ast::Expr, backend::REPLBackendRef)
1154
1153
return take! (backend. response_channel) # (val, iserr)
1155
1154
end
1156
1155
function eval_with_backend (f, backend:: REPLBackendRef )
1157
- put! (backend. repl_channel, (f, false )) # (f, show_value)
1156
+ put! (backend. repl_channel, (f, 2 )) # (f, show_value) 2 indicates function (rather than ast )
1158
1157
return take! (backend. response_channel) # (val, iserr)
1159
1158
end
1160
1159
# if no backend just eval (used by tests)
0 commit comments