Skip to content

Commit 7a29d06

Browse files
authored
Support class static blocks (#235)
* Support class static blocks * Use statement_block for class_static_block
1 parent 1b6998e commit 7a29d06

File tree

5 files changed

+24099
-23958
lines changed

5 files changed

+24099
-23958
lines changed

grammar.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,7 @@ module.exports = grammar({
11031103
repeat(choice(
11041104
seq(field('member', $.method_definition), optional(';')),
11051105
seq(field('member', $.field_definition), $._semicolon),
1106+
field('member', $.class_static_block),
11061107
field('template', $.glimmer_template)
11071108
)),
11081109
'}'
@@ -1124,6 +1125,11 @@ module.exports = grammar({
11241125
')'
11251126
),
11261127

1128+
class_static_block: $ => seq(
1129+
'static',
1130+
field('body', $.statement_block)
1131+
),
1132+
11271133
// This negative dynamic precedence ensures that during error recovery,
11281134
// unfinished constructs are generally treated as literal expressions,
11291135
// not patterns.

src/grammar.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5973,6 +5973,14 @@
59735973
}
59745974
]
59755975
},
5976+
{
5977+
"type": "FIELD",
5978+
"name": "member",
5979+
"content": {
5980+
"type": "SYMBOL",
5981+
"name": "class_static_block"
5982+
}
5983+
},
59765984
{
59775985
"type": "FIELD",
59785986
"name": "template",
@@ -6101,6 +6109,23 @@
61016109
}
61026110
]
61036111
},
6112+
"class_static_block": {
6113+
"type": "SEQ",
6114+
"members": [
6115+
{
6116+
"type": "STRING",
6117+
"value": "static"
6118+
},
6119+
{
6120+
"type": "FIELD",
6121+
"name": "body",
6122+
"content": {
6123+
"type": "SYMBOL",
6124+
"name": "statement_block"
6125+
}
6126+
}
6127+
]
6128+
},
61046129
"pattern": {
61056130
"type": "PREC_DYNAMIC",
61066131
"value": -1,

src/node-types.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,10 @@
873873
"multiple": true,
874874
"required": false,
875875
"types": [
876+
{
877+
"type": "class_static_block",
878+
"named": true
879+
},
876880
{
877881
"type": "field_definition",
878882
"named": true
@@ -956,6 +960,22 @@
956960
]
957961
}
958962
},
963+
{
964+
"type": "class_static_block",
965+
"named": true,
966+
"fields": {
967+
"body": {
968+
"multiple": false,
969+
"required": true,
970+
"types": [
971+
{
972+
"type": "statement_block",
973+
"named": true
974+
}
975+
]
976+
}
977+
}
978+
},
959979
{
960980
"type": "computed_property_name",
961981
"named": true,

0 commit comments

Comments
 (0)