Update Dart.g to match the current pattern feature spec

This CL changes the Dart grammar in Dart.g such that it contains all
the grammar changes applied to the patterns proposal since the previous
update of Dart.g.

Change-Id: I9b5f0d9a092d30ce0055db99da5fdbe3b9b1d5dc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275002
Reviewed-by: William Hesse <whesse@google.com>
Auto-Submit: Erik Ernst <eernst@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
This commit is contained in:
Erik Ernst 2022-12-13 12:56:01 +00:00 committed by Commit Queue
parent 9488163d7e
commit ba5f8da95d

View file

@ -4,9 +4,12 @@
// CHANGES: // CHANGES:
// //
// v0.24 Change constant pattern rules to allow Symbols and negative numbers // v0.25 Update pattern rules following changes to the patterns feature
// specification since v0.24.
// //
// v0.23 Change logical pattern rules to || and && // v0.24 Change constant pattern rules to allow Symbols and negative numbers.
//
// v0.23 Change logical pattern rules to || and &&.
// //
// v0.22 Change pattern rules, following updated feature specification. // v0.22 Change pattern rules, following updated feature specification.
// //
@ -656,7 +659,7 @@ spreadElement
; ;
ifElement ifElement
: IF '(' expression ')' element (ELSE element)? : ifCondition element (ELSE element)?
; ;
forElement forElement
@ -669,15 +672,11 @@ constructorTearoff
switchExpression switchExpression
: SWITCH '(' expression ')' : SWITCH '(' expression ')'
LBRACE switchExpressionCase* switchExpressionDefault? RBRACE LBRACE switchExpressionCase (',' switchExpressionCase)* ','? RBRACE
; ;
switchExpressionCase switchExpressionCase
: caseHead '=>' expression ';' : guardedPattern '=>' expression
;
switchExpressionDefault
: DEFAULT '=>' expression ';'
; ;
throwExpression throwExpression
@ -1031,7 +1030,7 @@ logicalAndPattern
; ;
relationalPattern relationalPattern
: (equalityOperator | relationalOperator) relationalExpression : (equalityOperator | relationalOperator) bitwiseOrExpression
| unaryPattern | unaryPattern
; ;
@ -1087,7 +1086,20 @@ parenthesizedPattern
; ;
listPattern listPattern
: typeArguments? '[' patterns? ']' : typeArguments? '[' listPatternElements? ']'
;
listPatternElements
: listPatternElement (',' listPatternElement)* ','?
;
listPatternElement
: pattern
| restPattern
;
restPattern
: '...' pattern?
; ;
mapPattern mapPattern
@ -1100,6 +1112,7 @@ mapPatternEntries
mapPatternEntry mapPatternEntry
: expression ':' pattern : expression ':' pattern
| '...'
; ;
recordPattern recordPattern
@ -1186,7 +1199,11 @@ localFunctionDeclaration
; ;
ifStatement ifStatement
: IF '(' expression caseHead? ')' statement (ELSE statement)? : ifCondition statement (ELSE statement)?
;
ifCondition
: IF '(' expression (CASE guardedPattern)? ')'
; ;
forStatement forStatement
@ -1222,11 +1239,11 @@ switchStatement
; ;
switchStatementCase switchStatementCase
: label* caseHead ':' statements : label* CASE guardedPattern ':' statements
; ;
caseHead guardedPattern
: CASE pattern (WHEN expression)? : pattern (WHEN expression)?
; ;
switchStatementDefault switchStatementDefault
@ -1393,7 +1410,7 @@ recordType
: '(' ')' : '(' ')'
| '(' recordTypeFields ',' recordTypeNamedFields ')' | '(' recordTypeFields ',' recordTypeNamedFields ')'
| '(' recordTypeFields ','? ')' | '(' recordTypeFields ','? ')'
| '(' recordTypeNamedFields? ')' | '(' recordTypeNamedFields ')'
; ;
recordTypeFields recordTypeFields