Skip to content

Commit 67fbf1c

Browse files
authored
Merge pull request #1546 from dodona-edu/fix/large-file-invalid-argument
Fix invalid argument error for large files since tree-sitter 0.21
2 parents ee652a0 + 7162223 commit 67fbf1c

File tree

3 files changed

+17
-6
lines changed

3 files changed

+17
-6
lines changed

.github/workflows/ci-cd.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
- name: Build 🔧
127127
run: |
128128
cd cli/
129-
npm run build --force
129+
npm run build -- --force
130130
131131
cli-lint:
132132
name: "CLI 💻️ - lint 📏"
@@ -203,7 +203,7 @@ jobs:
203203
run: |
204204
cd core/
205205
npm run build
206-
npm run test -v --serial
206+
npm run test -- -v --serial
207207
208208
core-lint:
209209
name: "Core ❤️ - lint 📏"
@@ -282,7 +282,7 @@ jobs:
282282
run: |
283283
cd lib/
284284
npm run build
285-
npm run test -v --serial
285+
npm run test -- -v --serial
286286
287287
parsers-build:
288288
name: "Parsers 👓 - build 🔧"
@@ -587,7 +587,7 @@ jobs:
587587
- name: Build CLI 🔧
588588
run: |
589589
cd cli/
590-
npm run build --force
590+
npm run build -- --force
591591
592592
- name: Build web 🔧
593593
run: |

lib/src/lib/tokenizer/codeTokenizer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export class CodeTokenizer extends Tokenizer {
2727
* @param text The text string to parse
2828
*/
2929
public tokenize(text: string): string {
30-
const tree = this.parser.parse(text);
30+
const tree = this.parser.parse(text, undefined, { bufferSize: Math.max(32 * 1024, text.length * 2) });
3131
return tree.rootNode.toString();
3232
}
3333

@@ -39,7 +39,7 @@ export class CodeTokenizer extends Tokenizer {
3939
* @param text The text string to parse
4040
*/
4141
public *generateTokens(text: string): IterableIterator<Token> {
42-
const tree = this.parser.parse(text);
42+
const tree = this.parser.parse(text, undefined, { bufferSize: Math.max(32 * 1024, text.length * 2) });
4343
yield* this.tokenizeNode(tree.rootNode);
4444
}
4545

lib/src/test/tokenizer.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,14 @@ test("should be able to use external tree-sitter parsers (tree-sitter-json)", as
7676
const { tokens } = tokenizer.tokenizeFile(file);
7777
t.truthy(tokens);
7878
});
79+
80+
test("should be able to parse larger files", async t => {
81+
const file = new File("long.js", "var test = 1;\n".repeat(10000));
82+
const language = await (new LanguagePicker().findLanguage("javascript"));
83+
84+
const tokenizer = await language.createTokenizer();
85+
t.truthy(tokenizer);
86+
87+
const { tokens } = tokenizer.tokenizeFile(file);
88+
t.truthy(tokens);
89+
});

0 commit comments

Comments
 (0)