Skip to content

Commit 3bce847

Browse files
Bump web-tree-sitter from 0.20.8 to 0.26.3 (#189)
Bumps [web-tree-sitter](https://github.com/tree-sitter/tree-sitter/tree/HEAD/lib/binding_web) from 0.20.8 to 0.26.3. To fix web-tree-sitter 0.26.3 API compatibility issues: - Add @types/emscripten for EmscriptenModule type definition - Update import from default to named exports (Language, Parser) - Change Language.load() from Parser.Language.load() to match new API - Add null checks for parser.parse() return value (now returns Tree | null) - Add WebWorker lib to tsconfig for WebAssembly types - Update tests to handle nullable tree values
1 parent eab5617 commit 3bce847

File tree

5 files changed

+29
-8
lines changed

5 files changed

+29
-8
lines changed

package-lock.json

Lines changed: 12 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
"test": "node ./out/test/runTest.js"
9090
},
9191
"devDependencies": {
92+
"@types/emscripten": "^1.41.5",
9293
"@types/glob": "^8.1.0",
9394
"@types/minimatch": "^5.1.2",
9495
"@types/mocha": "^9.1.1",
@@ -120,6 +121,6 @@
120121
"esbuild": "0.27.2",
121122
"readline": "^1.3.0",
122123
"toml": "^3.0.0",
123-
"web-tree-sitter": "^0.20.8"
124+
"web-tree-sitter": "^0.26.3"
124125
}
125126
}

src/test/suite/sourceCodeParser.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ suite('Test source code parsing', () => {
3434
test('Test if all kani harnesses are detected', async () => {
3535
const parser = await loadParser();
3636
const tree = parser.parse(kaniProofs);
37+
assert.ok(tree, 'Parser should return a tree');
3738
assert.deepStrictEqual(
3839
SourceCodeParser.findHarnesses(tree.rootNode.namedChildren),
3940
findHarnessesResultKani,
@@ -43,6 +44,7 @@ suite('Test source code parsing', () => {
4344
test('Test if all Bolero harnesses are detected', async () => {
4445
const parser = await loadParser();
4546
const tree = parser.parse(boleroProofs);
47+
assert.ok(tree, 'Parser should return a tree');
4648
assert.deepStrictEqual(
4749
SourceCodeParser.searchParseTreeForFunctions(tree.rootNode),
4850
findHarnessesResultBolero,

src/ui/sourceCodeParser.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as assert from 'assert';
44
import path from 'path';
55

66
import * as vscode from 'vscode';
7-
import Parser from 'web-tree-sitter';
7+
import { Language, Parser } from 'web-tree-sitter';
88

99
import { countOccurrences, getConcatenatedModuleName } from '../utils';
1010
import { HarnessMetadata } from './sourceMap';
@@ -13,7 +13,7 @@ import { HarnessMetadata } from './sourceMap';
1313
export async function loadParser(): Promise<Parser> {
1414
await Parser.init();
1515
const parser = new Parser();
16-
const lang = await Parser.Language.load(path.join(__dirname, '../..', 'tree-sitter-rust.wasm'));
16+
const lang = await Language.load(path.join(__dirname, '../..', 'tree-sitter-rust.wasm'));
1717
parser.setLanguage(lang);
1818
return parser;
1919
}
@@ -28,13 +28,19 @@ export namespace SourceCodeParser {
2828
export const checkTextForProofs = async (content: string): Promise<boolean> => {
2929
const parser = await loadParser();
3030
const tree = parser.parse(content);
31+
if (!tree) {
32+
return false;
33+
}
3134
return checkforKani(tree.rootNode);
3235
};
3336

3437
// Use the tree sitter to get attributes
3538
export async function getAttributeFromRustFile(file: string): Promise<HarnessMetadata[]> {
3639
const parser = await loadParser();
3740
const tree = parser.parse(file);
41+
if (!tree) {
42+
return [];
43+
}
3844
const harnesses = searchParseTreeForFunctions(tree.rootNode);
3945
const harnessesMapped = addModuleToFunction(tree.rootNode, harnesses);
4046
const sortedHarnessByline = [...harnessesMapped].sort(
@@ -178,6 +184,9 @@ export namespace SourceCodeParser {
178184
export async function extractKaniTestMetadata(text: string): Promise<any[]> {
179185
const parser = await loadParser();
180186
const tree = parser.parse(text);
187+
if (!tree) {
188+
return [];
189+
}
181190
const rootNode = tree.rootNode;
182191

183192
// Find the attribute by searching for its text

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"target": "ES2020",
55
"outDir": "out",
66
"lib": [
7-
"ES2020"
7+
"ES2020",
8+
"WebWorker"
89
],
910
"sourceMap": true,
1011
"rootDir": "src",

0 commit comments

Comments
 (0)