Found while covering the remaining runUntil defensive arms (Wave 7 a7 tick 6).
runUntil's runBatch checks if (!this.interpreter) after a setTimeout(0) yield, calls finishRunUntil(), and returns without flipping _state off running.
Repro (characterization in js-step-debugger.rununtil-leftovers.spec.ts):
prepare("while (true) {}") then runUntil(() => false) so the first batch yields.
Null interpreter before the queued batch fires.
The in-flight Promise resolves, but state() stays "running".
Expected: idle (or errored) with a cleared interpreter, matching stop(). Actual: running, so the toolbar can still show Pause/Step as if a session is live.
Related: #1058 (stop() from a native mid-step is overwritten to errored).
Found while covering the remaining `runUntil` defensive arms (Wave 7 a7 tick 6).
`runUntil`'s `runBatch` checks `if (!this.interpreter)` after a `setTimeout(0)` yield, calls `finishRunUntil()`, and returns **without** flipping `_state` off `running`.
Repro (characterization in `js-step-debugger.rununtil-leftovers.spec.ts`):
1. `prepare("while (true) {}")` then `runUntil(() => false)` so the first batch yields.
2. Null `interpreter` before the queued batch fires.
3. The in-flight Promise resolves, but `state()` stays `"running"`.
Expected: `idle` (or `errored`) with a cleared interpreter, matching `stop()`. Actual: `running`, so the toolbar can still show Pause/Step as if a session is live.
Related: #1058 (`stop()` from a native mid-step is overwritten to `errored`).
Resolved in spikersoft-angular PR #819 (merged to master). runUntil no longer leaves state=running when the interpreter is dropped between batches. Closing.
Resolved in spikersoft-angular [PR #819](https://git.spikersoft.com/spikerj/spikersoft-angular/pulls/819) (merged to `master`). runUntil no longer leaves state=running when the interpreter is dropped between batches. Closing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found while covering the remaining
runUntildefensive arms (Wave 7 a7 tick 6).runUntil'srunBatchchecksif (!this.interpreter)after asetTimeout(0)yield, callsfinishRunUntil(), and returns without flipping_stateoffrunning.Repro (characterization in
js-step-debugger.rununtil-leftovers.spec.ts):prepare("while (true) {}")thenrunUntil(() => false)so the first batch yields.interpreterbefore the queued batch fires.state()stays"running".Expected:
idle(orerrored) with a cleared interpreter, matchingstop(). Actual:running, so the toolbar can still show Pause/Step as if a session is live.Related: #1058 (
stop()from a native mid-step is overwritten toerrored).Resolved in spikersoft-angular PR #819 (merged to
master). runUntil no longer leaves state=running when the interpreter is dropped between batches. Closing.