Skip to content

Commit e205ec8

Browse files
authored
Merge pull request #387 from eed3si9n/wip/tree-sitter-bump-0.21.0
Update tree-sitter to 0.21.0
2 parents 24fd647 + 4c7275c commit e205ec8

File tree

12 files changed

+145
-71
lines changed

12 files changed

+145
-71
lines changed

.editorconfig

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
9+
[*.{json,toml,yml,gyp}]
10+
indent_style = space
11+
indent_size = 2
12+
13+
[*.js]
14+
indent_style = space
15+
indent_size = 2
16+
17+
[*.rs]
18+
indent_style = space
19+
indent_size = 4
20+
21+
[*.{c,cc,h}]
22+
indent_style = space
23+
indent_size = 4
24+
25+
[*.{py,pyi}]
26+
indent_style = space
27+
indent_size = 4
28+
29+
[*.swift]
30+
indent_style = space
31+
indent_size = 4
32+
33+
[*.go]
34+
indent_style = tab
35+
indent_size = 8
36+
37+
[Makefile]
38+
indent_style = tab
39+
indent_size = 8

.github/workflows/sync.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ jobs:
3131
id: verify-changed-files
3232
with:
3333
files: |
34+
bindings/c/tree-sitter-scala.h
35+
bindings/c/tree-sitter-scala.pc.in
3436
grammar.js
3537
src/grammar.json
3638
src/node-types.json
3739
src/parser.c
40+
src/tree_sitter/alloc.h
41+
src/tree_sitter/array.h
3842
src/tree_sitter/parser.h
3943
4044
- name: Commit changes if necessary

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
[package]
22
name = "tree-sitter-scala"
33
description = "scala grammar for the tree-sitter parsing library"
4-
version = "0.20.0"
4+
version = "0.21.0"
55
keywords = ["incremental", "parsing", "scala"]
66
categories = ["parsing", "text-editors"]
77
repository = "https://github.com/tree-sitter/tree-sitter-scala"
8-
edition = "2018"
8+
edition = "2021"
99
license = "MIT"
1010

1111
build = "bindings/rust/build.rs"
@@ -20,7 +20,7 @@ include = [
2020
path = "bindings/rust/lib.rs"
2121

2222
[dependencies]
23-
tree-sitter = "0.20.7"
23+
tree-sitter = "0.21.0"
2424

2525
[build-dependencies]
2626
cc = "1.0"

binding.gyp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@
22
"targets": [
33
{
44
"target_name": "tree_sitter_scala_binding",
5+
"dependencies": [
6+
"<!(node -p \"require('node-addon-api').targets\"):node_addon_api_except",
7+
],
58
"include_dirs": [
6-
"<!(node -e \"require('nan')\")",
7-
"src"
9+
"src",
810
],
911
"sources": [
10-
"src/parser.c",
1112
"bindings/node/binding.cc",
12-
"src/scanner.c"
13+
"src/parser.c",
14+
"src/scanner.c",
1315
],
1416
"cflags_c": [
15-
"-std=c99",
16-
]
17+
"-std=c11",
18+
],
1719
}
1820
]
1921
}

bindings/node/binding.cc

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
1-
#include "tree_sitter/parser.h"
2-
#include <node.h>
3-
#include "nan.h"
1+
#include <napi.h>
42

5-
using namespace v8;
3+
typedef struct TSLanguage TSLanguage;
64

7-
extern "C" TSLanguage * tree_sitter_scala();
5+
extern "C" TSLanguage *tree_sitter_scala();
86

