Skip to content

[TS] Concatenate symbolic strings - #460

Merged
CaelmBleidd merged 2 commits into
mainfrom
caelmbleidd/ts-424-symbolic-concat
Oct 9, 2026
Merged

CaelmBleidd merged 2 commits into
mainfrom
caelmbleidd/ts-424-symbolic-concat

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

Closes #424.

Symbolic string concatenation copies UTF-16 code units between the same private backing arrays used by string inputs, equality, typed fields and witness extraction. It preserves operand evaluation order and supported concrete primitive conversions; results above maxArraySize produce explicit unsupported paths.

String-only unions inferred for expressions such as (value && "a") + "!" are accepted. The empty-input branch returns "!", and the nonempty branch returns "a!". A regression covers this union in either operand of +, checks both input branches and explicit unsupported outcomes, and replays generated witnesses in Node.js.

Based on main at a8c423a75025d8fea0dfba4144d3af9626df2581, after #456 merged. Current head: 9493596b599fbe4ce22cf2f3f4edd22f851b824a. The PR contains the concatenation commit and its string-union fix, with three changed files.

Local validation on this head with the published pinned JacoDB dependency, without a local substitution: all 5 concatenation tests passed with zero skips/failures/errors, including Node.js replay. The new source-level regression failed on the previous head ae79f17adb7407aeee5a48b052eaddd24a5b613a because the empty-input property was missing, then passed with the fix. Detekt main/test passed with zero code smells; git diff --check passed. The broader 32-test string validation belongs to the previous rebased head ae79f17ad. Local Java 23 and Node.js 26 were used; fresh GitHub CI on the current head is a separate gate.

Symbolic Number-to-string conversion, object ToPrimitive, and genuinely unbacked string references remain unsupported. No merge performed.

@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-424-symbolic-concat branch from 137c2bf to 6709ce3 Compare October 2, 2026 22:12
@CaelmBleidd
CaelmBleidd changed the base branch from caelmbleidd/ts-421-symbolic-string to caelmbleidd/ts-422-string-value-equality October 2, 2026 22:13
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-424-symbolic-concat branch from 6709ce3 to ba5bfb6 Compare October 2, 2026 23:04
@CaelmBleidd
CaelmBleidd changed the base branch from caelmbleidd/ts-422-string-value-equality to caelmbleidd/ts-423-string-truthiness October 2, 2026 23:05
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-423-string-truthiness branch from 2c08f04 to 9d511c1 Compare October 3, 2026 05:26
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-424-symbolic-concat branch 4 times, most recently from 9af3ed8 to 5760fe8 Compare October 3, 2026 06:30
@CaelmBleidd
CaelmBleidd marked this pull request as ready for review October 3, 2026 06:43
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-423-string-truthiness branch from 7fe2676 to f2a22c3 Compare October 5, 2026 13:09
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-424-symbolic-concat branch from 42bf75a to 5df0eb1 Compare October 7, 2026 21:13
Base automatically changed from caelmbleidd/ts-423-string-truthiness to main October 9, 2026 10:18
@CaelmBleidd
CaelmBleidd force-pushed the caelmbleidd/ts-424-symbolic-concat branch from 5df0eb1 to ae79f17 Compare October 9, 2026 10:36
@CaelmBleidd
CaelmBleidd merged commit 70a88e3 into main Oct 9, 2026
7 checks passed
@CaelmBleidd
CaelmBleidd deleted the caelmbleidd/ts-424-symbolic-concat branch October 9, 2026 12:29
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.

[TS] Concatenate symbolic strings

2 participants