Repository navigation
Preserve runtime types and bounded fresh-string fallback semantics - #394
Merged
Merged
Conversation
This was referenced Sep 30, 2026
CaelmBleidd
force-pushed
the
caelmbleidd/iccq-runtime-limitations
branch
from
September 30, 2026 21:09
ee10452 to
ee6b258
Compare
CaelmBleidd
changed the base branch from
caelmbleidd/stdlib-source-models
to
caelmbleidd/stdlib-gap-models
September 30, 2026 21:09
CaelmBleidd
force-pushed
the
caelmbleidd/iccq-runtime-limitations
branch
from
September 30, 2026 21:16
ee6b258 to
abbee67
Compare
This was referenced Oct 1, 2026
CaelmBleidd
force-pushed
the
caelmbleidd/stdlib-gap-models
branch
from
October 13, 2026 00:05
e63ae37 to
c75976b
Compare
CaelmBleidd
force-pushed
the
caelmbleidd/iccq-runtime-limitations
branch
from
October 13, 2026 01:54
3598f5a to
93ee014
Compare
CaelmBleidd
changed the base branch from
caelmbleidd/stdlib-gap-models
to
main
October 13, 2026 01:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unknown-call fallback lost finite return alternatives and sometimes treated ordinary object fields as builtin storage. Preserve finite literal return kinds, null/undefined and intersections; resolve inherited fields and ordinary object.length using the actual type contract. Fresh string mocks expose bounded UTF-16 backing rather than erasing strings to an unconstrained address. Synthetic EtsFakeType wrappers remain internal storage metadata and are rejected in type constraints before subtype shortcuts.
JacoDB is pinned to merged neo revision
7596ae5834, which includes JacoDB #434. Its frontend fix preserves explicitly declared null/undefined alternatives in call return types when TypeScript strictNullChecks is disabled.Review: finite-union fallback in TsMock/TsExprResolver; structural/runtime field selection; the fake-type constraint invariant; fresh string bounds and source regressions; emitted runtime limitations. Open unions keep generic fallback and bounded-string capacity remains an explicit limit.
Local validation for
f4be53969with the published JacoDB artifact and its bundled TypeScript frontend: 65 tests passed, with 0 failures and 4 existing disabled tests skipped across type-system contracts, fresh-string returns, property presence, field access, typeof and truthiness/replay. The finite-union source assertion retains all five return alternatives, including null and undefined. The new invariant test fails on the previous implementation because no IllegalArgumentException is thrown, and passes with the restored require. Production/test compilation, Detekt main/test (0 code smells) andgit diff --checkpassed.