diff --git a/src/calltree.js b/src/calltree.js index 61664fd..4379bd1 100644 --- a/src/calltree.js +++ b/src/calltree.js @@ -300,25 +300,39 @@ const jump_calltree_node = (_state, _current_calltree_node) => { with_location.active_calltree_node.id, ) - return {...with_selected_calltree_node, - value_explorer: next.current_calltree_node.toplevel - ? null - : { - index: loc.index, - result: { - ok: true, - value: current_calltree_node.ok - ? { - '*arguments*': current_calltree_node.args, - '*return*': current_calltree_node.value, - } - : { - '*arguments*': current_calltree_node.args, - '*throws*': current_calltree_node.error, - } - } - }, + let value_explorer + if(next.current_calltree_node.toplevel) { + value_explorer = null + } else { + + const args = show_body + ? active_frame(with_selected_calltree_node) + // function args node + .children[0] + .result + .value + : current_calltree_node.args + + value_explorer = { + index: loc.index, + result: { + ok: true, + value: current_calltree_node.ok + ? { + '*arguments*': args, + '*return*': current_calltree_node.value, + } + : { + '*arguments*': args, + '*throws*': current_calltree_node.error, + } + } + } + } + + return {...with_selected_calltree_node, + value_explorer, selection_state: show_body ? null : {node: callsite_node} diff --git a/test/test.js b/test/test.js index a84528a..b92a685 100644 --- a/test/test.js +++ b/test/test.js @@ -2120,6 +2120,18 @@ const y = x()` assert_equal(map_expanded.children.length, 3) }), + test('value_explorer arguments', () => { + const i = test_initial_state(` + function foo(x, {y}) { + } + + foo(1, {y: 2}) + `) + const expanded = COMMANDS.calltree.click(i, root_calltree_node(i).children[0].id) + const args = expanded.value_explorer.result.value['*arguments*'] + assert_equal(args, {x: 1, y: 2}) + }), + test('click native calltree node', () => { const s = test_initial_state(`Object.fromEntries([])`) const index = 0 // Where call starts