Skip to content

Commit 4a57b93

Browse files
beebnik-rev
authored andcommitted
chore(solidity): update to newest grammar and fix queries (helix-editor#12457)
1 parent 2730017 commit 4a57b93

File tree

4 files changed

+41
-53
lines changed

4 files changed

+41
-53
lines changed

languages.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1951,7 +1951,7 @@ language-servers = [ "solc" ]
19511951

19521952
[[grammar]]
19531953
name = "solidity"
1954-
source = { git = "https://github.com/JoranHonig/tree-sitter-solidity", rev = "08338dcee32603383fcef08f36321900bb7a354b" }
1954+
source = { git = "https://github.com/JoranHonig/tree-sitter-solidity", rev = "f7f5251a3f5b1d04f0799b3571b12918af177fc8" }
19551955

19561956
[[language]]
19571957
name = "gleam"

runtime/queries/solidity/highlights.scm

Lines changed: 32 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
(pragma_directive) @keyword.directive
33
(solidity_version_comparison_operator _ @keyword.directive)
44

5-
65
; Literals
76
; --------
8-
97
[
108
(string)
119
(hex_string_literal)
@@ -27,18 +25,17 @@
2725

2826
(comment) @comment
2927

30-
3128
; Definitions and references
3229
; -----------
33-
3430
(type_name) @type
3531

3632
[
3733
(primitive_type)
3834
(number_unit)
3935
] @type.builtin
4036

41-
(user_defined_type (identifier) @type)
37+
(user_defined_type (_) @type)
38+
(user_defined_type_definition name: (identifier) @type)
4239
(type_alias (identifier) @type)
4340

4441
; Color payable in payable address conversion as type and not as keyword
@@ -47,24 +44,15 @@
4744
(type_name "(" @punctuation.bracket "=>" @punctuation.delimiter ")" @punctuation.bracket)
4845

4946
; Definitions
50-
(struct_declaration
51-
name: (identifier) @type)
52-
(enum_declaration
53-
name: (identifier) @type)
54-
(contract_declaration
55-
name: (identifier) @type)
56-
(library_declaration
57-
name: (identifier) @type)
58-
(interface_declaration
59-
name: (identifier) @type)
60-
(event_definition
61-
name: (identifier) @type)
62-
63-
(function_definition
64-
name: (identifier) @function)
65-
66-
(modifier_definition
67-
name: (identifier) @function)
47+
(struct_declaration name: (identifier) @type)
48+
(enum_declaration name: (identifier) @type)
49+
(contract_declaration name: (identifier) @type)
50+
(library_declaration name: (identifier) @type)
51+
(interface_declaration name: (identifier) @type)
52+
(event_definition name: (identifier) @type)
53+
(error_declaration name: (identifier) @type)
54+
(function_definition name: (identifier) @function)
55+
(modifier_definition name: (identifier) @function)
6856
(yul_evm_builtin) @function.builtin
6957

7058
; Use constructor coloring for special functions
@@ -75,30 +63,37 @@
7563

7664
(struct_member name: (identifier) @variable.other.member)
7765
(enum_value) @constant
66+
; SCREAMING_SNAKE_CASE identifier are constants
67+
((identifier) @constant (#match? @constant "^[A-Z][A-Z_]+$"))
7868

7969
; Invocations
80-
(emit_statement . (identifier) @type)
81-
(revert_statement error: (identifier) @type)
82-
(modifier_invocation (identifier) @function)
70+
(emit_statement name: (expression (identifier) @type))
71+
(revert_statement error: (expression (identifier) @type))
72+
(modifier_invocation . (_) @function)
8373

84-
(call_expression . (member_expression property: (identifier) @function.method))
85-
(call_expression . (identifier) @function)
74+
(call_expression . (_(member_expression property: (_) @function.method)))
75+
(call_expression . (expression (identifier) @function))
8676

8777
; Function parameters
8878
(call_struct_argument name: (identifier) @field)
8979
(event_parameter name: (identifier) @variable.parameter)
9080
(parameter name: (identifier) @variable.parameter)
9181

9282
; Yul functions
93-
(yul_function_call function: (yul_identifier) @function)
94-
(yul_function_definition . (yul_identifier) @function (yul_identifier) @variable.parameter)
95-
83+
(yul_function_call function: (_) @function)
84+
(yul_function_definition
85+
("function" (yul_identifier) @function "(" (
86+
(yul_identifier) @variable.parameter ("," (yul_identifier) @variable.parameter)*
87+
)
88+
)
89+
)
9690

9791
; Structs and members
9892
(member_expression property: (identifier) @variable.other.member)
99-
(struct_expression type: ((identifier) @type .))
93+
(struct_expression type: ((expression (identifier)) @type .))
10094
(struct_field_assignment name: (identifier) @variable.other.member)
10195

96+
10297
; Tokens
10398
; -------
10499

@@ -113,17 +108,16 @@
113108
"struct"
114109
"enum"
115110
"event"
111+
"type"
116112
"assembly"
117113
"emit"
118-
119114
"public"
120115
"internal"
121116
"private"
122117
"external"
123118
"pure"
124119
"view"
125120
"payable"
126-
127121
"modifier"
128122
"var"
129123
"let"
@@ -137,6 +131,8 @@
137131
"storage"
138132
"calldata"
139133
"constant"
134+
"transient"
135+
(immutable)
140136
] @keyword.storage.modifier
141137

142138
[
@@ -175,7 +171,6 @@
175171
(event_parameter "indexed" @keyword)
176172

177173
; Punctuation
178-
179174
[
180175
"("
181176
")"
@@ -185,7 +180,6 @@
185180
"}"
186181
] @punctuation.bracket
187182

188-
189183
[
190184
"."
191185
","
@@ -194,14 +188,11 @@
194188
"=>"
195189
] @punctuation.delimiter
196190

197-
198191
; Operators
199-
200192
[
201193
"&&"
202194
"||"
203195
">>"
204-
">>>"
205196
"<<"
206197
"&"
207198
"^"
@@ -216,15 +207,12 @@
216207
"<="
217208
"=="
218209
"!="
219-
"!=="
220210
">="
221211
">"
222212
"!"
223213
"~"
224214
"-"
225215
"+"
226-
"delete"
227-
"new"
228216
"++"
229217
"--"
230218
"+="
@@ -244,10 +232,9 @@
244232
"new"
245233
] @keyword.operator
246234

247-
; TODO: move to top when order swapped
248235
; identifiers
249236
; -----------
250-
((identifier) @variable.builtin
251-
(#match? @variable.builtin "^(this|msg|block|tx)$"))
237+
((identifier) @variable.builtin (#any-of? @variable.builtin "this" "msg" "block" "tx"))
252238
(identifier) @variable
253239
(yul_identifier) @variable
240+
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
(function_definition) @local.scope
2+
(constructor_definition) @local.scope
23
(block_statement) @local.scope
34

45
(function_definition (parameter name: (identifier) @local.definition))
6+
(constructor_definition (parameter name: (identifier) @local.definition))
7+
(variable_declaration name: (identifier) @local.definition)
58

6-
; still have to support tuple assignments
7-
(assignment_expression left: (identifier) @local.definition)
8-
9-
(identifier) @local.reference
9+
(identifier) @local.reference

runtime/queries/solidity/textobjects.scm

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
((parameter) @parameter.inside . ","? @parameter.around) @parameter.around)
1818

1919
(return_type_definition
20-
((parameter) @parameter.inside . ","? @parameter.around) @parameter.around)
20+
((parameter) @entry.inside . ","? @entry.around) @entry.around)
2121

2222
(modifier_definition
2323
((parameter) @parameter.inside . ","? @parameter.around) @parameter.around)
@@ -29,13 +29,13 @@
2929
((error_parameter) @parameter.inside . ","? @parameter.around) @parameter.around)
3030

3131
(call_argument
32-
((call_struct_argument) @parameter.inside . ","? @parameter.around) @parameter.around)
32+
((call_struct_argument) @entry.inside . ","? @entry.around) @entry.around)
3333

3434
(call_expression
3535
((call_argument) @parameter.inside . ","? @parameter.around) @parameter.around)
3636

3737
(variable_declaration_tuple
38-
((variable_declaration) @parameter.inside . ","? @parameter.around) @parameter.around)
38+
((variable_declaration) @entry.inside . ","? @entry.around) @entry.around)
3939

4040
(emit_statement
4141
((call_argument) @parameter.inside . ","? @parameter.around) @parameter.around)
@@ -52,3 +52,4 @@
5252
(comment) @comment.inside
5353

5454
(comment)+ @comment.around
55+

0 commit comments

Comments
 (0)