Skip to content

release v0.63.24: TS member references carry positions; recursion is an edit site - #41

Merged
tabladrum merged 2 commits into
mainfrom
release/v0.63.24
Oct 17, 2026
Merged

tabladrum merged 2 commits into
mainfrom
release/v0.63.24

Conversation

@tabladrum

Copy link
Copy Markdown
Contributor

Fixes the false "closed" answer on hono Router.match found in bench29: the TypeScript checker already resolved Router<T>['match'], this.match = match, a member's own this.match = ... and an object literal's match:, but its member edges carried no line:col and self-references were dropped, so no edit site listed them.

  • tsc member references carry the member name's position; self-references are kept.
  • Direct TS recursion (this.get(p) inside get) is a positioned self call edge.
  • A column-less parser guess on a line the compiler resolved elsewhere is superseded (zod result1.get is Map.get).
  • Member impact decides compiler verdicts per line when edges carry positions.
  • Resolver v42 (existing indexes re-resolve).

TS wide tasks vs gold edit lines (with prism's overload-line change): Router.match 39 -> 43/43, $ZodRegistry.get 42 -> 43/43 (2 false sites gone), SetHeadersOptions.append 9 false sites gone, H3Route.handler 5 -> 14/16, EventStream.push 11 -> 15/16. Remaining 3 misses: inferred toMatchObject({handler}) literals and an .mjs example outside tsconfig.

Gate: go test green (TS tests run with typescript installed); 21 oracles within baseline; ci_invariants held; fuzz 15 repos 0 crashes (commons-lang 2 diffs = known javac broken-file limit); replay 62/64 identical, 2 intended.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KXa6Cv1ZUXcdMqXcJfQFhX

tabladrum and others added 2 commits October 16, 2026 20:22
…re edit sites

hono Router.match (bench29) answered "closed" but missed Router<T>['match'],
`this.match = match`, `this.match = router.match.bind(router)` and an object
literal's `match:`. The checker resolved all of them; its member edges had no
line:col, and a member's reference to itself was dropped.

- tsc member references (property reads/writes, object-literal keys,
  T['member']) carry the name's position; self-references are kept.
- A direct recursive call becomes a positioned self call edge
  (zod $ZodRegistry.get's this.get(p)).
- A column-less parser guess on a line the compiler resolved elsewhere is
  superseded (zod result1.get(...) is Map.get, not $ZodRegistry.get).
- Member impact decides compiler verdicts per line when edges carry
  positions (hono headers.append(...) next to options?.append; h3 test
  literals of several handler-declaring types in one <top-level>).

TS wide tasks vs gold: Router.match 39->43/43, $ZodRegistry.get 42->43/43
(2 false sites gone), SetHeadersOptions.append 9 false sites gone,
H3Route.handler 5->14/16, EventStream.push 11->15/16 (with prism overload lines).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KXa6Cv1ZUXcdMqXcJfQFhX
@tabladrum
tabladrum merged commit 229e19c into main Oct 17, 2026
12 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