Augment. Order AST modifier tokens by the specification.

Update generated AST node metadata and token ordering so child entities,
begin tokens, and reconstructed source follow the grammar order for
modifier tokens.

Place `augment` before declaration modifiers on class type aliases and
the affected top-level and class-level declarations. Order field
modifiers as `augment external static abstract covariant`, and order
named formal parameter modifiers as `required covariant`.

Also emit the missing modifier tokens in `ToSourceVisitor` so source
reconstruction preserves augmentation syntax and the canonical modifier
order.

Change-Id: I57b4aa05f856779526bc3c8d5e3319d8c260bc49
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504682
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov
2026-05-20 08:41:46 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 58047e7d94
commit a07da4d626
6 changed files with 158 additions and 66 deletions
+54 -54
View File
@@ -5200,12 +5200,12 @@ abstract final class ClassTypeAlias implements TypeAlias {
@GenerateNodeImpl(
childEntitiesOrder: [
GenerateNodeProperty('augmentKeyword', isSuper: true),
GenerateNodeProperty('abstractKeyword'),
GenerateNodeProperty('sealedKeyword'),
GenerateNodeProperty('baseKeyword'),
GenerateNodeProperty('interfaceKeyword'),
GenerateNodeProperty('finalKeyword'),
GenerateNodeProperty('augmentKeyword', isSuper: true),
GenerateNodeProperty('mixinKeyword'),
GenerateNodeProperty('typedefKeyword', isSuper: true),
GenerateNodeProperty('name', isSuper: true),
@@ -5267,12 +5267,12 @@ final class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
ClassTypeAliasImpl({
required super.comment,
required super.metadata,
required super.augmentKeyword,
required this.abstractKeyword,
required this.sealedKeyword,
required this.baseKeyword,
required this.interfaceKeyword,
required this.finalKeyword,
required super.augmentKeyword,
required this.mixinKeyword,
required super.typedefKeyword,
required super.name,
@@ -5301,6 +5301,9 @@ final class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
@generated
@override
Token get firstTokenAfterCommentAndMetadata {
if (augmentKeyword case var augmentKeyword?) {
return augmentKeyword;
}
if (abstractKeyword case var abstractKeyword?) {
return abstractKeyword;
}
@@ -5316,9 +5319,6 @@ final class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
if (finalKeyword case var finalKeyword?) {
return finalKeyword;
}
if (augmentKeyword case var augmentKeyword?) {
return augmentKeyword;
}
if (mixinKeyword case var mixinKeyword?) {
return mixinKeyword;
}
@@ -5364,12 +5364,12 @@ final class ClassTypeAliasImpl extends TypeAliasImpl implements ClassTypeAlias {
@generated
@override
ChildEntities get _childEntities => super._childEntities
..addToken('augmentKeyword', augmentKeyword)
..addToken('abstractKeyword', abstractKeyword)
..addToken('sealedKeyword', sealedKeyword)
..addToken('baseKeyword', baseKeyword)
..addToken('interfaceKeyword', interfaceKeyword)
..addToken('finalKeyword', finalKeyword)
..addToken('augmentKeyword', augmentKeyword)
..addToken('mixinKeyword', mixinKeyword)
..addToken('typedefKeyword', typedefKeyword)
..addToken('name', name)
@@ -12398,29 +12398,21 @@ abstract final class FieldDeclaration implements ClassMember {
@GenerateNodeImpl(
childEntitiesOrder: [
GenerateNodeProperty('abstractKeyword', tokenGroupId: 0),
GenerateNodeProperty('augmentKeyword', tokenGroupId: 0),
GenerateNodeProperty('covariantKeyword', tokenGroupId: 0),
GenerateNodeProperty('externalKeyword', tokenGroupId: 0),
GenerateNodeProperty('staticKeyword', tokenGroupId: 0),
GenerateNodeProperty('abstractKeyword', tokenGroupId: 0),
GenerateNodeProperty('covariantKeyword', tokenGroupId: 0),
GenerateNodeProperty('fields'),
GenerateNodeProperty('semicolon'),
],
)
final class FieldDeclarationImpl extends ClassMemberImpl
implements FieldDeclaration {
@generated
@override
final Token? abstractKeyword;
@generated
@override
final Token? augmentKeyword;
@generated
@override
final Token? covariantKeyword;
@generated
@override
final Token? externalKeyword;
@@ -12429,6 +12421,14 @@ final class FieldDeclarationImpl extends ClassMemberImpl
@override
final Token? staticKeyword;
@generated
@override
final Token? abstractKeyword;
@generated
@override
final Token? covariantKeyword;
@generated
VariableDeclarationListImpl _fields;
@@ -12440,11 +12440,11 @@ final class FieldDeclarationImpl extends ClassMemberImpl
FieldDeclarationImpl({
required super.comment,
required super.metadata,
required this.abstractKeyword,
required this.augmentKeyword,
required this.covariantKeyword,
required this.externalKeyword,
required this.staticKeyword,
required this.abstractKeyword,
required this.covariantKeyword,
required VariableDeclarationListImpl fields,
required this.semicolon,
}) : _fields = fields {
@@ -12473,11 +12473,11 @@ final class FieldDeclarationImpl extends ClassMemberImpl
@override
Token get firstTokenAfterCommentAndMetadata {
if (Token.lexicallyFirst(
abstractKeyword,
augmentKeyword,
covariantKeyword,
externalKeyword,
staticKeyword,
abstractKeyword,
covariantKeyword,
)
case var result?) {
return result;
@@ -12491,11 +12491,11 @@ final class FieldDeclarationImpl extends ClassMemberImpl
@generated
@override
ChildEntities get _childEntities => super._childEntities
..addToken('abstractKeyword', abstractKeyword)
..addToken('augmentKeyword', augmentKeyword)
..addToken('covariantKeyword', covariantKeyword)
..addToken('externalKeyword', externalKeyword)
..addToken('staticKeyword', staticKeyword)
..addToken('abstractKeyword', abstractKeyword)
..addToken('covariantKeyword', covariantKeyword)
..addNode('fields', fields)
..addToken('semicolon', semicolon);
@@ -12596,8 +12596,8 @@ abstract final class FieldFormalParameter implements FormalParameter {
withOverride: false,
type: _TypeLiteral<ParameterKind>,
),
GenerateNodeProperty('covariantKeyword', isSuper: true),
GenerateNodeProperty('requiredKeyword', isSuper: true),
GenerateNodeProperty('covariantKeyword', isSuper: true),
GenerateNodeProperty('constFinalOrVarKeyword', isSuper: true),
GenerateNodeProperty('type', isSuper: true),
GenerateNodeProperty('thisKeyword'),
@@ -12622,8 +12622,8 @@ final class FieldFormalParameterImpl extends FormalParameterImpl
required super.comment,
required super.metadata,
required super.kind,
required super.covariantKeyword,
required super.requiredKeyword,
required super.covariantKeyword,
required super.constFinalOrVarKeyword,
required super.type,
required this.thisKeyword,
@@ -12652,12 +12652,12 @@ final class FieldFormalParameterImpl extends FormalParameterImpl
@generated
@override
Token get firstTokenAfterCommentAndMetadata {
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (constFinalOrVarKeyword case var constFinalOrVarKeyword?) {
return constFinalOrVarKeyword;
}
@@ -12674,8 +12674,8 @@ final class FieldFormalParameterImpl extends FormalParameterImpl
@generated
@override
ChildEntities get _childEntities => super._childEntities
..addToken('covariantKeyword', covariantKeyword)
..addToken('requiredKeyword', requiredKeyword)
..addToken('covariantKeyword', covariantKeyword)
..addToken('constFinalOrVarKeyword', constFinalOrVarKeyword)
..addNode('type', type)
..addToken('thisKeyword', thisKeyword)
@@ -13897,12 +13897,12 @@ sealed class FormalParameterImpl extends AstNodeImpl
if (constFinalOrVarKeyword case var constFinalOrVarKeyword?) {
return constFinalOrVarKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
throw StateError('Expected at least one non-null');
}
@@ -28850,8 +28850,8 @@ abstract final class RegularFormalParameter implements FormalParameter {}
withOverride: false,
type: _TypeLiteral<ParameterKind>,
),
GenerateNodeProperty('covariantKeyword', isSuper: true),
GenerateNodeProperty('requiredKeyword', isSuper: true),
GenerateNodeProperty('covariantKeyword', isSuper: true),
GenerateNodeProperty('constFinalOrVarKeyword', isSuper: true),
GenerateNodeProperty('type', isSuper: true),
GenerateNodeProperty('name', isSuper: true),
@@ -28866,8 +28866,8 @@ final class RegularFormalParameterImpl extends FormalParameterImpl
required super.comment,
required super.metadata,
required super.kind,
required super.covariantKeyword,
required super.requiredKeyword,
required super.covariantKeyword,
required super.constFinalOrVarKeyword,
required super.type,
required super.name,
@@ -28893,24 +28893,24 @@ final class RegularFormalParameterImpl extends FormalParameterImpl
if (constFinalOrVarKeyword case var constFinalOrVarKeyword?) {
return constFinalOrVarKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
throw StateError('Expected at least one non-null');
}
@generated
@override
Token get firstTokenAfterCommentAndMetadata {
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (constFinalOrVarKeyword case var constFinalOrVarKeyword?) {
return constFinalOrVarKeyword;
}
@@ -28932,8 +28932,8 @@ final class RegularFormalParameterImpl extends FormalParameterImpl
@generated
@override
ChildEntities get _childEntities => super._childEntities
..addToken('covariantKeyword', covariantKeyword)
..addToken('requiredKeyword', requiredKeyword)
..addToken('covariantKeyword', covariantKeyword)
..addToken('constFinalOrVarKeyword', constFinalOrVarKeyword)
..addNode('type', type)
..addToken('name', name)
@@ -31173,8 +31173,8 @@ abstract final class SuperFormalParameter implements FormalParameter {
withOverride: false,
type: _TypeLiteral<ParameterKind>,
),
GenerateNodeProperty('covariantKeyword', isSuper: true),
GenerateNodeProperty('requiredKeyword', isSuper: true),
GenerateNodeProperty('covariantKeyword', isSuper: true),
GenerateNodeProperty('constFinalOrVarKeyword', isSuper: true),
GenerateNodeProperty('type', isSuper: true),
GenerateNodeProperty('superKeyword'),
@@ -31199,8 +31199,8 @@ final class SuperFormalParameterImpl extends FormalParameterImpl
required super.comment,
required super.metadata,
required super.kind,
required super.covariantKeyword,
required super.requiredKeyword,
required super.covariantKeyword,
required super.constFinalOrVarKeyword,
required super.type,
required this.superKeyword,
@@ -31229,12 +31229,12 @@ final class SuperFormalParameterImpl extends FormalParameterImpl
@generated
@override
Token get firstTokenAfterCommentAndMetadata {
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (requiredKeyword case var requiredKeyword?) {
return requiredKeyword;
}
if (covariantKeyword case var covariantKeyword?) {
return covariantKeyword;
}
if (constFinalOrVarKeyword case var constFinalOrVarKeyword?) {
return constFinalOrVarKeyword;
}
@@ -31251,8 +31251,8 @@ final class SuperFormalParameterImpl extends FormalParameterImpl
@generated
@override
ChildEntities get _childEntities => super._childEntities
..addToken('covariantKeyword', covariantKeyword)
..addToken('requiredKeyword', requiredKeyword)
..addToken('covariantKeyword', covariantKeyword)
..addToken('constFinalOrVarKeyword', constFinalOrVarKeyword)
..addNode('type', type)
..addToken('superKeyword', superKeyword)
@@ -32876,8 +32876,8 @@ abstract final class TopLevelVariableDeclaration
@GenerateNodeImpl(
childEntitiesOrder: [
GenerateNodeProperty('augmentKeyword'),
GenerateNodeProperty('abstractKeyword'),
GenerateNodeProperty('externalKeyword'),
GenerateNodeProperty('abstractKeyword'),
GenerateNodeProperty('variables'),
GenerateNodeProperty('semicolon'),
],
@@ -32890,11 +32890,11 @@ final class TopLevelVariableDeclarationImpl extends CompilationUnitMemberImpl
@generated
@override
final Token? abstractKeyword;
final Token? externalKeyword;
@generated
@override
final Token? externalKeyword;
final Token? abstractKeyword;
@generated
VariableDeclarationListImpl _variables;
@@ -32908,8 +32908,8 @@ final class TopLevelVariableDeclarationImpl extends CompilationUnitMemberImpl
required super.comment,
required super.metadata,
required this.augmentKeyword,
required this.abstractKeyword,
required this.externalKeyword,
required this.abstractKeyword,
required VariableDeclarationListImpl variables,
required this.semicolon,
}) : _variables = variables {
@@ -32931,12 +32931,12 @@ final class TopLevelVariableDeclarationImpl extends CompilationUnitMemberImpl
if (augmentKeyword case var augmentKeyword?) {
return augmentKeyword;
}
if (abstractKeyword case var abstractKeyword?) {
return abstractKeyword;
}
if (externalKeyword case var externalKeyword?) {
return externalKeyword;
}
if (abstractKeyword case var abstractKeyword?) {
return abstractKeyword;
}
return variables.beginToken;
}
@@ -32953,8 +32953,8 @@ final class TopLevelVariableDeclarationImpl extends CompilationUnitMemberImpl
@override
ChildEntities get _childEntities => super._childEntities
..addToken('augmentKeyword', augmentKeyword)
..addToken('abstractKeyword', abstractKeyword)
..addToken('externalKeyword', externalKeyword)
..addToken('abstractKeyword', abstractKeyword)
..addNode('variables', variables)
..addToken('semicolon', semicolon);
@@ -436,6 +436,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override
void visitEnumConstantDeclaration(EnumConstantDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
_visitToken(node.name);
_visitNode(node.arguments);
}
@@ -443,6 +444,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override
void visitEnumDeclaration(EnumDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
sink.write('enum ');
_visitNode(node.namePart);
_visitNode(node.withClause, prefix: ' ');
@@ -518,6 +520,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override
void visitExtensionTypeDeclaration(ExtensionTypeDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
_visitToken(node.extensionKeyword, suffix: ' ');
_visitToken(node.typeKeyword, suffix: ' ');
_visitNode(node.primaryConstructor);
@@ -528,10 +531,11 @@ class ToSourceVisitor implements AstVisitor<void> {
@override
void visitFieldDeclaration(FieldDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.abstractKeyword, suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
_visitToken(node.externalKeyword, suffix: ' ');
_visitToken(node.staticKeyword, suffix: ' ');
_visitToken(node.abstractKeyword, suffix: ' ');
_visitToken(node.covariantKeyword, suffix: ' ');
_visitNode(node.fields);
sink.write(';');
}
@@ -652,6 +656,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override
void visitFunctionDeclaration(FunctionDeclaration node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
_visitToken(node.externalKeyword, suffix: ' ');
_visitNode(node.returnType, suffix: ' ');
_visitToken(node.propertyKeyword, suffix: ' ');
@@ -687,6 +692,7 @@ class ToSourceVisitor implements AstVisitor<void> {
@override
void visitFunctionTypeAlias(FunctionTypeAlias node) {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
sink.write('typedef ');
_visitNode(node.returnType, suffix: ' ');
_visitToken(node.name);
@@ -1424,6 +1430,7 @@ class ToSourceVisitor implements AstVisitor<void> {
_visitNodeList(node.metadata, separator: ' ', suffix: ' ');
_visitToken(node.augmentKeyword, suffix: ' ');
_visitToken(node.externalKeyword, suffix: ' ');
_visitToken(node.abstractKeyword, suffix: ' ');
_visitNode(node.variables, suffix: ';');
}
@@ -2993,8 +2993,8 @@ class C {
var node = parseResult.findNode.singleClassMember;
assertParsedNodeText(node, r'''
FieldDeclaration
abstractKeyword: abstract
externalKeyword: external
abstractKeyword: abstract
fields: VariableDeclarationList
type: NamedType
name: int
@@ -3062,8 +3062,8 @@ class C {
var node = parseResult.findNode.singleClassMember;
assertParsedNodeText(node, r'''
FieldDeclaration
abstractKeyword: abstract
staticKeyword: static
abstractKeyword: abstract
fields: VariableDeclarationList
type: NamedType
name: int
@@ -3131,8 +3131,8 @@ class C {
var node = parseResult.findNode.singleClassMember;
assertParsedNodeText(node, r'''
FieldDeclaration
abstractKeyword: abstract
externalKeyword: external
abstractKeyword: abstract
fields: VariableDeclarationList
type: NamedType
name: int
@@ -1398,8 +1398,8 @@ FormalParameterList
leftParenthesis: (
leftDelimiter: {
parameter: RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
type: NamedType
name: A
name: a
@@ -1422,8 +1422,8 @@ FormalParameterList
leftParenthesis: (
leftDelimiter: {
parameter: RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
type: NamedType
name: A
name: a
@@ -1880,8 +1880,8 @@ void f(void g({required covariant int a})) {}
var node = parseResult.findNode.regularFormalParameter('a}');
assertParsedNodeText(node, r'''
RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
type: NamedType
name: int
name: a
@@ -581,7 +581,6 @@ $code
}
void test_visitClassTypeAlias_abstractAugment() {
// TODO(scheglov): Is this the right order of modifiers?
var code = 'augment abstract class C = S with M;';
var findNode = _parseStringToFindNode('''
$code
@@ -1142,6 +1141,24 @@ abstract class A {
_assertSource(code, findNode.emptyFunctionBody(code));
}
void test_visitEnumConstantDeclaration_augment() {
var code = 'augment v';
var findNode = _parseStringToFindNode('''
augment enum E {
$code
}
''');
_assertSource(code, findNode.enumConstantDeclaration(code));
}
void test_visitEnumDeclaration_augment() {
var code = 'augment enum E {v}';
var findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.enumDeclaration('enum E'));
}
void test_visitEnumDeclaration_constant_arguments_named() {
var findNode = _parseStringToFindNode(r'''
enum E {
@@ -1393,6 +1410,14 @@ $code
_assertSource(code, findNode.singleExtensionTypeDeclaration);
}
void test_visitExtensionType_augment() {
var code = 'augment extension type E(int it) {}';
var findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.singleExtensionTypeDeclaration);
}
void test_visitExtensionType_implements() {
var code = 'extension type E(int it) implements num {}';
var findNode = _parseStringToFindNode('''
@@ -1419,6 +1444,26 @@ class A {
_assertSource(code, findNode.fieldDeclaration(code));
}
void test_visitFieldDeclaration_abstract_external() {
var code = 'abstract external var a;';
var findNode = _parseStringToFindNode('''
class A {
$code
}
''');
_assertSource('external abstract var a;', findNode.fieldDeclaration(code));
}
void test_visitFieldDeclaration_abstract_static() {
var code = 'abstract static var a;';
var findNode = _parseStringToFindNode('''
class A {
$code
}
''');
_assertSource('static abstract var a;', findNode.fieldDeclaration(code));
}
void test_visitFieldDeclaration_augment() {
var code = 'augment var a = 0;';
var findNode = _parseStringToFindNode('''
@@ -1429,6 +1474,16 @@ augment class A {
_assertSource(code, findNode.fieldDeclaration(code));
}
void test_visitFieldDeclaration_covariant() {
var code = 'covariant var a;';
var findNode = _parseStringToFindNode('''
class A {
$code
}
''');
_assertSource(code, findNode.fieldDeclaration(code));
}
void test_visitFieldDeclaration_external() {
var code = 'external var a;';
var findNode = _parseStringToFindNode('''
@@ -1878,6 +1933,12 @@ void f () {
_assertSource(code, findNode.forStatement(code));
}
void test_visitFunctionDeclaration_augment() {
var code = 'augment void f() {}';
var findNode = _parseStringToFindNode(code);
_assertSource(code, findNode.functionDeclaration(code));
}
void test_visitFunctionDeclaration_external() {
var code = 'external void f();';
var findNode = _parseStringToFindNode(code);
@@ -1980,6 +2041,14 @@ void f() {
_assertSource(code, findNode.functionExpressionInvocation(code));
}
void test_visitFunctionTypeAlias_augment() {
var code = 'augment typedef void F();';
var findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.functionTypeAlias(code));
}
void test_visitFunctionTypeAlias_generic() {
var code = 'typedef A F<B>();';
var findNode = _parseStringToFindNode('''
@@ -3798,6 +3867,14 @@ void f() {
_assertSource(code, findNode.throw_(code));
}
void test_visitTopLevelVariableDeclaration_abstract() {
var code = 'abstract var a;';
var findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.topLevelVariableDeclaration(code));
}
void test_visitTopLevelVariableDeclaration_augment() {
var code = 'augment var a = 0;';
var findNode = _parseStringToFindNode('''
@@ -3814,6 +3891,14 @@ $code
_assertSource(code, findNode.topLevelVariableDeclaration(code));
}
void test_visitTopLevelVariableDeclaration_external_abstract() {
var code = 'external abstract var a;';
var findNode = _parseStringToFindNode('''
$code
''');
_assertSource(code, findNode.topLevelVariableDeclaration(code));
}
void test_visitTopLevelVariableDeclaration_multiple() {
var code = 'var a = 0, b = 1;';
var findNode = _parseStringToFindNode('''
@@ -2518,8 +2518,8 @@ ClassDeclaration
leftParenthesis: (
leftDelimiter: {
parameter: RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
type: NamedType
name: int
name: it
@@ -2549,8 +2549,8 @@ ClassDeclaration
leftParenthesis: (
leftDelimiter: {
parameter: RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
constFinalOrVarKeyword: final
type: NamedType
name: int
@@ -2579,8 +2579,8 @@ ClassDeclaration
leftParenthesis: (
leftDelimiter: {
parameter: RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
constFinalOrVarKeyword: var
type: NamedType
name: int
@@ -2641,8 +2641,8 @@ ClassDeclaration
leftParenthesis: (
leftDelimiter: {
parameter: RegularFormalParameter
covariantKeyword: covariant
requiredKeyword: required
covariantKeyword: covariant
constFinalOrVarKeyword: var
type: NamedType
name: int