@@ -12,6 +12,21 @@ module.exports = grammar({
1212 / [ \s \p{ Zs} \uFEFF \u2060 \u200B ] / ,
1313 ] ,
1414
15+ reserved : $ => [
16+ 'const' ,
17+ 'do' ,
18+ 'else' ,
19+ 'finally' ,
20+ 'for' ,
21+ 'function' ,
22+ 'if' ,
23+ 'let' ,
24+ 'return' ,
25+ 'throw' ,
26+ 'var' ,
27+ 'while' ,
28+ ] ,
29+
1530 supertypes : $ => [
1631 $ . statement ,
1732 $ . declaration ,
@@ -488,10 +503,10 @@ module.exports = grammar({
488503 $ . pair ,
489504 $ . spread_element ,
490505 $ . method_definition ,
491- alias (
506+ reserved ( [ ] , alias (
492507 choice ( $ . identifier , $ . _reserved_identifier ) ,
493508 $ . shorthand_property_identifier
494- )
509+ ) )
495510 ) ) ) ,
496511 '}'
497512 ) ) ,
@@ -502,10 +517,10 @@ module.exports = grammar({
502517 $ . pair_pattern ,
503518 $ . rest_pattern ,
504519 $ . object_assignment_pattern ,
505- alias (
520+ reserved ( [ ] , alias (
506521 choice ( $ . identifier , $ . _reserved_identifier ) ,
507522 $ . shorthand_property_identifier_pattern
508- )
523+ ) )
509524 ) ) ) ,
510525 '}'
511526 ) ) ,
@@ -517,10 +532,13 @@ module.exports = grammar({
517532 ) ,
518533
519534 object_assignment_pattern : $ => seq (
520- field ( 'left' , choice (
521- alias ( choice ( $ . _reserved_identifier , $ . identifier ) , $ . shorthand_property_identifier_pattern ) ,
522- $ . _destructuring_pattern
523- ) ) ,
535+ field ( 'left' , reserved ( [ ] , choice (
536+ $ . _destructuring_pattern ,
537+ alias (
538+ choice ( $ . _reserved_identifier , $ . identifier ) ,
539+ $ . shorthand_property_identifier_pattern
540+ ) ,
541+ ) ) ) ,
524542 '=' ,
525543 field ( 'right' , $ . expression )
526544 ) ,
@@ -737,7 +755,7 @@ module.exports = grammar({
737755 choice ( '.' , '?.' ) ,
738756 field ( 'property' , choice (
739757 $ . private_property_identifier ,
740- alias ( $ . identifier , $ . property_identifier ) ) )
758+ reserved ( [ ] , alias ( $ . identifier , $ . property_identifier ) ) ) )
741759 ) ) ,
742760
743761 subscript_expression : $ => prec . right ( 'member' , seq (
@@ -1118,7 +1136,7 @@ module.exports = grammar({
11181136 field ( 'value' , choice ( $ . pattern , $ . assignment_pattern ) )
11191137 ) ,
11201138
1121- _property_name : $ => choice (
1139+ _property_name : $ => reserved ( [ ] , choice (
11221140 alias ( choice (
11231141 $ . identifier ,
11241142 $ . _reserved_identifier
@@ -1127,7 +1145,7 @@ module.exports = grammar({
11271145 $ . string ,
11281146 $ . number ,
11291147 $ . computed_property_name
1130- ) ,
1148+ ) ) ,
11311149
11321150 computed_property_name : $ => seq (
11331151 '[' ,
0 commit comments