From 9f97a43f42b4582d01d5278c1bae699eb8066ea4 Mon Sep 17 00:00:00 2001 From: Dmitry Vasilev Date: Wed, 16 Nov 2022 13:39:29 +0800 Subject: [PATCH] refactor async_calls WIP: tests work --- src/calltree.js | 53 ++++++++++--------------------------------------- src/cmd.js | 2 +- test/test.js | 6 +++--- 3 files changed, 14 insertions(+), 47 deletions(-) diff --git a/src/calltree.js b/src/calltree.js index 79b22c1..1c33ed3 100644 --- a/src/calltree.js +++ b/src/calltree.js @@ -153,31 +153,13 @@ const replace_calltree_node = (root, node, replacement) => { return result } -// TODO remove, after refactoring async_calls -const replace_calltree_node_in_state = (state, node, replacement) => { - - const replaced = replace_calltree_node( - { - children: [ - root_calltree_node(state), - {children: state.async_calls}, - ] - }, - node, - replacement - ) - - return {...state, - calltree: {children: [replaced.children[0]]}, - async_calls: replaced.children[1].children, - } -} - const expand_calltree_node = (state, node) => { if(node.has_more_children) { const next_node = state.calltree_actions.expand_calltree_node(node) return { - state: replace_calltree_node_in_state(state, node, next_node), + state: {...state, + calltree: replace_calltree_node(state.calltree, node, next_node) + }, node: next_node } } else { @@ -204,25 +186,12 @@ const jump_calltree_node = (_state, _current_calltree_node) => { /* Whether to show fn body (true) or callsite (false) */ let show_body - const [_parent] = path_to_root( - { - children: [ - root_calltree_node(state), - {children: state.async_calls}, - ] - }, - current_calltree_node - ) - - const parent = _parent.id == null - ? current_calltree_node - : _parent + const [parent] = path_to_root(state.calltree, current_calltree_node) if( current_calltree_node.toplevel || - /* async call */ - parent == current_calltree_node + parent.id == 'async_calls' ) { show_body = true } else if(is_native_fn(current_calltree_node)) { @@ -667,15 +636,13 @@ export const find_call = (state, index) => { ) } - const merged = { - children: [ - merge_calltrees(root_calltree_node(state), calltree), - state.calltree.children[1], - ], - } + const merged = make_calltree( + merge_calltrees(root_calltree_node(state), calltree), + get_async_calls(state), + ) const active_calltree_node = find_same_node( - merged.children[0], + root_calltree_node({calltree: merged}), calltree, call.id ) diff --git a/src/cmd.js b/src/cmd.js index b918136..235fa1b 100644 --- a/src/cmd.js +++ b/src/cmd.js @@ -39,7 +39,7 @@ const apply_eval_result = (state, eval_result) => { return { ...state, - calltree: {children: [eval_result.calltree]}, + calltree: make_calltree(eval_result.calltree, null), calltree_actions: eval_result.calltree_actions, logs: {logs, log_position: null}, modules: eval_result.modules, diff --git a/test/test.js b/test/test.js index 562f40c..86dd1d7 100644 --- a/test/test.js +++ b/test/test.js @@ -2,7 +2,7 @@ import {find_leaf, ancestry, find_node} from '../src/ast_utils.js' import {parse, print_debug_node} from '../src/parse_js.js' import {eval_tree, eval_frame, eval_modules} from '../src/eval.js' import {COMMANDS, get_initial_state} from '../src/cmd.js' -import {root_calltree_node, active_frame, pp_calltree} +import {root_calltree_node, active_frame, pp_calltree, get_async_calls} from '../src/calltree.js' import {color_file} from '../src/color.js' import { @@ -2344,13 +2344,13 @@ const y = x()` assert_equal(call.code.index, code.indexOf('() => {')) assert_equal(call.args, [10]) const state = COMMANDS.on_async_call(i, call) - assert_equal(state.async_calls, [call]) + assert_equal(get_async_calls(state), [call]) assert_equal(state.logs.logs.length, 1) // Expand call const {state: expanded} = COMMANDS.calltree.click(state, call.id) - assert_equal(expanded.async_calls[0].children[0].fn.name, 'fn2') + assert_equal(get_async_calls(expanded)[0].children[0].fn.name, 'fn2') }), ]