From 2ee62904527d98be2730c72d4f093c6df4acb7db Mon Sep 17 00:00:00 2001 From: Dmitry Vasilev Date: Sun, 8 Jan 2023 06:19:38 +0800 Subject: [PATCH] fix expand calltree node for new calls --- src/eval.js | 6 +++++- test/test.js | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/eval.js b/src/eval.js index 14efecc..b741f3d 100644 --- a/src/eval.js +++ b/src/eval.js @@ -338,7 +338,11 @@ export const eval_modules = ( is_recording_deferred_calls = false children = null try { - node.fn.apply(node.context, node.args) + if(node.is_new) { + new node.fn(...node.args) + } else { + node.fn.apply(node.context, node.args) + } } catch(e) { // do nothing. Exception was caught and recorded inside 'trace' } diff --git a/test/test.js b/test/test.js index 2a637e1..0ae49d2 100644 --- a/test/test.js +++ b/test/test.js @@ -1639,6 +1639,22 @@ const y = x()` assert_equal(first2.code, first2.children[0].code) }), + test('expand_calltree_node new', () => { + const code = ` + const make_class = new Function("return class { constructor(x) { x() } }") + const clazz = make_class() + const x = () => 1 + new clazz(x) + ` + const s = test_initial_state(code) + const new_call = root_calltree_node(s).children.at(-1) + const expanded_new_call = COMMANDS.calltree.click(s, new_call.id).state + const x_call = root_calltree_node(expanded_new_call) + .children.at(-1) + .children[0] + assert_equal(x_call.fn.name, 'x') + }), + test('expand_calltree_node native', () => { const s = test_initial_state(`[1,2,3].map(x => x + 1)`) const map = root_calltree_node(s).children[0]