Skip to content

Lower all array bindings through intrinsic iterators and preserve symbol identity - #435

Merged
CaelmBleidd merged 3 commits into
neofrom
caelmbleidd/iterator-symbol-provenance-20261013
Oct 13, 2026
Merged

CaelmBleidd merged 3 commits into
neofrom
caelmbleidd/iterator-symbol-provenance-20261013

Conversation

@CaelmBleidd

@CaelmBleidd CaelmBleidd commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Array destructuring without a rest element used direct indices, so strings were split into UTF-16 units instead of JavaScript iterator values. Route all array binding patterns through the iterator, preserve defaults and elisions, and close partially consumed iterators using the actual return method and receiver. Return results must be objects; exceptional completion retains the original throw.

Preserve optional ITERATOR symbol provenance in EtsInstanceCallExpr and JSON for intrinsic spread, destructuring and synchronous for-of. Ordinary user methods remain distinct and legacy calls omit the metadata.

Independent against neo. Validation on final 5f32dae: frontend build/typecheck and 63 focused tests passed, including ten native-vs-IR destructuring/IteratorClose cases and five symbol-provenance cases. The original Kotlin symbol roundtrip gate passed; 28 closure/iterator tests additionally passed after updating obsolete index-based expectations, and final full CI passed. No upstream merge is included.

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

  239 files  ±0    239 suites  ±0   16m 10s ⏱️ + 2m 23s
  836 tests +1    824 ✅ +1  12 💤 ±0  0 ❌ ±0 
2 106 runs  +1  2 056 ✅ +1  50 💤 ±0  0 ❌ ±0 

Results for commit 5f32dae. ± Comparison against base commit bcad76f.

♻️ This comment has been updated with latest results.

@CaelmBleidd CaelmBleidd changed the title Preserve intrinsic iterator symbol identity in EtsIR Lower all array bindings through intrinsic iterators and preserve symbol identity Oct 13, 2026
@CaelmBleidd
CaelmBleidd merged commit 55a0990 into neo Oct 13, 2026
7 checks passed
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