Skip to content

Commit

Permalink
make wasm work for parse-libs
Browse files Browse the repository at this point in the history
  • Loading branch information
tek committed Mar 25, 2024
1 parent 07299fd commit 81cf360
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 12 deletions.
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
override = {fast, ...}: fast;
};

envs.dev.buildInputs = pkgs: [pkgs.tree-sitter];
envs.dev.buildInputs = pkgs: [pkgs.nodejs pkgs.tree-sitter pkgs.emscripten pkgs.python3];

outputs = let
inherit (config) pkgs;
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
"node-gyp": ">=7 <11"
},
"devDependencies": {
"tree-sitter-cli": "^0.20.6",
"web-tree-sitter": "^0.20.6"
"tree-sitter-cli": "^0.20.8",
"web-tree-sitter": "^0.20.8"
},
"scripts": {
"test": "tree-sitter test",
Expand Down
8 changes: 3 additions & 5 deletions test/parse-lib
Original file line number Diff line number Diff line change
Expand Up @@ -33,20 +33,18 @@ files_to_parse=$(comm -13 <(sort $failures_file) <(find $lib -name '*.hs' | sort
if [ "$mode" == "native" ]; then
# Ensure the scanner was recompiled
tree-sitter test -f 'just compile it' >/dev/null
runner='tree-sitter parse -q'
elif [ "$mode" == "wasm" ]; then
# Ensure tree-sitter-haskell.wasm was compiled
make node_modules/web-tree-sitter -s
make tree-sitter-haskell.wasm -s
runner='./test/tree-sitter-parse.js'
else
echo "Unsupported mode: $mode"
fi

start=$(date '+%s.%N')
if [ "$mode" == "native" ]; then
echo $files_to_parse | xargs -n 2000 tree-sitter parse -q
elif [ "$mode" == "wasm" ]; then
echo $files_to_parse | xargs -n 2000 ./script/tree-sitter-parse.js
fi
eval $runner $files_to_parse
end=$(date '+%s.%N')

skipped=$( cat $failures_file | wc -w )
Expand Down
8 changes: 4 additions & 4 deletions test/tree-sitter-parse.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#!/usr/bin/env node --trace-warnings --unhandled-rejections=strict
#!/usr/bin/env node

const fs = require('fs');
const Parser = require('web-tree-sitter');

if (process.argv.length < 3) {
console.log('Usage: script/tree-sitter-parse.js <haskell-file..>')
if (process.argv.length < 2) {
console.log('Usage: test/tree-sitter-parse.js <haskell-file..>')
process.exit(1)
}

Parser.init().then(() => {
Parser.Language.load('tree-sitter-haskell.wasm').then((Haskell) => {
const parser = new Parser;
parser.setLanguage(Haskell);
for (let i = 2; i < process.argv.length - 1; i++) {
for (let i = 1; i < process.argv.length; i++) {
const fileName = process.argv[i]
const sourceCode = fs.readFileSync(fileName, 'utf8')
const tree = parser.parse(sourceCode);
Expand Down

0 comments on commit 81cf360

Please sign in to comment.