9-
namespace {
7+
// "tree-sitter", "language" hashed with BLAKE2
8+
const napi_type_tag LANGUAGE_TYPE_TAG = {
9+
0x8AF2E5212AD58ABF, 0xD5006CAD83ABBA16
10+
};
1011

11-
NAN_METHOD(New) {}
12-
13-
void Init(Local<Object> exports, Local<Object> module) {
14-
Local<FunctionTemplate> tpl = Nan::New<FunctionTemplate>(New);
15-
tpl->SetClassName(Nan::New("Language").ToLocalChecked());
16-
tpl->InstanceTemplate()->SetInternalFieldCount(1);
17-
18-
Local<Function> constructor = Nan::GetFunction(tpl).ToLocalChecked();
19-
Local<Object> instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked();
20-
Nan::SetInternalFieldPointer(instance, 0, tree_sitter_scala());
21-
22-
Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("scala").ToLocalChecked());
23-
Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance);
12+
Napi::Object Init(Napi::Env env, Napi::Object exports) {
13+
exports["name"] = Napi::String::New(env, "scala");
14+
auto language = Napi::External<TSLanguage>::New(env, tree_sitter_scala());
15+
language.TypeTag(&LANGUAGE_TYPE_TAG);
16+
exports["language"] = language;
17+
return exports;
2418
}
2519

26-
NODE_MODULE(tree_sitter_scala_binding, Init)
27-
28-
} // namespace
20+
NODE_API_MODULE(tree_sitter_scala_binding, Init)

bindings/node/index.d.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
type BaseNode = {
2+
type: string;
3+
named: boolean;
4+
};
5+
6+
type ChildNode = {
7+
multiple: boolean;
8+
required: boolean;
9+
types: BaseNode[];
10+
};
11+
12+
type NodeInfo =
13+
| (BaseNode & {
14+
subtypes: BaseNode[];
15+
})
16+
| (BaseNode & {
17+
fields: { [name: string]: ChildNode };
18+
children: ChildNode[];
19+
});
20+
21+
type Language = {
22+
name: string;
23+
language: unknown;
24+
nodeTypeInfo: NodeInfo[];
25+
};
26+
27+
declare const language: Language;
28+
export = language;

bindings/node/index.js

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
1-
try {
2-
module.exports = require("../../build/Release/tree_sitter_scala_binding");
3-
} catch (error1) {
4-
if (error1.code !== 'MODULE_NOT_FOUND') {
5-
throw error1;
6-
}
7-
try {
8-
module.exports = require("../../build/Debug/tree_sitter_scala_binding");
9-
} catch (error2) {
10-
if (error2.code !== 'MODULE_NOT_FOUND') {
11-
throw error2;
12-
}
13-
throw error1
14-
}
15-
}
1+
const root = require("path").join(__dirname, "..", "..");
2+
3+
module.exports = require("node-gyp-build")(root);
164

