Tests for parsing with trailing comma.

Change-Id: Ie4e10393f8c7840afcbe14d6d3d434a4b19ca507
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255900
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
Konstantin Shcheglov 2022-08-20 02:29:45 +00:00 committed by Commit Bot
parent 78f31f0ac5
commit b138d6b3ae

View file

@ -523,9 +523,7 @@ LibraryAugmentationDirective
void test_recordLiteral() {
var parseResult = parseStringWithErrors(r'''
void f() {
var r = (0, a: 1);
}
final x = (0, a: 1);
''');
parseResult.assertNoErrors();
@ -547,6 +545,49 @@ RecordLiteral
''');
}
void test_recordLiteral_named_trailingComma() {
var parseResult = parseStringWithErrors(r'''
final x = (0, a: 1,);
''');
parseResult.assertNoErrors();
var node = parseResult.findNode.recordLiteral('(0');
assertParsedNodeText(node, r'''
RecordLiteral
leftParenthesis: (
fields
IntegerLiteral
literal: 0
NamedExpression
name: Label
label: SimpleIdentifier
token: a
colon: :
expression: IntegerLiteral
literal: 1
rightParenthesis: )
''');
}
void test_recordLiteral_positional_trailingComma() {
var parseResult = parseStringWithErrors(r'''
final x = (0, 1,);
''');
parseResult.assertNoErrors();
var node = parseResult.findNode.recordLiteral('(0');
assertParsedNodeText(node, r'''
RecordLiteral
leftParenthesis: (
fields
IntegerLiteral
literal: 0
IntegerLiteral
literal: 1
rightParenthesis: )
''');
}
void test_recordTypeAnnotation_mixed() {
var parseResult = parseStringWithErrors(r'''
void f((int, bool, {int a, bool b}) r) {}
@ -612,6 +653,34 @@ RecordTypeAnnotation
''');
}
void test_recordTypeAnnotation_named_trailingComma() {
var parseResult = parseStringWithErrors(r'''
void f(({int a, bool b,}) r) {}
''');
parseResult.assertNoErrors();
var node = parseResult.findNode.recordTypeAnnotation('({int');
assertParsedNodeText(node, r'''
RecordTypeAnnotation
leftParenthesis: (
namedFields: RecordTypeAnnotationNamedFields
leftBracket: {
fields
RecordTypeAnnotationNamedField
type: NamedType
name: SimpleIdentifier
token: int
name: a
RecordTypeAnnotationNamedField
type: NamedType
name: SimpleIdentifier
token: bool
name: b
rightBracket: }
rightParenthesis: )
''');
}
void test_recordTypeAnnotation_nullable() {
var parseResult = parseStringWithErrors(r'''
void f((int, bool)? r) {}
@ -659,6 +728,29 @@ RecordTypeAnnotation
''');
}
void test_recordTypeAnnotation_positional_trailingComma() {
var parseResult = parseStringWithErrors(r'''
void f((int, bool,) r) {}
''');
parseResult.assertNoErrors();
var node = parseResult.findNode.recordTypeAnnotation('(int');
assertParsedNodeText(node, r'''
RecordTypeAnnotation
leftParenthesis: (
positionalFields
RecordTypeAnnotationPositionalField
type: NamedType
name: SimpleIdentifier
token: int
RecordTypeAnnotationPositionalField
type: NamedType
name: SimpleIdentifier
token: bool
rightParenthesis: )
''');
}
void test_superFormalParameter() {
var parseResult = parseStringWithErrors(r'''
class A {