mirror of
https://github.com/leporello-js/leporello-js
synced 2026-01-13 13:04:30 -08:00
fix deferred call bug
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user