Change pattern rules (rename extractor->object, add metadata)
This CL changes the spec parser grammar, Dart.g, such that its pattern
related rules correspond to the recent updates in the patterns feature
specification.
Change-Id: I8d07cdb4c7ce22e0625da5bc8224ca2cf57af095
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/268920
Reviewed-by: William Hesse <whesse@google.com>
Auto-Submit: Erik Ernst <eernst@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
diff --git a/tools/spec_parser/Dart.g b/tools/spec_parser/Dart.g
index 4162bb8..c9de175 100644
--- a/tools/spec_parser/Dart.g
+++ b/tools/spec_parser/Dart.g
@@ -4,6 +4,8 @@
// CHANGES:
//
+// v0.22 Change pattern rules, following updated feature specification.
+//
// v0.21 Add support for patterns.
//
// v0.20 Adjust record syntax such that () is allowed (denoting the empty
@@ -1043,7 +1045,7 @@
| listPattern
| mapPattern
| recordPattern
- | extractorPattern
+ | objectPattern
;
castPattern
@@ -1107,15 +1109,8 @@
: (identifier? ':')? pattern
;
-extractorPattern
- : extractorName typeArguments? '(' patternFields? ')'
- ;
-
-// TODO: Could this be a single case containing `typeName`?
-// I don't think we need `C.new` or `N1.N2.N3` or `N1.N2.new`.
-extractorName
- : typeIdentifier
- | qualifiedName
+objectPattern
+ : typeName typeArguments? '(' patternFields? ')'
;
patternVariableDeclaration
@@ -1127,7 +1122,7 @@
| listPattern
| mapPattern
| recordPattern
- | extractorPattern
+ | objectPattern
;
patternAssignment
@@ -1172,10 +1167,9 @@
: expression? ';'
;
-// TODO: make it `metadata patternVariableDeclaration ';'`?
localVariableDeclaration
: metadata initializedVariableDeclaration ';'
- | patternVariableDeclaration ';'
+ | metadata patternVariableDeclaration ';'
;
initializedVariableDeclaration
@@ -1199,7 +1193,7 @@
: metadata declaredIdentifier IN expression
| metadata identifier IN expression
| forInitializerStatement expression? ';' expressionList?
- | ('final' | 'var') outerPattern 'in' expression
+ | metadata (FINAL | VAR) outerPattern IN expression
;
// The localVariableDeclaration cannot be CONST, but that can