Skip to content

Commit 9dc0ec1

Browse files
committed
Support class static blocks
1 parent cefdcea commit 9dc0ec1

File tree

5 files changed

+41559
-39513
lines changed

5 files changed

+41559
-39513
lines changed

grammar.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,7 @@ module.exports = grammar({
10841084
repeat(choice(
10851085
seq(field('member', $.method_definition), optional(';')),
10861086
seq(field('member', $.field_definition), $._semicolon),
1087+
field('member', $.class_static_block),
10871088
field('template', $.glimmer_template)
10881089
)),
10891090
'}'
@@ -1105,6 +1106,13 @@ module.exports = grammar({
11051106
')'
11061107
),
11071108

1109+
class_static_block: $ => seq(
1110+
'static',
1111+
'{',
1112+
repeat($.statement),
1113+
'}',
1114+
),
1115+
11081116
// This negative dynamic precedence ensures that during error recovery,
11091117
// unfinished constructs are generally treated as literal expressions,
11101118
// not patterns.

src/grammar.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5957,6 +5957,14 @@
59575957
}
59585958
]
59595959
},
5960+
{
5961+
"type": "FIELD",
5962+
"name": "member",
5963+
"content": {
5964+
"type": "SYMBOL",
5965+
"name": "class_static_block"
5966+
}
5967+
},
59605968
{
59615969
"type": "FIELD",
59625970
"name": "template",
@@ -6085,6 +6093,30 @@
60856093
}
60866094
]
60876095
},
6096+
"class_static_block": {
6097+
"type": "SEQ",
6098+
"members": [
6099+
{
6100+
"type": "STRING",
6101+
"value": "static"
6102+
},
6103+
{
6104+
"type": "STRING",
6105+
"value": "{"
6106+
},
6107+
{
6108+
"type": "REPEAT",
6109+
"content": {
6110+
"type": "SYMBOL",
6111+
"name": "statement"
6112+
}
6113+
},
6114+
{
6115+
"type": "STRING",
6116+
"value": "}"
6117+
}
6118+
]
6119+
},
60886120
"pattern": {
60896121
"type": "PREC_DYNAMIC",
60906122
"value": -1,

src/node-types.json

Lines changed: 19 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,21 @@
956960
]
957961
}
958962
},
963+
{
964+
"type": "class_static_block",
965+
"named": true,
966+
"fields": {},
967+
"children": {
968+
"multiple": true,
969+
"required": false,
970+
"types": [
971+
{
972+
"type": "statement",
973+
"named": true
974+
}
975+
]
976+
}
977+
},
959978
{
960979
"type": "computed_property_name",
961980
"named": true,

0 commit comments

Comments
 (0)