diff --git a/gitnexus/Dockerfile.test b/gitnexus/Dockerfile.test index 4ae2212af..0282129ff 100644 --- a/gitnexus/Dockerfile.test +++ b/gitnexus/Dockerfile.test @@ -3,6 +3,8 @@ WORKDIR /app RUN apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update && apt-get install -y python3 make g++ && rm -rf /var/lib/apt/lists/* COPY . . RUN npm ci --ignore-scripts \ + && npm rebuild tree-sitter-swift 2>&1 \ + && node -e "require('tree-sitter-swift')" \ && (npm rebuild 2>&1 || true) \ && cd node_modules/tree-sitter-kotlin && npx --yes node-gyp rebuild 2>&1 CMD ["npx", "vitest", "run", "test/integration", "--reporter=verbose"] diff --git a/gitnexus/src/core/ingestion/languages/swift.ts b/gitnexus/src/core/ingestion/languages/swift.ts index 80d988f29..7b74386a8 100644 --- a/gitnexus/src/core/ingestion/languages/swift.ts +++ b/gitnexus/src/core/ingestion/languages/swift.ts @@ -129,12 +129,14 @@ const swiftExtractFunctionName = ( }; const orderSwiftSameNameTypeCandidates = ({ + callSiteFilePath, candidates, }: { readonly typeName: string; readonly callSiteFilePath: string; readonly candidates: readonly SymbolDefinition[]; }): readonly SymbolDefinition[] | null => { + if (!callSiteFilePath.endsWith('.swift')) return null; if (candidates.length <= 1) return null; if (!candidates.every((c) => c.type === candidates[0].type)) return null; if (candidates[0].type !== 'Class' && candidates[0].type !== 'Struct') return null; diff --git a/gitnexus/vendor/tree-sitter-swift/README.md b/gitnexus/vendor/tree-sitter-swift/README.md index 5b54f4b61..8b368bf59 100644 --- a/gitnexus/vendor/tree-sitter-swift/README.md +++ b/gitnexus/vendor/tree-sitter-swift/README.md @@ -1,3 +1,15 @@ +## GitNexus vendor notice + +This directory is a GitNexus-managed vendored copy of the official +`tree-sitter-swift@0.7.1` npm runtime package, including its official native +prebuilds. GitNexus keeps the top-level `tree-sitter` dependency pinned to +`^0.21.1` until the broader parser runtime upgrade is handled separately. + +When updating this vendor package, replace it from an official +`tree-sitter-swift` npm release, keep the native `prebuilds/` artifacts, update +the `_vendoredBy` provenance fields in `package.json`, and verify the packed +GitNexus tarball can load `tree-sitter-swift`. + ![Parse rate badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/parse_rate) [![Crates.io badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/crates_io_version)](https://crates.io/crates/tree-sitter-swift) [![NPM badge](https://byob.yarr.is/alex-pinkus/tree-sitter-swift/npm_version)](https://www.npmjs.com/package/tree-sitter-swift) @@ -87,12 +99,12 @@ module. [see](https://github.com/tree-sitter/tree-sitter/blob/master/lib/binding 3. Boot tree-sitter wasm like this. ```js -const Parser = require("web-tree-sitter"); +const Parser = require('web-tree-sitter'); async function run() { //needs to happen first await Parser.init(); //wait for the load of swift - const Swift = await Parser.Language.load("./tree-sitter-swift.wasm"); + const Swift = await Parser.Language.load('./tree-sitter-swift.wasm'); const parser = new Parser(); parser.setLanguage(Swift);