fix deferred call bug

This commit is contained in:
Dmitry Vasilev
2024-03-02 12:45:56 +08:00
parent 62407ec86b
commit 810e6178f8
3 changed files with 10 additions and 6 deletions

View File

@@ -545,6 +545,8 @@ const __save_ct_node_for_path = (cxt, __calltree_node_by_loc, index, __call_id)
}
}
let ct_expansion_id_gen = 0
export const with_version_number = (rt_cxt, version_number, action) => {
if(rt_cxt.logs == null) {
// check that argument is rt_cxt
@@ -559,12 +561,12 @@ export const with_version_number = (rt_cxt, version_number, action) => {
rt_cxt.is_expanding_calltree_node = true
const version_counter_copy = rt_cxt.version_counter
rt_cxt.version_counter = version_number
rt_cxt.ct_expansion_id = rt_cxt.ct_expansion_id == null
? 0
: rt_cxt.ct_expansion_id + 1
const ct_expansion_id = rt_cxt.ct_expansion_id
rt_cxt.ct_expansion_id = ct_expansion_id_gen++
try {
return action()
} finally {
rt_cxt.ct_expansion_id = ct_expansion_id
rt_cxt.is_expanding_calltree_node = false
rt_cxt.version_counter = version_counter_copy
}

View File

@@ -4776,7 +4776,9 @@ const y = x()`
inc()
`
const {state: i, on_deferred_call} = test_deferred_calls_state(code)
const {state: i, on_deferred_call} = test_deferred_calls_state(code, code.indexOf('let x'))
assert_value_explorer(i, 0)
// Make deferred call
i.modules[''].inc()

View File

@@ -166,7 +166,7 @@ export const input_async = async (s, code, index, options) => {
}
}
export const test_deferred_calls_state = code => {
export const test_deferred_calls_state = (code, index) => {
const {get_deferred_call, on_deferred_call} = (new Function(`
let args
return {
@@ -179,7 +179,7 @@ export const test_deferred_calls_state = code => {
}
`))()
const state = test_initial_state(code, null, { on_deferred_call })
const state = test_initial_state(code, index, { on_deferred_call })
return {
state,