Skip to content

[TS] Propagate failed value materialization through callers - #621

Open
CaelmBleidd wants to merge 3 commits into
caelmbleidd/calls-collection-prerequisitesfrom
caelmbleidd/ts-safe-value-materialization
Open

CaelmBleidd wants to merge 3 commits into
caelmbleidd/calls-collection-prerequisitesfrom
caelmbleidd/ts-safe-value-materialization

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Failed live fake-value materialization can currently keep writing heap/register values after its exactly-one-type assertion has stopped the path. Return a nullable value from live materialization and propagate that stop through array/field operations, residual calls and Promise storage. Keep initial-state construction explicit through mkInitialFakeValue; update Calls and PBT consumers together.

Validation: 33 focused tests in FakeExprUtilTest, ExprUtilConditionalValueTest, TsContextFactoryTest and TsMachineFailurePrefixTest passed. Calls and PBT Kotlin consumers compile. Tests run under the exclusive local build lock. Full integration CI is separate.

Stack: this PR targets caelmbleidd/calls-collection-prerequisites, a convergence branch replaying the already published fixes from #556, #557, #558, #559, #561, #564, #568, #570, #587, #589, #591, #600, #605 and #609 onto main e56cea501. The PR diff contains only the materialization change. After those prerequisites merge, rebase this own range onto current main; do not merge the convergence branch wholesale.

Promise argument semantics, witness diagnostics and collection models are published as separate descendants. The unsupported-global fixture now uses Reflect because Math already has a supported native model.

Fixture validation follow-up: reuse the existing deterministic tests from #582 (boxed registry identity with explicit branch domains) and #593 (untyped coercion through bounded numeric/boolean callers). Their original patches also occur in #578; integrate each once and drop duplicate commits when rebasing the stack. This changes test domains, not the experiment runtime or model coverage results.
The combined TS stack also passed the full usvm-ts suite: 1763 passed, 139 skipped, zero failures. This full-suite run preceded the final fixture-only #593 update; the bounded coercion suite was checked separately afterward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant