Add tokens leftParenthesis/rightParenthesis to RecordTypeAnnotation.

Change-Id: Ib2f45c2d46a709d6b0c2c67c641c1566c5b9503e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255823
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov 2022-08-19 17:28:52 +00:00
parent 0715df3d00
commit b7837289ad
4 changed files with 24 additions and 6 deletions

View file

@ -4113,11 +4113,17 @@ abstract class RecordLiteral implements Literal {
/// Clients may not extend, implement or mix-in this class.
@experimental
abstract class RecordTypeAnnotation implements TypeAnnotation {
/// The left parenthesis.
Token get leftParenthesis;
/// The optional named fields.
RecordTypeAnnotationNamedFields? get namedFields;
/// The positional fields (might be empty).
NodeList<RecordTypeAnnotationPositionalField> get positionalFields;
/// The right parenthesis.
Token get rightParenthesis;
}
/// A field in a [RecordTypeAnnotation].

View file

@ -9725,6 +9725,9 @@ abstract class RecordTypeAnnotationFieldImpl extends AstNodeImpl
class RecordTypeAnnotationImpl extends TypeAnnotationImpl
implements RecordTypeAnnotation {
@override
Token leftParenthesis;
@override
final NodeListImpl<RecordTypeAnnotationPositionalField> positionalFields =
NodeListImpl._();
@ -9732,6 +9735,9 @@ class RecordTypeAnnotationImpl extends TypeAnnotationImpl
@override
final RecordTypeAnnotationNamedFieldsImpl? namedFields;
@override
Token rightParenthesis;
@override
final Token? question;
@ -9739,27 +9745,27 @@ class RecordTypeAnnotationImpl extends TypeAnnotationImpl
DartType? type;
RecordTypeAnnotationImpl({
required this.leftParenthesis,
required List<RecordTypeAnnotationPositionalField> positionalFields,
required this.namedFields,
required this.rightParenthesis,
required this.question,
}) {
this.positionalFields._initialize(this, positionalFields);
}
@override
Token get beginToken {
return positionalFields.beginToken ?? namedFields!.beginToken;
}
Token get beginToken => leftParenthesis;
@override
Token get endToken {
return namedFields?.endToken ?? positionalFields.endToken!;
}
Token get endToken => rightParenthesis;
@override
ChildEntities get _childEntities => super._childEntities
..addToken('leftParenthesis', leftParenthesis)
..addNodeList('positionalFields', positionalFields)
..addNode('namedFields', namedFields)
..addToken('rightParenthesis', rightParenthesis)
..addToken('question', question);
@override

View file

@ -993,6 +993,7 @@ class AstTestFactory {
required List<RecordTypeAnnotationNamedField> namedFields,
bool isNullable = false}) {
return RecordTypeAnnotationImpl(
leftParenthesis: TokenFactory.tokenFromType(TokenType.OPEN_PAREN),
positionalFields: positionalFields,
namedFields: namedFields.isEmpty
? null
@ -1002,6 +1003,7 @@ class AstTestFactory {
fields: namedFields,
rightBracket:
TokenFactory.tokenFromType(TokenType.CLOSE_CURLY_BRACKET)),
rightParenthesis: TokenFactory.tokenFromType(TokenType.CLOSE_PAREN),
question:
isNullable ? TokenFactory.tokenFromType(TokenType.QUESTION) : null);
}

View file

@ -432,6 +432,10 @@ class FindNode {
return _node(search, (n) => n is RecordLiteral);
}
RecordTypeAnnotation recordTypeAnnotation(String search) {
return _node(search, (n) => n is RecordTypeAnnotation);
}
RedirectingConstructorInvocation redirectingConstructorInvocation(
String search) {
return _node(search, (n) => n is RedirectingConstructorInvocation);