Skip to content

Commit ba0971e

Browse files
committed
Use new reserved words API to improve error recovery
1 parent fdeb68a commit ba0971e

File tree

4 files changed

+2549
-812
lines changed

4 files changed

+2549
-812
lines changed

grammar.js

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)