Skip to content

Commit 48f2e09

Browse files
committed
[move][treesitter] Refactor and update Move treesitter implementation
1 parent 67116b9 commit 48f2e09

File tree

12 files changed

+56099
-67799
lines changed

12 files changed

+56099
-67799
lines changed

external-crates/move/tooling/tree-sitter/grammar.js

Lines changed: 936 additions & 1035 deletions
Large diffs are not rendered by default.

external-crates/move/tooling/tree-sitter/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"tree-sitter": "^0.21.0"
88
},
99
"peerDependenciesMeta": {
10-
"tree_sitter": {
10+
"tree-sitter": {
1111
"optional": true
1212
}
1313
},

external-crates/move/tooling/tree-sitter/queries/highlights.scm

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
(function_definition name: (function_identifier) @function)
2727
(macro_function_definition name: (function_identifier) @macro)
2828
(native_function_definition name: (function_identifier) @function)
29-
(usual_spec_function name: (function_identifier) @function)
3029
(function_parameter name: (variable_identifier) @variable.parameter)
3130

3231
;; Module definitions
@@ -40,7 +39,6 @@
4039
(call_expression (name_expression access: (module_access module: (module_identifier) @namespace.module.name)))
4140
(call_expression (name_expression access: (module_access member: (identifier) @function.call)))
4241

43-
4442
(label (identifier) @label)
4543

4644
;; Macro calls
@@ -53,8 +51,6 @@
5351
(byte_string_literal) @string.byte
5452
(address_literal) @number.address
5553

56-
;; Binders
57-
5854
;; Uses
5955
(use_member member: (identifier) @include.member)
6056
(use_module alias: (module_identifier) @namespace.module.name)
@@ -64,9 +60,6 @@
6460

6561
(function_identifier) @function.name
6662

67-
;; Friends
68-
; (friend_access local_module: (identifier) @namespace.module.name)
69-
7063
;; Structs
7164
(struct_definition name: (struct_identifier) @type.definition.struct)
7265
(ability) @type.ability
@@ -81,7 +74,6 @@
8174
(pack_expression (name_expression access: (module_access) @constructor.name))
8275

8376
;; Unpacks
84-
;; TODO: go into variants
8577
(bind_unpack (name_expression) @type.name)
8678
(module_access "$" (identifier) @macro.variable)
8779
"$" @macro.variable
@@ -91,35 +83,14 @@
9183
(abort_expression) @keyword
9284
(mut_ref) @keyword
9385

94-
;; Lambdas
95-
; (lambda_binding bind: (bind_var (variable_identifier) @variable.parameter))
96-
; (lambda_bindings (bind_var (variable_identifier) @variable.parameter))
97-
98-
9986
;; Operators
10087
(binary_operator) @operator
10188
(unary_op) @operator
10289
"=>" @operator
10390
"@" @operator
10491
"->" @operator
10592

106-
;; Specs
107-
(spec_block target: (identifier) @function.spec.target)
108-
(spec_pragma) @preproc.annotation.spec
109-
(spec_condition kind: (condition_kind) @condition.spec)
110-
(condition_properties) @preproc.spec.condition.properties
111-
112-
; (match_expression "match") @keyword
113-
114-
;; Spec keywords
115-
; "opaque" @keyword
116-
; "aborts_if" @keyword
117-
; "abstract" @keyword
118-
[
119-
"pragma"
120-
] @keyword
121-
122-
;; Source Language Keywords
93+
;; Keywords
12394
[
12495
"fun"
12596
"return"
@@ -146,6 +117,5 @@
146117
"break"
147118
"continue"
148119
"loop"
120+
"match"
149121
] @keyword
150-
151-
"match" @keyword
Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,13 @@
1-
; Function Scope
2-
; (function_definition
3-
; body: (block) @scope
4-
; parameters: (function_parameters (function_parameter name: (variable_identifier) @definition.var)))
1+
; Minimal scope tracking for Move.
52

3+
; Function Scope
64
(function_definition body: (block) @scope)
75

86
(function_parameter name: (variable_identifier) @definition.var)
97
(function_parameter name: (variable_identifier) @local.definition)
108

119
(identifier) @local.reference
1210

13-
14-
; Module and Struct Scope
11+
; Module Scope
1512
(module_definition
1613
(module_body) @scope)
17-
18-
; (struct_definition
19-
; (struct_def_fields) @scope)
20-
21-
; Spec Block Scope
22-
(spec_block
23-
body: (spec_body) @scope)
24-
25-
; Local Variable Declarations in Function Blocks
26-
; (let_statement
27-
; binds: (bind_list
28-
; (bind_var (variable_identifier) @definition.var)
29-
; (bind_unpack
30-
; (bind_field (field_identifier) @definition.var))))
31-
32-
; Local Variable Declarations in Spec Blocks
33-
; (spec_block
34-
; (spec_variable name: (identifier) @definition.var))
35-
36-
; Parameters in Spec Functions
37-
; (spec_function
38-
; parameters: (function_parameters (function_parameter name: (identifier) @definition.var)))
39-
;
40-
; ; Type Parameters
41-
; (type_parameters
42-
; (type_parameter name: (identifier) @definition.type)))
43-
;
44-
; ; Struct Fields
45-
; (struct_definition
46-
; (struct_def_fields
47-
; (field_annotation
48-
; field: (identifier) @definition.field)))
49-
;
50-
; ; Function and Module Identifiers
51-
; (function_definition name: (identifier) @definition.function)
52-
; (module_definition name: (identifier) @definition.module)
53-
;
Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,28 @@
11
#!/bin/bash
2+
set -euo pipefail
23

3-
SUI_FRAMEWORK_DIR="../../../../crates/sui-framework/packages/sui-framework/**/*.move"
4-
STDLIB_DIR="../../../../sui-framework/packages/move-stdlib/**/*.move"
4+
SUI_FRAMEWORK_DIR="../../../../crates/sui-framework/packages/**/*.move"
55

6-
tree-sitter generate --no-bindings
6+
tree-sitter generate
7+
8+
echo "=== Parsing test files ==="
79
tree-sitter parse -q -t tests/*.move
8-
tree-sitter parse -q -t tree-sitter $SUI_FRAMEWORK_DIR
10+
11+
echo "=== Parsing Sui framework files ==="
12+
tree-sitter parse -q -t $SUI_FRAMEWORK_DIR
13+
14+
echo "=== Checking node-types.json baseline ==="
15+
if [ -f tests/baseline-node-types.json ]; then
16+
if ! diff -q src/node-types.json tests/baseline-node-types.json > /dev/null 2>&1; then
17+
echo "WARNING: node-types.json differs from baseline!"
18+
diff src/node-types.json tests/baseline-node-types.json || true
19+
echo "If this is intentional, update the baseline: cp src/node-types.json tests/baseline-node-types.json"
20+
else
21+
echo "node-types.json matches baseline."
22+
fi
23+
else
24+
echo "No baseline found. Creating initial baseline."
25+
cp src/node-types.json tests/baseline-node-types.json
26+
fi
27+
28+
echo "=== All tests passed ==="

0 commit comments

Comments
 (0)