Hacktoberfest 2026:維護者為十月標記出來的 issue,仍然開放、適合新手。 瀏覽 Hacktoberfest issue

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

未關閉
#575 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

維護者通常 1 天內回覆

@CaelmBleidd 已經在處理了。

開始於 2026年10月16日。

  • #578 來自 @CaelmBleidd —— 未關閉

評估

難度
4/5
預估耗時
3-5 天
新手友好度
15/100
Issue 類型
重構
描述清晰度
基本清楚
活躍度
停滯
技術堆疊
kotlin, typescript

研究方向

Start from the member-name comparisons the issue lists: virtual/static lookup, overload selection, field metadata and property-presence checks, which compare names as plain strings. The work depends on the JacoDB frontend fix (UnitTestBot/jacodb#448) and is already under way in linked PR #578, so check that PR before starting. Done means symbol-marked declarations stay separate from same-named string keys, unsupported symbol operations still report explicit unsupported outcomes, and the plain, literal-key and iterator Counter tests pass along with the unchanged Matrix and SegmentTree scenarios.

由索引模型根據 Issue 內容生成。

描述

Current delivery (2026-10-17)

The bounded implementation is published for review, not merged:

  • USVM #578 at d6c770ca5154cb55d2f3207374d5d0aa615d4fd8 pins the public immutable JacoDB snapshot 0fac32c8c5 and makes the current method/field consumers respect symbol-versus-string identity. It also preserves the actual string key when the frontend emits %call for a computed call.
  • Upstream UnitTestBot/jacodb#448 at 0fac32c8c511c6228c3d6897262dc0924635af44 is also open, not merged. Its optional wellKnownSymbol metadata and supported literal/numeric class keys are already consumed by the published USVM change.
  • Live CI is green at those exact heads: 7/7 checks for #578 and 8/8 for JacoDB #448. The source/native regressions cover ordinary Counter methods and distinct string/symbol identities. The unchanged SegmentTree constructor/query probe returns symbolic 3, matching native execution.

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.

主要語言
Kotlin
星號
33
分支
27
平均合併
4 天 1 小時
30 天內合併 PR
84

環境準備

這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

UnitTestBot/usvm 的其他 Issue

查看 UnitTestBot/usvm 的全部 Issue

相似的 Issue

更多 Kotlin Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。