mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 09:43:57 +00:00
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:
parent
78f31f0ac5
commit
b138d6b3ae
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue