Skip to content

typescript: func_start recall gaps — object-literal method shorthand & complex-generic overload signatures #2464

Description

@squid-protocol

Summary

The 2026-08-29 tri-comparison recall audit (tests/tools/recall_audit.py typescript) found 3
functions tree-sitter reports that GitGalaxy does not (ts func recall 99.9%). Two are real
GitGalaxy gaps:

1. Object-literal method shorthand — partial detection, async variant missed

language-crucible/data/typescript/vscode/async.ts implements the ES AsyncIterator protocol as
object literals:

private readonly _iterator: AsyncIterator<T, void, void> = {
    next: () => this._producerConsumer.consume(),
    return: () => { this._onReturn?.(); return Promise.resolve({ done: true, value: undefined }); },
    throw: async (e) => { this._finishError(e); return { done: true, value: undefined }; },
};

and a second one around line 2053 whose return: is async () => { ... }.

func_start matches each of these in isolation (next, return, return with async, throw)
— but the pipeline emits only one return for the first object (mis-lined to the next:
line) and nothing for the second object's return: async () => { (async.ts:2059).
tree-sitter finds all of them. return / throw are real method names here (the iterator
protocol), not statement keywords.

2. Bodyless overload signature with a generic type-parameter list containing => / nested <>

vscode/instantiationService.ts:117:

createInstance<Ctor extends new (...args: any[]) => unknown, R extends InstanceType<Ctor>>(ctor: Ctor, ...args: GetLeadingNonServiceArgs<ConstructorParameters<Ctor>>): R;

func_start matches the sibling overload (createInstance<T>(descriptor: SyncDescriptor0<T>): T;,
line 116) and the impl (line 118) but not this one — the <Ctor extends new (...args: any[]) => unknown, R extends InstanceType<Ctor>> type-parameter list (a => function type and a nested
<> inside <...>) isn't handled by the generic-args step-over.

Not a GitGalaxy gap (noted for the audit)

vscode/codeEditorWidget.tslet cursorStateComputer: ICursorStateComputer; ... cursorStateComputer = () => null; ... cursorStateComputer = () => endCursorState; — tree-sitter
counts each branch's = () => reassignment as a function (2); GitGalaxy counts the one variable
(1). Variable reassignment, not a second definition — tree-sitter over-count, left as a
tri-comparison note.

Found by

tri-comparison-ledger-sweep step 2.6 recall audit, 2026-08-29.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugUnintended behavior or logic failure in the enginecore-engineModifications to the central physics and parsing engine

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions