Crash fixes for three tsserver-killing Go panics, plus the gates that close the bug class.
Fixes
- Go panic on cloned tuple references (#69, #70) —
Type.ThisTypegated onobjectFlags, but flags travel with clones while the data shape doesn't: a cloned tuple reference carriesObjectFlags.Tuplewith*TypeReferencedata, soAsInterfaceType().thisTypenil-deref'd the process. Gates on the data shape now. - Go panic on symbol-less type declarations (#71) —
tryGetDeclaredTypeOfSymbolnil-deref'd on declarations with no symbol; returns the error type (stock behavior). - Same-class sweep — the symbol walker's interface visit and the override-status accessor carried the same shape assumption; both guard on the actual data shape now.
Gates closing the bug class
check:go-as-guards— static: everyType.As*()chained deref and unguarded nil-family assignment in the tsgo patches/overlay is guarded or carries a verified inlineasguard:exemptreason (16 sites, each checked against the constructors).triage-checker-fullwalk— dynamic: the checker-API stock differential walks every corpus node with a 14-field lazy-accessor closure per type (the reads that fire the Go casts), one tnb child per corpus file so a panic is collected per file instead of hiding the rest, and a coverage gate so no RPC method ships unwalked.- Shape census — the corpus provably produces every structural
TypeFlags/ObjectFlagsbit on both engines; cast outcomes are shape-pure, so every (RPC method × data shape) pair is exercised per CI run.
Full Changelog: v6.0.3-bridge.15.tsgo.7.0.2...v6.0.3-bridge.16.tsgo.7.0.2