175
try {
186
module.exports.nodeTypeInfo = require("../../src/node-types.json");

bindings/rust/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//! ```
77
//! let code = "";
88
//! let mut parser = tree_sitter::Parser::new();
9-
//! parser.set_language(tree_sitter_scala::language()).expect("Error loading scala grammar");
9+
//! parser.set_language(&tree_sitter_scala::language()).expect("Error loading scala grammar");
1010
//! let tree = parser.parse(code, None).unwrap();
1111
//! ```
1212
//!
@@ -46,7 +46,7 @@ mod tests {
4646
fn test_can_load_grammar() {
4747
let mut parser = tree_sitter::Parser::new();
4848
parser
49-
.set_language(super::language())
49+
.set_language(&super::language())
5050
.expect("Error loading scala language");
5151
}
5252
}

package.json

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,44 @@
33
"version": "0.20.0",
44
"description": "Scala grammar for tree-sitter",
55
"main": "bindings/node",
6+
"types": "bindings/node",
67
"keywords": [
78
"parser",
89
"scala"
910
],
11+
"files": [
12+
"grammar.js",
13+
"binding.gyp",
14+
"prebuilds/**",
15+
"bindings/node/*",
16+
"queries/*",
17+
"src/**"
18+
],
1019
"author": "Max Brunsfeld",
1120
"license": "MIT",
1221
"dependencies": {
13-
"nan": "^2.14.1"
22+
"node-addon-api": "^7.1.0",
23+
"node-gyp-build": "^4.8.0"
24+
},
25+
"peerDependencies": {
26+
"tree-sitter": "0.21.0"
27+
},
28+
"peerDependenciesMeta": {
29+
"tree_sitter": {
30+
"optional": true
31+
}
1432
},
1533
"devDependencies": {
16-
"tree-sitter-cli": "0.20.7",
17-
"prettier": "3.0.0-alpha.6"
34+
"tree-sitter-cli": "0.21.0",
35+
"prettier": "3.0.0-alpha.6",
36+
"prebuildify": "^6.0.0"
1837
},
1938
"scripts": {
2039
"build": "tree-sitter generate && node-gyp build",
2140
"test": "tree-sitter test && tree-sitter parse examples/*.scala --quiet --time",
22-
"format": "prettier --write --ignore-unknown grammar.js"
41+
"format": "prettier --write --ignore-unknown grammar.js",
42+
"install": "node-gyp-build",
43+
"prebuildify": "prebuildify --napi --strip"
2344
},
2445
"tree-sitter": [
2546
{

queries/scala/highlights.scm

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
; CREDITS @stumash ([email protected])
22

3+
(field_expression field: (identifier) @property)
4+
(field_expression value: (identifier) @type
5+
(#match? @type "^[A-Z]"))
6+
7+
(type_identifier) @type
8+
39
(class_definition
410
name: (identifier) @type)
511

@@ -20,7 +26,7 @@
2026

2127
;; variables
2228

23-
(class_parameter
29+
(class_parameter
2430
name: (identifier) @parameter)
2531

2632
(self_type (identifier) @parameter)
@@ -33,8 +39,6 @@
3339
(type_definition
3440
name: (type_identifier) @type.definition)
3541

36-
(type_identifier) @type
37-
3842
;; val/var definitions/declarations
3943

4044
(val_definition
@@ -49,14 +53,6 @@
4953
(var_declaration
5054
name: (identifier) @variable)
5155

52-
; method definition
53-
54-
(function_declaration
55-
name: (identifier) @method)
56-
57-
(function_definition
58-
name: (identifier) @method)
59-
6056
; imports/exports
6157

6258
(import_declaration
@@ -110,11 +106,15 @@
110106
(binding
111107
name: (identifier) @parameter)
112108

113-
; expressions
109+
; method definition
114110

115-
(field_expression field: (identifier) @property)
116-
(field_expression value: (identifier) @type
117-
(#match? @type "^[A-Z]"))
111+
(function_declaration
112+
name: (identifier) @method)
113+
114+
(function_definition
115+
name: (identifier) @method)
116+
117+
; expressions
118118

119119
(infix_expression operator: (identifier) @operator)
120120
(infix_expression operator: (operator_identifier) @operator)
@@ -235,8 +235,8 @@
235235

236236
"return" @keyword.return
237237

238-
(comment) @comment @spell
239-
(block_comment) @comment @spell
238+
(comment) @spell @comment
239+
(block_comment) @spell @comment
240240

241241
;; `case` is a conditional keyword in case_block
242242

script/smoke_test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ run_tree_sitter () {
3535
echo "Report written to $report_file"
3636
fi
3737

38-
actual=$(echo "$out" | grep 'success percentage:' | rev | cut -d' ' -f1 | rev | sed 's/%//g' )
38+
actual=$(echo "$out" | grep 'success percentage:' | rev | cut -d' ' -f5 | rev | sed 's/;//g' | sed 's/%//g' )
3939
echo "$actual"
4040
if (( $(echo "$actual >= $expected" |bc -l) )); then
4141
# See https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error

test/highlight/scala3.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ object A:
117117
// ^type
118118

119119
::(123)
120-
//^function.call
120+
//^operator
121121
// ^number
122122

123123
object bla:

0 commit comments

Comments
 (0)