From 1a23d3eefc09877463759301a7b76bec765b4ee6 Mon Sep 17 00:00:00 2001 From: Dmitry Vasilev Date: Sat, 10 Jun 2023 18:34:58 +0300 Subject: [PATCH] fix step out bug --- src/eval.js | 22 ++++++++++++++-------- test/test.js | 13 +++++++++++++ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/eval.js b/src/eval.js index 39ccd20..25df3da 100644 --- a/src/eval.js +++ b/src/eval.js @@ -352,14 +352,20 @@ export const eval_modules = ( const result = run(module_fns, cxt, io_cache) - const make_result = result => ({ - modules: result.modules, - logs: result.logs, - eval_cxt: result.eval_cxt, - calltree: assign_code(parse_result.modules, result.calltree), - call: result.call && assign_code(parse_result.modules, result.call), - io_cache: result.eval_cxt.io_cache, - }) + const make_result = result => { + const calltree = assign_code(parse_result.modules, result.calltree) + const call = result.call == null + ? null + : find_node(calltree, node => node.id == result.call.id) + return { + modules: result.modules, + logs: result.logs, + eval_cxt: result.eval_cxt, + calltree, + call, + io_cache: result.eval_cxt.io_cache, + } + } if(is_async) { return result.__original_then(make_result) diff --git a/test/test.js b/test/test.js index 2ad5641..cd6efc7 100644 --- a/test/test.js +++ b/test/test.js @@ -1737,6 +1737,19 @@ const y = x()` assert_equal(e.current_calltree_node.toplevel, true) }), + test('edit function step out', () => { + const code = ` + const x = () => { + return 1 + } + x() + ` + const i = test_initial_state(code) + const edited = COMMANDS.input(i, code.replace('1', '100'), code.indexOf('1')).state + const left = COMMANDS.calltree.arrow_left(edited) + assert_equal(left.active_calltree_node.toplevel, true) + }), + test('expand_calltree_node', () => { // Test expecting MAX_DEPTH = 1 const s = test_initial_state(`