mirror of
https://github.com/colbymchenry/codegraph.git
synced 2026-10-26 04:19:33 +08:00
fix(swift): a call written after try! links what it calls on Windows (#2683)
The Windows kernels read the `!` of every `try!` as a logical not, so `try! Message2(data: d)` became a call of `! Message2` that never resolves, and a call through a receiver lost it: `try! Settings.Defaults.load()` was a bare `load`. The cause is the grammar's C, not the walker. tree-sitter-swift 0.7.3's external scanner steps aside for the `!` of `try!` through a 64-bit mask whose entry is built as `1UL << FAKE_TRY_BANG`, bit 32. `unsigned long` is 32 bits on Windows and MSVC folds the overflowing shift to 0 (warning C4293), so the scanner never stepped aside: `try` parsed alone, then a prefix `!` on the callee. macOS and Linux have 64-bit longs, and clang's wasm32 build folds the shift to bit 31 (`_directive_endif`, valid at every expression start), so the wasm and the other kernels have always read `try!` right. The kernel now compiles the crate tarball's src/ itself, from codegraph-kernel/grammars/swift, with upstream 0.7.4's one-line fix (`1ULL`), as it already does for the Kotlin, Lua, Scala and Dart grammars. The patch and its provenance are in docs/grammars/tree-sitter-swift.patch and .md. parser.c is unchanged, so the node-kind and field tables still match the wasm, which is untouched. TortureTry.swift pins calls after try!, try? and try on both engines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
22e9f7b337
commit
c58f0417c6
@@ -422,11 +422,13 @@ const VENDORED_WASM_LANGS: ReadonlySet<GrammarLanguage> = new Set([
|
||||
// R7b (Swift kernel port prep): tree-sitter-swift crate 0.7.3. Built from
|
||||
// the CRATE TARBALL's src/ (NOT a tag sha-match: alex-pinkus keeps
|
||||
// generated files off main and the 0.7.3-with-generated-files tag ships an
|
||||
// older ABI-14 generation; grammar.json rules are JSON-equal, and the crate
|
||||
// tarball is byte-for-byte what the kernel's cargo build compiles — table
|
||||
// identity by construction). Replaces the ^0.4.0 tree-sitter-wasms build
|
||||
// (ABI 13 → 15). NOT graph-neutral — delta is error-set membership only;
|
||||
// classified list in the swift checklist doc.
|
||||
// older ABI-14 generation; grammar.json rules are JSON-equal, and the
|
||||
// kernel compiles the same tarball's src/ (codegraph-kernel/grammars/swift)
|
||||
// — table identity by construction). Replaces the ^0.4.0 tree-sitter-wasms
|
||||
// build (ABI 13 → 15). NOT graph-neutral — delta is error-set membership
|
||||
// only; classified list in the swift checklist doc. The kernel's copy
|
||||
// carries docs/grammars/tree-sitter-swift.patch (`try!` on Windows); this
|
||||
// wasm doesn't need it — see that doc's .md.
|
||||
'swift',
|
||||
// R7b (Kotlin kernel port prep): fwcd tree-sitter-kotlin 0.3.8 (tag
|
||||
// e1a2d5a), parser.c/scanner.c sha-matched crate↔tag; behavior-IDENTICAL
|
||||
|
||||
Reference in New Issue
Block a user