Skip to content

[TS] Integrate computed class members without mixing symbol and string keys #575

Open

Description

@CaelmBleidd

Current delivery (2026-10-17)

The bounded implementation is published for review, not merged:

This does not provide general Symbol storage or dispatch (#439), dynamic/shadowed computed keys, or complete class support. With #578 alone, the unchanged Matrix getter example exposed the mismatch recorded in #577. Published #595 instead makes that case explicitly unsupported; it does not execute the getter. Getter implementation remains #577.

The original bounded acceptance below is retained. The next delivery step for this issue is review/merge of the prepared dependency and consumer changes, rather than reimplementing their already-published code. No PR or issue was merged/closed by this status update.

Original report and acceptance (retained verbatim)

The two-phase PBT/USVM experiment (parent #345) needs the frontend fix in UnitTestBot/jacodb#448 (UnitTestBot/jacodb#447). That frontend retains literal computed class keys and a recognized intrinsic Symbol.iterator key, preserving symbol/string identity through optional wellKnownSymbol metadata in field and method signatures.

USVM currently compares member names as strings in virtual/static lookup, overload selection, field metadata and property-presence logic. Updating the dependency alone could conflate [Symbol.iterator] with the ordinary string "Symbol.iterator".

Bounded implementation:

  • Update to a publicly resolvable immutable JacoDB snapshot containing the frontend fix.
  • Keep ordinary string lookups separate from symbol-marked declarations across current consumers.
  • Preserve explicit unsupported outcomes for symbol reads/writes/initialization not represented by existing runtime storage; do not silently use ordinary string storage or drop initializer effects.
  • Prove ordinary methods on plain/literal-key/iterator Counter classes through source-level symbolic tests and native replay.
  • Check original frozen Matrix and SegmentTree ordinary scenarios, preserving any next unsupported outcomes and source hashes.

General Symbol runtime and arbitrary symbol dispatch remain in #439. Path selector/priority queue changes are outside this issue.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions