@@ -265,7 +265,7 @@ module.exports = grammar({
265265
266266 class_declaration : $ => seq (
267267 $ . _class_declaration_initializer ,
268- $ . _optional_semi ,
268+ $ . _declaration_list_body ,
269269 ) ,
270270
271271 _class_declaration_initializer : $ => seq (
@@ -275,13 +275,11 @@ module.exports = grammar({
275275 field ( 'name' , $ . identifier ) ,
276276 repeat ( choice ( $ . type_parameter_list , $ . parameter_list , $ . base_list ) ) ,
277277 repeat ( $ . type_parameter_constraints_clause ) ,
278- field ( 'body' , $ . declaration_list ) ,
279278 ) ,
280279
281280 struct_declaration : $ => seq (
282281 $ . _struct_declaration_initializer ,
283- field ( 'body' , $ . declaration_list ) ,
284- $ . _optional_semi ,
282+ $ . _declaration_list_body ,
285283 ) ,
286284
287285 _struct_declaration_initializer : $ => seq (
@@ -295,13 +293,19 @@ module.exports = grammar({
295293 ) ,
296294
297295 enum_declaration : $ => seq (
296+ $ . _enum_declaration_initializer ,
297+ choice (
298+ seq ( field ( 'body' , $ . enum_member_declaration_list ) , $ . _optional_semi ) ,
299+ ';' ,
300+ ) ,
301+ ) ,
302+
303+ _enum_declaration_initializer : $ => seq (
298304 repeat ( $ . _attribute_list ) ,
299305 repeat ( $ . modifier ) ,
300306 'enum' ,
301307 field ( 'name' , $ . identifier ) ,
302308 optional ( $ . base_list ) ,
303- field ( 'body' , $ . enum_member_declaration_list ) ,
304- $ . _optional_semi ,
305309 ) ,
306310
307311 enum_member_declaration_list : $ => seq (
@@ -322,8 +326,7 @@ module.exports = grammar({
322326
323327 interface_declaration : $ => seq (
324328 $ . _interface_declaration_initializer ,
325- field ( 'body' , $ . declaration_list ) ,
326- $ . _optional_semi ,
329+ $ . _declaration_list_body ,
327330 ) ,
328331
329332 _interface_declaration_initializer : $ => seq (
@@ -354,8 +357,7 @@ module.exports = grammar({
354357
355358 record_declaration : $ => seq (
356359 $ . _record_declaration_initializer ,
357- choice ( field ( 'body' , $ . declaration_list ) , ';' ) ,
358- $ . _optional_semi ,
360+ $ . _declaration_list_body ,
359361 ) ,
360362
361363 _record_declaration_initializer : $ => seq (
@@ -374,6 +376,11 @@ module.exports = grammar({
374376 seq ( ':' , $ . primary_constructor_base_type , optional ( seq ( ',' , commaSep1 ( $ . _name ) ) ) ) ,
375377 ) ,
376378
379+ _declaration_list_body : $ => choice (
380+ seq ( field ( 'body' , $ . declaration_list ) , $ . _optional_semi ) ,
381+ ';' ,
382+ ) ,
383+
377384 primary_constructor_base_type : $ => seq (
378385 field ( 'type' , $ . _name ) ,
379386 $ . argument_list ,
0 commit comments