Add visitor methods for new AST nodes
Change-Id: Ifa8ce25f4da6580acddf76502c0c84b38eed555a
Reviewed-on: https://dart-review.googlesource.com/c/90121
Reviewed-by: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 74a295b..c7ed7de 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -1,3 +1,12 @@
+##
+
+* Added support in the AST structure for the control_flow_collections and
+ spread_collections experiments. This includes adding new visitor methods to
+ `AstVisitor`, which will need to be implemented by any classes that implement
+ `AstVisitor` directly. Concrete implementations were added to other visitor
+ classes (such as `RecursiveAstVisitor`) so that clients that extend those
+ other classes will not be impacted.
+
## 0.34.2
* Removed support for the `@checked` annotation. Please use the `covariant`
keyword instead (#28797).
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index fdb49c8..d053754 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -620,6 +620,10 @@
R visitClassTypeAlias(ClassTypeAlias node);
+ R visitCollectionForElement(CollectionForElement node);
+
+ R visitCollectionIfElement(CollectionIfElement node);
+
R visitComment(Comment node);
R visitCommentReference(CommentReference node);
@@ -668,12 +672,22 @@
R visitFieldFormalParameter(FieldFormalParameter node);
+ R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node);
+
+ R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node);
+
R visitForEachStatement(ForEachStatement node);
R visitFormalParameterList(FormalParameterList node);
+ R visitForPartsWithDeclarations(ForPartsWithDeclarations node);
+
+ R visitForPartsWithExpression(ForPartsWithExpression node);
+
R visitForStatement(ForStatement node);
+ R visitForStatement2(ForStatement2 node);
+
R visitFunctionDeclaration(FunctionDeclaration node);
R visitFunctionDeclarationStatement(FunctionDeclarationStatement node);
@@ -720,8 +734,16 @@
R visitListLiteral(ListLiteral node);
+ R visitListLiteral2(ListLiteral2 node);
+
+ R visitMapForElement(MapForElement node);
+
+ R visitMapIfElement(MapIfElement node);
+
R visitMapLiteral(MapLiteral node);
+ R visitMapLiteral2(MapLiteral2 node);
+
R visitMapLiteralEntry(MapLiteralEntry node);
R visitMethodDeclaration(MethodDeclaration node);
@@ -765,6 +787,8 @@
R visitSetLiteral(SetLiteral node);
+ R visitSetLiteral2(SetLiteral2 node);
+
R visitShowCombinator(ShowCombinator node);
R visitSimpleFormalParameter(SimpleFormalParameter node);
@@ -773,6 +797,8 @@
R visitSimpleStringLiteral(SimpleStringLiteral node);
+ R visitSpreadElement(SpreadElement node);
+
R visitStringInterpolation(StringInterpolation node);
R visitSuperConstructorInvocation(SuperConstructorInvocation node);
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
index 8812091..e1c77f4 100644
--- a/pkg/analyzer/lib/dart/ast/visitor.dart
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -205,11 +205,11 @@
@override
R visitClassTypeAlias(ClassTypeAlias node) => visitTypeAlias(node);
-// @override
+ @override
R visitCollectionForElement(CollectionForElement node) =>
visitForElement<CollectionElement>(node);
-// @override
+ @override
R visitCollectionIfElement(CollectionIfElement node) =>
visitIfElement<CollectionElement>(node);
@@ -308,11 +308,11 @@
R visitForEachParts(ForEachParts node) => visitNode(node);
-// @override
+ @override
R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
visitForEachParts(node);
-// @override
+ @override
R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
visitForEachParts(node);
@@ -328,18 +328,18 @@
R visitForParts(ForParts node) => visitNode(node);
-// @override
+ @override
R visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
visitForParts(node);
-// @override
+ @override
R visitForPartsWithExpression(ForPartsWithExpression node) =>
visitForParts(node);
@override
R visitForStatement(ForStatement node) => visitStatement(node);
-// @override
+ @override
R visitForStatement2(ForStatement2 node) => visitStatement(node);
R visitFunctionBody(FunctionBody node) => visitNode(node);
@@ -430,21 +430,21 @@
@override
R visitListLiteral(ListLiteral node) => visitTypedLiteral(node);
-// @override
+ @override
R visitListLiteral2(ListLiteral2 node) => visitTypedLiteral(node);
R visitLiteral(Literal node) => visitExpression(node);
-// @override
+ @override
R visitMapForElement(MapForElement node) => visitForElement<MapElement>(node);
-// @override
+ @override
R visitMapIfElement(MapIfElement node) => visitIfElement<MapElement>(node);
@override
R visitMapLiteral(MapLiteral node) => visitTypedLiteral(node);
-// @override
+ @override
R visitMapLiteral2(MapLiteral2 node) => visitTypedLiteral(node);
@override
@@ -529,7 +529,7 @@
@override
R visitSetLiteral(SetLiteral node) => visitTypedLiteral(node);
-// @override
+ @override
R visitSetLiteral2(SetLiteral2 node) => visitTypedLiteral(node);
@override
@@ -549,7 +549,7 @@
R visitSingleStringLiteral(SingleStringLiteral node) =>
visitStringLiteral(node);
-// @override
+ @override
R visitSpreadElement(SpreadElement node) => visitNode(node);
R visitStatement(Statement node) => visitNode(node);
@@ -751,13 +751,13 @@
return null;
}
-// @override
+ @override
R visitCollectionForElement(CollectionForElement node) {
node.visitChildren(this);
return null;
}
-// @override
+ @override
R visitCollectionIfElement(CollectionIfElement node) {
node.visitChildren(this);
return null;
@@ -907,13 +907,13 @@
return null;
}
-// @override
+ @override
R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
node.visitChildren(this);
return null;
}
-// @override
+ @override
R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
node.visitChildren(this);
return null;
@@ -931,13 +931,13 @@
return null;
}
-// @override
+ @override
R visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
node.visitChildren(this);
return null;
}
-// @override
+ @override
R visitForPartsWithExpression(ForPartsWithExpression node) {
node.visitChildren(this);
return null;
@@ -949,7 +949,7 @@
return null;
}
-// @override
+ @override
R visitForStatement2(ForStatement2 node) {
node.visitChildren(this);
return null;
@@ -1093,19 +1093,19 @@
return null;
}
-// @override
+ @override
R visitListLiteral2(ListLiteral2 node) {
node.visitChildren(this);
return null;
}
-// @override
+ @override
R visitMapForElement(MapForElement node) {
node.visitChildren(this);
return null;
}
-// @override
+ @override
R visitMapIfElement(MapIfElement node) {
node.visitChildren(this);
return null;
@@ -1117,7 +1117,7 @@
return null;
}
-// @override
+ @override
R visitMapLiteral2(MapLiteral2 node) {
node.visitChildren(this);
return null;
@@ -1250,7 +1250,7 @@
return null;
}
-// @override
+ @override
R visitSetLiteral2(SetLiteral2 node) {
node.visitChildren(this);
return null;
@@ -1280,7 +1280,7 @@
return null;
}
-// @override
+ @override
R visitSpreadElement(SpreadElement node) {
node.visitChildren(this);
return null;
@@ -1473,10 +1473,10 @@
@override
R visitClassTypeAlias(ClassTypeAlias node) => null;
-// @override
+ @override
R visitCollectionForElement(CollectionForElement node) => null;
-// @override
+ @override
R visitCollectionIfElement(CollectionIfElement node) => null;
@override
@@ -1551,10 +1551,10 @@
@override
R visitFieldFormalParameter(FieldFormalParameter node) => null;
-// @override
+ @override
R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) => null;
-// @override
+ @override
R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) => null;
@override
@@ -1563,16 +1563,16 @@
@override
R visitFormalParameterList(FormalParameterList node) => null;
-// @override
+ @override
R visitForPartsWithDeclarations(ForPartsWithDeclarations node) => null;
-// @override
+ @override
R visitForPartsWithExpression(ForPartsWithExpression node) => null;
@override
R visitForStatement(ForStatement node) => null;
-// @override
+ @override
R visitForStatement2(ForStatement2 node) => null;
@override
@@ -1647,19 +1647,19 @@
@override
R visitListLiteral(ListLiteral node) => null;
-// @override
+ @override
R visitListLiteral2(ListLiteral2 node) => null;
-// @override
+ @override
R visitMapForElement(MapForElement node) => null;
-// @override
+ @override
R visitMapIfElement(MapIfElement node) => null;
@override
R visitMapLiteral(MapLiteral node) => null;
-// @override
+ @override
R visitMapLiteral2(MapLiteral2 node) => null;
@override
@@ -1727,7 +1727,7 @@
@override
R visitSetLiteral(SetLiteral node) => null;
-// @override
+ @override
R visitSetLiteral2(SetLiteral2 node) => null;
@override
@@ -1742,7 +1742,7 @@
@override
R visitSimpleStringLiteral(SimpleStringLiteral node) => null;
-// @override
+ @override
R visitSpreadElement(SpreadElement node) => null;
@override
@@ -1871,10 +1871,10 @@
@override
R visitClassTypeAlias(ClassTypeAlias node) => _throw(node);
-// @override
+ @override
R visitCollectionForElement(CollectionForElement node) => _throw(node);
-// @override
+ @override
R visitCollectionIfElement(CollectionIfElement node) => _throw(node);
@override
@@ -1950,11 +1950,11 @@
@override
R visitFieldFormalParameter(FieldFormalParameter node) => _throw(node);
-// @override
+ @override
R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
_throw(node);
-// @override
+ @override
R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
_throw(node);
@@ -1964,17 +1964,17 @@
@override
R visitFormalParameterList(FormalParameterList node) => _throw(node);
-// @override
+ @override
R visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
_throw(node);
-// @override
+ @override
R visitForPartsWithExpression(ForPartsWithExpression node) => _throw(node);
@override
R visitForStatement(ForStatement node) => _throw(node);
-// @override
+ @override
R visitForStatement2(ForStatement2 node) => _throw(node);
@override
@@ -2050,19 +2050,19 @@
@override
R visitListLiteral(ListLiteral node) => _throw(node);
-// @override
+ @override
R visitListLiteral2(ListLiteral2 node) => _throw(node);
-// @override
+ @override
R visitMapForElement(MapForElement node) => _throw(node);
-// @override
+ @override
R visitMapIfElement(MapIfElement node) => _throw(node);
@override
R visitMapLiteral(MapLiteral node) => _throw(node);
-// @override
+ @override
R visitMapLiteral2(MapLiteral2 node) => _throw(node);
@override
@@ -2130,7 +2130,7 @@
@override
R visitSetLiteral(SetLiteral node) => _throw(node);
-// @override
+ @override
R visitSetLiteral2(SetLiteral2 node) => _throw(node);
@override
@@ -2145,7 +2145,7 @@
@override
R visitSimpleStringLiteral(SimpleStringLiteral node) => _throw(node);
-// @override
+ @override
R visitSpreadElement(SpreadElement node) => _throw(node);
@override
@@ -2378,6 +2378,22 @@
}
@override
+ T visitCollectionForElement(CollectionForElement node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitCollectionForElement(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
+ T visitCollectionIfElement(CollectionIfElement node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitCollectionIfElement(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitComment(Comment node) {
stopwatch.start();
T result = _baseVisitor.visitComment(node);
@@ -2570,6 +2586,22 @@
}
@override
+ T visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitForEachPartsWithDeclaration(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
+ T visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitForEachPartsWithIdentifier(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitForEachStatement(ForEachStatement node) {
stopwatch.start();
T result = _baseVisitor.visitForEachStatement(node);
@@ -2586,6 +2618,22 @@
}
@override
+ T visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitForPartsWithDeclarations(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
+ T visitForPartsWithExpression(ForPartsWithExpression node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitForPartsWithExpression(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitForStatement(ForStatement node) {
stopwatch.start();
T result = _baseVisitor.visitForStatement(node);
@@ -2594,6 +2642,14 @@
}
@override
+ T visitForStatement2(ForStatement2 node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitForStatement2(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitFunctionDeclaration(FunctionDeclaration node) {
stopwatch.start();
T result = _baseVisitor.visitFunctionDeclaration(node);
@@ -2778,6 +2834,30 @@
}
@override
+ T visitListLiteral2(ListLiteral2 node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitListLiteral2(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
+ T visitMapForElement(MapForElement node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitMapForElement(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
+ T visitMapIfElement(MapIfElement node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitMapIfElement(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitMapLiteral(MapLiteral node) {
stopwatch.start();
T result = _baseVisitor.visitMapLiteral(node);
@@ -2786,6 +2866,14 @@
}
@override
+ T visitMapLiteral2(MapLiteral2 node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitMapLiteral2(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitMapLiteralEntry(MapLiteralEntry node) {
stopwatch.start();
T result = _baseVisitor.visitMapLiteralEntry(node);
@@ -2955,6 +3043,14 @@
}
@override
+ T visitSetLiteral2(SetLiteral2 node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitSetLiteral2(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitShowCombinator(ShowCombinator node) {
stopwatch.start();
T result = _baseVisitor.visitShowCombinator(node);
@@ -2987,6 +3083,14 @@
}
@override
+ T visitSpreadElement(SpreadElement node) {
+ stopwatch.start();
+ T result = _baseVisitor.visitSpreadElement(node);
+ stopwatch.stop();
+ return result;
+ }
+
+ @override
T visitStringInterpolation(StringInterpolation node) {
stopwatch.start();
T result = _baseVisitor.visitStringInterpolation(node);
@@ -3219,10 +3323,10 @@
@override
R visitClassTypeAlias(ClassTypeAlias node) => visitNode(node);
-// @override
+ @override
R visitCollectionForElement(CollectionForElement node) => visitNode(node);
-// @override
+ @override
R visitCollectionIfElement(CollectionIfElement node) => visitNode(node);
@override
@@ -3299,11 +3403,11 @@
@override
R visitFieldFormalParameter(FieldFormalParameter node) => visitNode(node);
-// @override
+ @override
R visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
visitNode(node);
-// @override
+ @override
R visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
visitNode(node);
@@ -3313,17 +3417,17 @@
@override
R visitFormalParameterList(FormalParameterList node) => visitNode(node);
-// @override
+ @override
R visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
visitNode(node);
-// @override
+ @override
R visitForPartsWithExpression(ForPartsWithExpression node) => visitNode(node);
@override
R visitForStatement(ForStatement node) => visitNode(node);
-// @override
+ @override
R visitForStatement2(ForStatement2 node) => visitNode(node);
@override
@@ -3400,19 +3504,19 @@
@override
R visitListLiteral(ListLiteral node) => visitNode(node);
-// @override
+ @override
R visitListLiteral2(ListLiteral2 node) => visitNode(node);
-// @override
+ @override
R visitMapForElement(MapForElement node) => visitNode(node);
-// @override
+ @override
R visitMapIfElement(MapIfElement node) => visitNode(node);
@override
R visitMapLiteral(MapLiteral node) => visitNode(node);
-// @override
+ @override
R visitMapLiteral2(MapLiteral2 node) => visitNode(node);
@override
@@ -3486,7 +3590,7 @@
@override
R visitSetLiteral(SetLiteral node) => visitNode(node);
-// @override
+ @override
R visitSetLiteral2(SetLiteral2 node) => visitNode(node);
@override
@@ -3501,7 +3605,7 @@
@override
R visitSimpleStringLiteral(SimpleStringLiteral node) => visitNode(node);
-// @override
+ @override
R visitSpreadElement(SpreadElement node) => visitNode(node);
@override
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 75fcb2e..3528de3 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -2101,8 +2101,7 @@
Token get endToken => _body.endToken;
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitCollectionForElement(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitCollectionForElement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -2169,8 +2168,7 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitCollectionIfElement(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitCollectionIfElement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -4749,9 +4747,8 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) =>
-// visitor.visitForEachPartsWithDeclaration(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitForEachPartsWithDeclaration(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -4793,9 +4790,8 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) =>
-// visitor.visitForEachPartsWithIdentifier(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitForEachPartsWithIdentifier(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5260,9 +5256,8 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) =>
-// visitor.visitForPartsWithDeclarations(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitForPartsWithDeclarations(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5307,9 +5302,8 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) =>
-// visitor.visitForPartsWithExpression(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) =>
+ visitor.visitForPartsWithExpression(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -5360,8 +5354,7 @@
Token get endToken => _body.endToken;
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitForStatement2(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitForStatement2(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -7868,8 +7861,7 @@
Token get endToken => rightBracket;
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitListLiteral2(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitListLiteral2(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8034,8 +8026,7 @@
Token get endToken => _body.endToken;
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitMapForElement(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitMapForElement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8102,8 +8093,7 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitMapIfElement(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitMapIfElement(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -8173,8 +8163,7 @@
NodeList<MapElement> get entries => _entries;
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitMapLiteral2(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitMapLiteral2(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -10365,8 +10354,7 @@
Token get endToken => rightBracket;
@override
-// E accept<E>(AstVisitor<E> visitor) => visitor.visitSetLiteral2(this);
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) => visitor.visitSetLiteral2(this);
@override
void visitChildren(AstVisitor visitor) {
@@ -10904,10 +10892,9 @@
}
@override
-// E accept<E>(AstVisitor<E> visitor) {
-// return visitor.visitSpreadElement(this);
-// }
- E accept<E>(AstVisitor<E> visitor) => throw new UnsupportedError('');
+ E accept<E>(AstVisitor<E> visitor) {
+ return visitor.visitSpreadElement(this);
+ }
@override
void visitChildren(AstVisitor visitor) {
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 1334a20..5d53fc0 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -247,7 +247,7 @@
cloneToken(node.semicolon));
}
-// @override
+ @override
CollectionForElement visitCollectionForElement(CollectionForElement node) =>
astFactory.collectionForElement(
forKeyword: cloneToken(node.forKeyword),
@@ -256,7 +256,7 @@
rightParenthesis: cloneToken(node.rightParenthesis),
body: cloneNode(node.body));
-// @override
+ @override
CollectionIfElement visitCollectionIfElement(CollectionIfElement node) =>
astFactory.collectionIfElement(
ifKeyword: cloneToken(node.ifKeyword),
@@ -489,7 +489,7 @@
typeParameters: cloneNode(node.typeParameters),
parameters: cloneNode(node.parameters));
-// @override
+ @override
ForEachPartsWithDeclaration visitForEachPartsWithDeclaration(
ForEachPartsWithDeclaration node) =>
astFactory.forEachPartsWithDeclaration(
@@ -497,7 +497,7 @@
inKeyword: cloneToken(node.inKeyword),
iterable: cloneNode(node.iterable));
-// @override
+ @override
ForEachPartsWithIdentifier visitForEachPartsWithIdentifier(
ForEachPartsWithIdentifier node) =>
astFactory.forEachPartsWithIdentifier(
@@ -539,7 +539,7 @@
cloneToken(node.rightDelimiter),
cloneToken(node.rightParenthesis));
-// @override
+ @override
ForPartsWithDeclarations visitForPartsWithDeclarations(
ForPartsWithDeclarations node) =>
astFactory.forPartsWithDeclarations(
@@ -549,7 +549,7 @@
rightSeparator: cloneToken(node.rightSeparator),
updaters: cloneNodeList(node.updaters));
-// @override
+ @override
ForPartsWithExpression visitForPartsWithExpression(
ForPartsWithExpression node) =>
astFactory.forPartsWithExpression(
@@ -572,7 +572,7 @@
cloneToken(node.rightParenthesis),
cloneNode(node.body));
-// @override
+ @override
ForStatement2 visitForStatement2(ForStatement2 node) =>
astFactory.forStatement2(
forKeyword: cloneToken(node.forKeyword),
@@ -768,7 +768,7 @@
cloneNodeList(node.elements),
cloneToken(node.rightBracket));
-// @override
+ @override
ListLiteral2 visitListLiteral2(ListLiteral2 node) => astFactory.listLiteral2(
constKeyword: cloneToken(node.constKeyword),
typeArguments: cloneNode(node.typeArguments),
@@ -776,7 +776,7 @@
elements: cloneNodeList(node.elements),
rightBracket: cloneToken(node.rightBracket));
-// @override
+ @override
MapForElement visitMapForElement(MapForElement node) =>
astFactory.mapForElement(
forKeyword: cloneToken(node.forKeyword),
@@ -785,7 +785,7 @@
rightParenthesis: cloneToken(node.rightParenthesis),
body: cloneNode(node.body));
-// @override
+ @override
MapIfElement visitMapIfElement(MapIfElement node) => astFactory.mapIfElement(
ifKeyword: cloneToken(node.ifKeyword),
leftParenthesis: cloneToken(node.leftParenthesis),
@@ -803,7 +803,7 @@
cloneNodeList(node.entries),
cloneToken(node.rightBracket));
-// @override
+ @override
MapLiteral2 visitMapLiteral2(MapLiteral2 node) => astFactory.mapLiteral2(
constKeyword: cloneToken(node.constKeyword),
typeArguments: cloneNode(node.typeArguments),
@@ -953,7 +953,7 @@
cloneNodeList(node.elements),
cloneToken(node.rightBracket));
-// @override
+ @override
SetLiteral2 visitSetLiteral2(SetLiteral2 node) => astFactory.setLiteral2(
constKeyword: cloneToken(node.constKeyword),
typeArguments: cloneNode(node.typeArguments),
@@ -985,7 +985,7 @@
SimpleStringLiteral visitSimpleStringLiteral(SimpleStringLiteral node) =>
astFactory.simpleStringLiteral(cloneToken(node.literal), node.value);
-// @override
+ @override
SpreadElement visitSpreadElement(SpreadElement node) =>
astFactory.spreadElement(
spreadOperator: cloneToken(node.spreadOperator),
@@ -1448,7 +1448,7 @@
isEqualTokens(node.semicolon, other.semicolon);
}
-// @override
+ @override
bool visitCollectionForElement(CollectionForElement node) {
CollectionForElement other = _other as CollectionForElement;
return isEqualTokens(node.forKeyword, other.forKeyword) &&
@@ -1458,7 +1458,7 @@
isEqualNodes(node.body, other.body);
}
-// @override
+ @override
bool visitCollectionIfElement(CollectionIfElement node) {
CollectionIfElement other = _other as CollectionIfElement;
return isEqualTokens(node.ifKeyword, other.ifKeyword) &&
@@ -1698,7 +1698,7 @@
isEqualNodes(node.identifier, other.identifier);
}
-// @override
+ @override
bool visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
ForEachPartsWithDeclaration other = _other as ForEachPartsWithDeclaration;
return isEqualNodes(node.loopVariable, other.loopVariable) &&
@@ -1706,7 +1706,7 @@
isEqualNodes(node.iterable, other.iterable);
}
-// @override
+ @override
bool visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
ForEachPartsWithIdentifier other = _other as ForEachPartsWithIdentifier;
return isEqualNodes(node.identifier, other.identifier) &&
@@ -1736,7 +1736,7 @@
isEqualTokens(node.rightParenthesis, other.rightParenthesis);
}
-// @override
+ @override
bool visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
ForPartsWithDeclarations other = _other as ForPartsWithDeclarations;
return isEqualNodes(node.variables, other.variables) &&
@@ -1746,7 +1746,7 @@
_isEqualNodeLists(node.updaters, other.updaters);
}
-// @override
+ @override
bool visitForPartsWithExpression(ForPartsWithExpression node) {
ForPartsWithExpression other = _other as ForPartsWithExpression;
return isEqualNodes(node.initialization, other.initialization) &&
@@ -1771,7 +1771,7 @@
isEqualNodes(node.body, other.body);
}
-// @override
+ @override
bool visitForStatement2(ForStatement2 node) {
ForStatement2 other = _other as ForStatement2;
return isEqualTokens(node.forKeyword, other.forKeyword) &&
@@ -1993,7 +1993,7 @@
isEqualTokens(node.rightBracket, other.rightBracket);
}
-// @override
+ @override
bool visitListLiteral2(ListLiteral2 node) {
ListLiteral2 other = _other as ListLiteral2;
return isEqualTokens(node.constKeyword, other.constKeyword) &&
@@ -2003,7 +2003,7 @@
isEqualTokens(node.rightBracket, other.rightBracket);
}
-// @override
+ @override
bool visitMapForElement(MapForElement node) {
MapForElement other = _other as MapForElement;
return isEqualTokens(node.forKeyword, other.forKeyword) &&
@@ -2013,7 +2013,7 @@
isEqualNodes(node.body, other.body);
}
-// @override
+ @override
bool visitMapIfElement(MapIfElement node) {
MapIfElement other = _other as MapIfElement;
return isEqualTokens(node.ifKeyword, other.ifKeyword) &&
@@ -2035,7 +2035,7 @@
isEqualTokens(node.rightBracket, other.rightBracket);
}
-// @override
+ @override
bool visitMapLiteral2(MapLiteral2 node) {
MapLiteral2 other = _other as MapLiteral2;
return isEqualTokens(node.constKeyword, other.constKeyword) &&
@@ -2232,7 +2232,7 @@
isEqualTokens(node.rightBracket, other.rightBracket);
}
-// @override
+ @override
bool visitSetLiteral2(SetLiteral2 node) {
SetLiteral2 other = _other as SetLiteral2;
return isEqualTokens(node.constKeyword, other.constKeyword) &&
@@ -2273,7 +2273,7 @@
failIfNotEqual(node, node.value, other, other.value);
}
-// @override
+ @override
bool visitSpreadElement(SpreadElement node) {
SpreadElement other = _other as SpreadElement;
return isEqualTokens(node.spreadOperator, other.spreadOperator) &&
@@ -3298,7 +3298,7 @@
_cloneNode(node.implementsClause),
_mapToken(node.semicolon));
-// @override
+ @override
CollectionForElement visitCollectionForElement(CollectionForElement node) =>
astFactory.collectionForElement(
forKeyword: _mapToken(node.forKeyword),
@@ -3307,7 +3307,7 @@
rightParenthesis: _mapToken(node.rightParenthesis),
body: _cloneNode(node.body));
-// @override
+ @override
CollectionIfElement visitCollectionIfElement(CollectionIfElement node) =>
astFactory.collectionIfElement(
ifKeyword: _mapToken(node.ifKeyword),
@@ -3532,7 +3532,7 @@
typeParameters: _cloneNode(node.typeParameters),
parameters: _cloneNode(node.parameters));
-// @override
+ @override
ForEachPartsWithDeclaration visitForEachPartsWithDeclaration(
ForEachPartsWithDeclaration node) =>
astFactory.forEachPartsWithDeclaration(
@@ -3540,7 +3540,7 @@
inKeyword: _mapToken(node.inKeyword),
iterable: _cloneNode(node.iterable));
-// @override
+ @override
ForEachPartsWithIdentifier visitForEachPartsWithIdentifier(
ForEachPartsWithIdentifier node) =>
astFactory.forEachPartsWithIdentifier(
@@ -3582,7 +3582,7 @@
_mapToken(node.rightDelimiter),
_mapToken(node.rightParenthesis));
-// @override
+ @override
ForPartsWithDeclarations visitForPartsWithDeclarations(
ForPartsWithDeclarations node) =>
astFactory.forPartsWithDeclarations(
@@ -3592,7 +3592,7 @@
rightSeparator: _mapToken(node.rightSeparator),
updaters: _cloneNodeList(node.updaters));
-// @override
+ @override
ForPartsWithExpression visitForPartsWithExpression(
ForPartsWithExpression node) =>
astFactory.forPartsWithExpression(
@@ -3615,7 +3615,7 @@
_mapToken(node.rightParenthesis),
_cloneNode(node.body));
-// @override
+ @override
ForStatement2 visitForStatement2(ForStatement2 node) =>
astFactory.forStatement2(
forKeyword: _mapToken(node.forKeyword),
@@ -3851,7 +3851,7 @@
return copy;
}
-// @override
+ @override
ListLiteral2 visitListLiteral2(ListLiteral2 node) => astFactory.listLiteral2(
constKeyword: _mapToken(node.constKeyword),
typeArguments: _cloneNode(node.typeArguments),
@@ -3859,7 +3859,7 @@
elements: _cloneNodeList(node.elements),
rightBracket: _mapToken(node.rightBracket));
-// @override
+ @override
MapForElement visitMapForElement(MapForElement node) =>
astFactory.mapForElement(
forKeyword: _mapToken(node.forKeyword),
@@ -3868,7 +3868,7 @@
rightParenthesis: _mapToken(node.rightParenthesis),
body: _cloneNode(node.body));
-// @override
+ @override
MapIfElement visitMapIfElement(MapIfElement node) => astFactory.mapIfElement(
ifKeyword: _mapToken(node.ifKeyword),
leftParenthesis: _mapToken(node.leftParenthesis),
@@ -3890,7 +3890,7 @@
return copy;
}
-// @override
+ @override
MapLiteral2 visitMapLiteral2(MapLiteral2 node) => astFactory.mapLiteral2(
constKeyword: _mapToken(node.constKeyword),
typeArguments: _cloneNode(node.typeArguments),
@@ -4087,7 +4087,7 @@
return copy;
}
-// @override
+ @override
SetLiteral2 visitSetLiteral2(SetLiteral2 node) => astFactory.setLiteral2(
constKeyword: _mapToken(node.constKeyword),
typeArguments: _cloneNode(node.typeArguments),
@@ -4137,7 +4137,7 @@
return copy;
}
-// @override
+ @override
SpreadElement visitSpreadElement(SpreadElement node) =>
astFactory.spreadElement(
spreadOperator: _mapToken(node.spreadOperator),
@@ -4776,7 +4776,7 @@
return visitAnnotatedNode(node);
}
-// @override
+ @override
bool visitCollectionForElement(CollectionForElement node) {
if (identical(node.forLoopParts, _oldNode)) {
(node as CollectionForElementImpl).forLoopParts =
@@ -4789,7 +4789,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitCollectionIfElement(CollectionIfElement node) {
if (identical(node.condition, _oldNode)) {
(node as CollectionIfElementImpl).condition = _newNode as Expression;
@@ -5047,7 +5047,7 @@
return visitNormalFormalParameter(node);
}
-// @override
+ @override
bool visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
if (identical(node.loopVariable, _oldNode)) {
(node as ForEachPartsWithDeclarationImpl).loopVariable =
@@ -5061,7 +5061,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
if (identical(node.identifier, _oldNode)) {
(node as ForEachPartsWithIdentifierImpl).identifier =
@@ -5101,7 +5101,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
if (identical(node.variables, _oldNode)) {
(node as ForPartsWithDeclarationsImpl).variables =
@@ -5116,7 +5116,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitForPartsWithExpression(ForPartsWithExpression node) {
if (identical(node.initialization, _oldNode)) {
(node as ForPartsWithExpressionImpl).initialization =
@@ -5151,7 +5151,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitForStatement2(ForStatement2 node) {
if (identical(node.forLoopParts, _oldNode)) {
(node as ForStatement2Impl).forLoopParts = _newNode as ForLoopParts;
@@ -5409,7 +5409,7 @@
return visitTypedLiteral(node);
}
-// @override
+ @override
bool visitListLiteral2(ListLiteral2 node) {
if (identical(node.typeArguments, _oldNode)) {
(node as ListLiteral2Impl).typeArguments = _newNode as TypeArgumentList;
@@ -5420,7 +5420,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitMapForElement(MapForElement node) {
if (identical(node.forLoopParts, _oldNode)) {
(node as MapForElementImpl).forLoopParts = _newNode as ForLoopParts;
@@ -5432,7 +5432,7 @@
return visitNode(node);
}
-// @override
+ @override
bool visitMapIfElement(MapIfElement node) {
if (identical(node.condition, _oldNode)) {
(node as MapIfElementImpl).condition = _newNode as Expression;
@@ -5455,7 +5455,7 @@
return visitTypedLiteral(node);
}
-// @override
+ @override
bool visitMapLiteral2(MapLiteral2 node) {
if (identical(node.typeArguments, _oldNode)) {
(node as MapLiteral2Impl).typeArguments = _newNode as TypeArgumentList;
@@ -5702,7 +5702,7 @@
return visitTypedLiteral(node);
}
-// @override
+ @override
bool visitSetLiteral2(SetLiteral2 node) {
if (identical(node.typeArguments, _oldNode)) {
(node as SetLiteral2Impl).typeArguments = _newNode as TypeArgumentList;
@@ -5736,7 +5736,7 @@
@override
bool visitSimpleStringLiteral(SimpleStringLiteral node) => visitNode(node);
-// @override
+ @override
bool visitSpreadElement(SpreadElement node) {
if (identical(node.expression, _oldNode)) {
(node as SpreadElementImpl).expression = _newNode as Expression;
@@ -6212,7 +6212,7 @@
_isEqualTokens(node.semicolon, toNode.semicolon));
}
-// @override
+ @override
bool visitCollectionForElement(CollectionForElement node) {
CollectionForElement toNode = this._toNode as CollectionForElement;
return _and(
@@ -6223,7 +6223,7 @@
_isEqualNodes(node.body, toNode.body));
}
-// @override
+ @override
bool visitCollectionIfElement(CollectionIfElement node) {
CollectionIfElement toNode = this._toNode as CollectionIfElement;
return _and(
@@ -6505,7 +6505,7 @@
_isEqualNodes(node.identifier, toNode.identifier));
}
-// @override
+ @override
bool visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
ForEachPartsWithDeclaration toNode =
this._toNode as ForEachPartsWithDeclaration;
@@ -6515,7 +6515,7 @@
_isEqualNodes(node.iterable, toNode.iterable));
}
-// @override
+ @override
bool visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
ForEachPartsWithIdentifier toNode =
this._toNode as ForEachPartsWithIdentifier;
@@ -6525,7 +6525,7 @@
_isEqualNodes(node.iterable, toNode.iterable));
}
-// @override
+ @override
bool visitForEachStatement(ForEachStatement node) {
ForEachStatement toNode = this._toNode as ForEachStatement;
return _and(
@@ -6550,7 +6550,7 @@
_isEqualTokens(node.rightParenthesis, toNode.rightParenthesis));
}
-// @override
+ @override
bool visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
ForPartsWithDeclarations toNode = this._toNode as ForPartsWithDeclarations;
return _and(
@@ -6561,7 +6561,7 @@
_isEqualNodeLists(node.updaters, toNode.updaters));
}
-// @override
+ @override
bool visitForPartsWithExpression(ForPartsWithExpression node) {
ForPartsWithExpression toNode = this._toNode as ForPartsWithExpression;
return _and(
@@ -6588,7 +6588,7 @@
_isEqualNodes(node.body, toNode.body));
}
-// @override
+ @override
bool visitForStatement2(ForStatement2 node) {
ForStatement2 toNode = this._toNode as ForStatement2;
return _and(
@@ -6877,7 +6877,7 @@
return false;
}
-// @override
+ @override
bool visitListLiteral2(ListLiteral2 node) {
ListLiteral2 toNode = this._toNode as ListLiteral2;
if (_and(
@@ -6892,7 +6892,7 @@
return false;
}
-// @override
+ @override
bool visitMapForElement(MapForElement node) {
MapForElement toNode = this._toNode as MapForElement;
return _and(
@@ -6903,7 +6903,7 @@
_isEqualNodes(node.body, toNode.body));
}
-// @override
+ @override
bool visitMapIfElement(MapIfElement node) {
MapIfElement toNode = this._toNode as MapIfElement;
return _and(
@@ -6931,7 +6931,7 @@
return false;
}
-// @override
+ @override
bool visitMapLiteral2(MapLiteral2 node) {
MapLiteral2 toNode = this._toNode as MapLiteral2;
if (_and(
@@ -7199,7 +7199,7 @@
return false;
}
-// @override
+ @override
bool visitSetLiteral2(SetLiteral2 node) {
SetLiteral2 toNode = this._toNode as SetLiteral2;
if (_and(
@@ -7260,7 +7260,7 @@
return false;
}
-// @override
+ @override
bool visitSpreadElement(SpreadElement node) {
SpreadElement toNode = this._toNode as SpreadElement;
return _and(_isEqualTokens(node.spreadOperator, toNode.spreadOperator),
@@ -7981,7 +7981,7 @@
_writer.print(";");
}
-// @override
+ @override
void visitCollectionForElement(CollectionForElement node) {
_writer.print('for (');
_visitNode(node.forLoopParts);
@@ -7989,7 +7989,7 @@
_visitNode(node.body);
}
-// @override
+ @override
void visitCollectionIfElement(CollectionIfElement node) {
_writer.print('if (');
_visitNode(node.condition);
@@ -8188,14 +8188,14 @@
_visitNode(node.parameters);
}
-// @override
+ @override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
_visitNode(node.loopVariable);
_writer.print(' in ');
_visitNode(node.iterable);
}
-// @override
+ @override
void visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
_visitNode(node.identifier);
_writer.print(' in ');
@@ -8248,7 +8248,7 @@
_writer.print(')');
}
-// @override
+ @override
void visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
_visitNode(node.variables);
_writer.print(';');
@@ -8257,7 +8257,7 @@
_visitNodeListWithSeparatorAndPrefix(' ', node.updaters, ', ');
}
-// @override
+ @override
void visitForPartsWithExpression(ForPartsWithExpression node) {
_visitNode(node.initialization);
_writer.print(';');
@@ -8283,7 +8283,7 @@
_visitNode(node.body);
}
-// @override
+ @override
void visitForStatement2(ForStatement2 node) {
_writer.print('for (');
_visitNode(node.forLoopParts);
@@ -8488,7 +8488,7 @@
_writer.print("]");
}
-// @override
+ @override
void visitListLiteral2(ListLiteral2 node) {
_visitTokenWithSuffix(node.constKeyword, ' ');
_visitNode(node.typeArguments);
@@ -8497,7 +8497,7 @@
_writer.print(']');
}
-// @override
+ @override
void visitMapForElement(MapForElement node) {
_writer.print('for (');
_visitNode(node.forLoopParts);
@@ -8505,7 +8505,7 @@
_visitNode(node.body);
}
-// @override
+ @override
void visitMapIfElement(MapIfElement node) {
_writer.print('if (');
_visitNode(node.condition);
@@ -8526,7 +8526,7 @@
_writer.print("}");
}
-// @override
+ @override
void visitMapLiteral2(MapLiteral2 node) {
_visitTokenWithSuffix(node.constKeyword, ' ');
_visitNode(node.typeArguments);
@@ -8711,7 +8711,7 @@
_writer.print("}");
}
-// @override
+ @override
void visitSetLiteral2(SetLiteral2 node) {
_visitTokenWithSuffix(node.constKeyword, ' ');
_visitNode(node.typeArguments);
@@ -8748,7 +8748,7 @@
_writer.print(node.literal.lexeme);
}
-// @override
+ @override
void visitSpreadElement(SpreadElement node) {
_writer.print(node.spreadOperator.lexeme);
_visitNode(node.expression);
@@ -9325,7 +9325,7 @@
sink.write(";");
}
-// @override
+ @override
void visitCollectionForElement(CollectionForElement node) {
sink.write('for (');
safelyVisitNode(node.forLoopParts);
@@ -9333,7 +9333,7 @@
safelyVisitNode(node.body);
}
-// @override
+ @override
void visitCollectionIfElement(CollectionIfElement node) {
sink.write('if (');
safelyVisitNode(node.condition);
@@ -9532,14 +9532,14 @@
safelyVisitNode(node.parameters);
}
-// @override
+ @override
void visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) {
safelyVisitNode(node.loopVariable);
sink.write(' in ');
safelyVisitNode(node.iterable);
}
-// @override
+ @override
void visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) {
safelyVisitNode(node.identifier);
sink.write(' in ');
@@ -9592,7 +9592,7 @@
sink.write(')');
}
-// @override
+ @override
void visitForPartsWithDeclarations(ForPartsWithDeclarations node) {
safelyVisitNode(node.variables);
sink.write(';');
@@ -9601,7 +9601,7 @@
safelyVisitNodeListWithSeparatorAndPrefix(' ', node.updaters, ', ');
}
-// @override
+ @override
void visitForPartsWithExpression(ForPartsWithExpression node) {
safelyVisitNode(node.initialization);
sink.write(';');
@@ -9627,7 +9627,7 @@
safelyVisitNode(node.body);
}
-// @override
+ @override
void visitForStatement2(ForStatement2 node) {
sink.write('for (');
safelyVisitNode(node.forLoopParts);
@@ -9829,7 +9829,7 @@
sink.write("]");
}
-// @override
+ @override
void visitListLiteral2(ListLiteral2 node) {
safelyVisitTokenWithSuffix(node.constKeyword, ' ');
safelyVisitNode(node.typeArguments);
@@ -9838,7 +9838,7 @@
sink.write(']');
}
-// @override
+ @override
void visitMapForElement(MapForElement node) {
sink.write('for (');
safelyVisitNode(node.forLoopParts);
@@ -9846,7 +9846,7 @@
safelyVisitNode(node.body);
}
-// @override
+ @override
void visitMapIfElement(MapIfElement node) {
sink.write('if (');
safelyVisitNode(node.condition);
@@ -9864,7 +9864,7 @@
sink.write("}");
}
-// @override
+ @override
void visitMapLiteral2(MapLiteral2 node) {
safelyVisitTokenWithSuffix(node.constKeyword, ' ');
safelyVisitNode(node.typeArguments);
@@ -10046,7 +10046,7 @@
sink.write("}");
}
-// @override
+ @override
void visitSetLiteral2(SetLiteral2 node) {
safelyVisitTokenWithSuffix(node.constKeyword, ' ');
safelyVisitNode(node.typeArguments);
@@ -10083,7 +10083,7 @@
sink.write(node.literal.lexeme);
}
-// @override
+ @override
void visitSpreadElement(SpreadElement node) {
sink.write(node.spreadOperator.lexeme);
safelyVisitNode(node.expression);
diff --git a/pkg/analyzer/pubspec.yaml b/pkg/analyzer/pubspec.yaml
index 91184d1..053be37 100644
--- a/pkg/analyzer/pubspec.yaml
+++ b/pkg/analyzer/pubspec.yaml
@@ -1,5 +1,5 @@
name: analyzer
-version: 0.34.2
+version: 0.35.0-dev
author: Dart Team <misc@dartlang.org>
description: Static analyzer for Dart.
homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer
diff --git a/pkg/analyzer/test/src/dart/ast/utilities_test.dart b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
index 8ce134b..34e5ffe 100644
--- a/pkg/analyzer/test/src/dart/ast/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
@@ -543,6 +543,45 @@
expect(toNode.staticType, same(staticType));
}
+ void test_visitCollectionForElement() {
+ CollectionForElement createNode() => astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('a'),
+ iterable: AstTestFactory.identifier3('b')),
+ body: AstTestFactory.identifier3('c'));
+
+ DartType typeC = ElementFactory.classElement2("C").type;
+
+ CollectionForElement fromNode = createNode();
+ (fromNode.body as SimpleIdentifier).staticType = typeC;
+
+ CollectionForElement toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.body as SimpleIdentifier).staticType, same(typeC));
+ }
+
+ void test_visitCollectionIfElement() {
+ CollectionIfElement createNode() => astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('a'),
+ thenElement: AstTestFactory.identifier3('b'),
+ elseElement: AstTestFactory.identifier3('c'));
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+ DartType typeC = ElementFactory.classElement2("C").type;
+
+ CollectionIfElement fromNode = createNode();
+ (fromNode.condition as SimpleIdentifier).staticType = typeA;
+ (fromNode.thenElement as SimpleIdentifier).staticType = typeB;
+ (fromNode.elseElement as SimpleIdentifier).staticType = typeC;
+
+ CollectionIfElement toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect(toNode.condition.staticType, same(typeA));
+ expect((toNode.thenElement as SimpleIdentifier).staticType, same(typeB));
+ expect((toNode.elseElement as SimpleIdentifier).staticType, same(typeC));
+ }
+
void test_visitCompilationUnit() {
CompilationUnit fromNode = AstTestFactory.compilationUnit();
CompilationUnitElement element = new CompilationUnitElementImpl();
@@ -617,6 +656,115 @@
expect(toNode.element, same(element));
}
+ void test_visitForEachPartsWithDeclaration() {
+ ForEachPartsWithDeclaration createNode() =>
+ astFactory.forEachPartsWithDeclaration(
+ loopVariable: AstTestFactory.declaredIdentifier3('a'),
+ iterable: AstTestFactory.identifier3('b'));
+
+ DartType typeB = ElementFactory.classElement2("B").type;
+
+ ForEachPartsWithDeclaration fromNode = createNode();
+ (fromNode.iterable as SimpleIdentifier).staticType = typeB;
+
+ ForEachPartsWithDeclaration toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.iterable as SimpleIdentifier).staticType, same(typeB));
+ }
+
+ void test_visitForEachPartsWithIdentifier() {
+ ForEachPartsWithIdentifier createNode() =>
+ astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('a'),
+ iterable: AstTestFactory.identifier3('b'));
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+
+ ForEachPartsWithIdentifier fromNode = createNode();
+ fromNode.identifier.staticType = typeA;
+ (fromNode.iterable as SimpleIdentifier).staticType = typeB;
+
+ ForEachPartsWithIdentifier toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect(toNode.identifier.staticType, same(typeA));
+ expect((toNode.iterable as SimpleIdentifier).staticType, same(typeB));
+ }
+
+ void test_visitForPartsWithDeclarations() {
+ ForPartsWithDeclarations createNode() =>
+ astFactory.forPartsWithDeclarations(
+ variables: AstTestFactory.variableDeclarationList2(
+ Keyword.VAR, [AstTestFactory.variableDeclaration('a')]),
+ condition: AstTestFactory.identifier3('b'),
+ updaters: [AstTestFactory.identifier3('c')]);
+
+ DartType typeB = ElementFactory.classElement2("B").type;
+ DartType typeC = ElementFactory.classElement2("C").type;
+
+ ForPartsWithDeclarations fromNode = createNode();
+ (fromNode.condition as SimpleIdentifier).staticType = typeB;
+ (fromNode.updaters[0] as SimpleIdentifier).staticType = typeC;
+
+ ForPartsWithDeclarations toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.condition as SimpleIdentifier).staticType, same(typeB));
+ expect((toNode.updaters[0] as SimpleIdentifier).staticType, same(typeC));
+ }
+
+ void test_visitForPartsWithExpression() {
+ ForPartsWithExpression createNode() => astFactory.forPartsWithExpression(
+ initialization: AstTestFactory.identifier3('a'),
+ condition: AstTestFactory.identifier3('b'),
+ updaters: [AstTestFactory.identifier3('c')]);
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+ DartType typeC = ElementFactory.classElement2("C").type;
+
+ ForPartsWithExpression fromNode = createNode();
+ (fromNode.initialization as SimpleIdentifier).staticType = typeA;
+ (fromNode.condition as SimpleIdentifier).staticType = typeB;
+ (fromNode.updaters[0] as SimpleIdentifier).staticType = typeC;
+
+ ForPartsWithExpression toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.initialization as SimpleIdentifier).staticType, same(typeA));
+ expect((toNode.condition as SimpleIdentifier).staticType, same(typeB));
+ expect((toNode.updaters[0] as SimpleIdentifier).staticType, same(typeC));
+ }
+
+ void test_visitForStatement2() {
+ ForStatement2 createNode() => astFactory.forStatement2(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('a'),
+ iterable: AstTestFactory.identifier3('b')),
+ body: AstTestFactory.expressionStatement(
+ AstTestFactory.identifier3('c')));
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+ DartType typeC = ElementFactory.classElement2("C").type;
+
+ ForStatement2 fromNode = createNode();
+ ForEachPartsWithIdentifier fromForLoopParts = fromNode.forLoopParts;
+ fromForLoopParts.identifier.staticType = typeA;
+ (fromForLoopParts.iterable as SimpleIdentifier).staticType = typeB;
+ ((fromNode.body as ExpressionStatement).expression as SimpleIdentifier)
+ .staticType = typeC;
+
+ ForStatement2 toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ ForEachPartsWithIdentifier toForLoopParts = fromNode.forLoopParts;
+ expect(toForLoopParts.identifier.staticType, same(typeA));
+ expect(
+ (toForLoopParts.iterable as SimpleIdentifier).staticType, same(typeB));
+ expect(
+ ((toNode.body as ExpressionStatement).expression as SimpleIdentifier)
+ .staticType,
+ same(typeC));
+ }
+
void test_visitFunctionExpression() {
FunctionExpressionImpl fromNode = AstTestFactory.functionExpression2(
AstTestFactory.formalParameterList(),
@@ -741,6 +889,74 @@
expect(toNode.staticType, same(staticType));
}
+ void test_visitListLiteral2() {
+ ListLiteral2 createNode() => astFactory.listLiteral2(
+ typeArguments:
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')]),
+ elements: [AstTestFactory.identifier3('b')]);
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+
+ ListLiteral2 fromNode = createNode();
+ (fromNode.typeArguments.arguments[0] as TypeName).type = typeA;
+ (fromNode.elements[0] as SimpleIdentifier).staticType = typeB;
+
+ ListLiteral2 toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.typeArguments.arguments[0] as TypeName).type, same(typeA));
+ expect((toNode.elements[0] as SimpleIdentifier).staticType, same(typeB));
+ }
+
+ void test_visitMapForElement() {
+ MapForElement createNode() => astFactory.mapForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('a'),
+ iterable: AstTestFactory.identifier3('b')),
+ body: AstTestFactory.mapLiteralEntry3('c', 'd'));
+
+ DartType typeC = ElementFactory.classElement2("C").type;
+
+ MapForElement fromNode = createNode();
+ (fromNode.body as MapLiteralEntry).key.staticType = typeC;
+
+ MapForElement toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.body as MapLiteralEntry).key.staticType, same(typeC));
+ }
+
+ void test_visitMapIfElement() {
+ MapIfElement createNode() => astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('a'),
+ thenElement: AstTestFactory.mapLiteralEntry3('b', 'c'),
+ elseElement: AstTestFactory.mapLiteralEntry3('d', 'e'));
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+ DartType typeC = ElementFactory.classElement2("C").type;
+ DartType typeD = ElementFactory.classElement2("D").type;
+ DartType typeE = ElementFactory.classElement2("E").type;
+
+ MapIfElement fromNode = createNode();
+ MapLiteralEntry fromThen = fromNode.thenElement as MapLiteralEntry;
+ MapLiteralEntry fromElse = fromNode.elseElement as MapLiteralEntry;
+ (fromNode.condition as SimpleIdentifier).staticType = typeA;
+ (fromThen.key as SimpleStringLiteral).staticType = typeB;
+ (fromThen.value as SimpleStringLiteral).staticType = typeC;
+ (fromElse.key as SimpleStringLiteral).staticType = typeD;
+ (fromElse.value as SimpleStringLiteral).staticType = typeE;
+
+ MapIfElement toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ MapLiteralEntry toThen = toNode.thenElement as MapLiteralEntry;
+ MapLiteralEntry toElse = toNode.elseElement as MapLiteralEntry;
+ expect(toNode.condition.staticType, same(typeA));
+ expect((toThen.key as SimpleStringLiteral).staticType, same(typeB));
+ expect((toThen.value as SimpleStringLiteral).staticType, same(typeC));
+ expect((toElse.key as SimpleStringLiteral).staticType, same(typeD));
+ expect((toElse.value as SimpleStringLiteral).staticType, same(typeE));
+ }
+
void test_visitMapLiteral() {
MapLiteral fromNode = AstTestFactory.mapLiteral2();
DartType staticType = ElementFactory.classElement2("C").type;
@@ -750,6 +966,33 @@
expect(toNode.staticType, same(staticType));
}
+ void test_visitMapLiteral2() {
+ MapLiteral2 createNode() => astFactory.mapLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('A'), AstTestFactory.typeName4('B')]),
+ entries: [AstTestFactory.mapLiteralEntry3('c', 'd')]);
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+ DartType typeC = ElementFactory.classElement2("C").type;
+ DartType typeD = ElementFactory.classElement2("D").type;
+
+ MapLiteral2 fromNode = createNode();
+ (fromNode.typeArguments.arguments[0] as TypeName).type = typeA;
+ (fromNode.typeArguments.arguments[1] as TypeName).type = typeB;
+ MapLiteralEntry fromEntry = fromNode.entries[0] as MapLiteralEntry;
+ (fromEntry.key as SimpleStringLiteral).staticType = typeC;
+ (fromEntry.value as SimpleStringLiteral).staticType = typeD;
+
+ MapLiteral2 toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.typeArguments.arguments[0] as TypeName).type, same(typeA));
+ expect((toNode.typeArguments.arguments[1] as TypeName).type, same(typeB));
+ MapLiteralEntry toEntry = fromNode.entries[0] as MapLiteralEntry;
+ expect((toEntry.key as SimpleStringLiteral).staticType, same(typeC));
+ expect((toEntry.value as SimpleStringLiteral).staticType, same(typeD));
+ }
+
void test_visitMethodInvocation() {
MethodInvocation fromNode = AstTestFactory.methodInvocation2("m");
MethodInvocation toNode = AstTestFactory.methodInvocation2("m");
@@ -886,6 +1129,25 @@
expect(toNode.staticType, same(staticType));
}
+ void test_visitSetLiteral2() {
+ SetLiteral2 createNode() => astFactory.setLiteral2(
+ typeArguments:
+ AstTestFactory.typeArgumentList([AstTestFactory.typeName4('A')]),
+ elements: [AstTestFactory.identifier3('b')]);
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+ DartType typeB = ElementFactory.classElement2("B").type;
+
+ SetLiteral2 fromNode = createNode();
+ (fromNode.typeArguments.arguments[0] as TypeName).type = typeA;
+ (fromNode.elements[0] as SimpleIdentifier).staticType = typeB;
+
+ SetLiteral2 toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect((toNode.typeArguments.arguments[0] as TypeName).type, same(typeA));
+ expect((toNode.elements[0] as SimpleIdentifier).staticType, same(typeB));
+ }
+
void test_visitSimpleIdentifier() {
SimpleIdentifier fromNode = AstTestFactory.identifier3("x");
MethodElement staticElement = ElementFactory.methodElement(
@@ -912,6 +1174,27 @@
expect(toNode.staticType, same(staticType));
}
+ void test_visitSpreadElement() {
+ SpreadElement createNode() => astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.identifier3('a')]));
+
+ DartType typeA = ElementFactory.classElement2("A").type;
+
+ SpreadElement fromNode = createNode();
+ ((fromNode.expression as ListLiteral2).elements[0] as SimpleIdentifier)
+ .staticType = typeA;
+
+ SpreadElement toNode = createNode();
+ ResolutionCopier.copyResolutionData(fromNode, toNode);
+ expect(
+ ((toNode.expression as ListLiteral2).elements[0] as SimpleIdentifier)
+ .staticType,
+ same(typeA));
+ }
+
void test_visitStringInterpolation() {
StringInterpolation fromNode =
AstTestFactory.string([AstTestFactory.interpolationString("a", "'a'")]);
@@ -1449,6 +1732,33 @@
_assertSource("@deprecated class C = S with M1;", declaration);
}
+ void test_visitCollectionForElement() {
+ _assertSource(
+ 'for (e in l) 0',
+ astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.integer(0)));
+ }
+
+ void test_visitCollectionIfElement_else() {
+ _assertSource(
+ 'if (b) 1 else 0',
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1),
+ elseElement: AstTestFactory.integer(0)));
+ }
+
+ void test_visitCollectionIfElement_then() {
+ _assertSource(
+ 'if (b) 1',
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1)));
+ }
+
void test_visitComment() {
_assertSource(
"",
@@ -1881,6 +2191,22 @@
_assertSource("covariant A this.a", expected);
}
+ void test_visitForEachPartsWithDeclaration() {
+ _assertSource(
+ 'var e in l',
+ astFactory.forEachPartsWithDeclaration(
+ loopVariable: AstTestFactory.declaredIdentifier3('e'),
+ iterable: AstTestFactory.identifier3('l')));
+ }
+
+ void test_visitForEachPartsWithIdentifier() {
+ _assertSource(
+ 'e in l',
+ astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')));
+ }
+
void test_visitForEachStatement_declared() {
_assertSource(
"for (var a in b) {}",
@@ -2086,6 +2412,36 @@
]));
}
+ void test_visitForPartsWithDeclarations() {
+ _assertSource(
+ 'var v; b; u',
+ astFactory.forPartsWithDeclarations(
+ variables: AstTestFactory.variableDeclarationList2(
+ Keyword.VAR, [AstTestFactory.variableDeclaration('v')]),
+ condition: AstTestFactory.identifier3('b'),
+ updaters: [AstTestFactory.identifier3('u')]));
+ }
+
+ void test_visitForPartsWithExpression() {
+ _assertSource(
+ 'v; b; u',
+ astFactory.forPartsWithExpression(
+ initialization: AstTestFactory.identifier3('v'),
+ condition: AstTestFactory.identifier3('b'),
+ updaters: [AstTestFactory.identifier3('u')]));
+ }
+
+ void test_visitForStatement2() {
+ _assertSource(
+ 'for (e in l) s;',
+ astFactory.forStatement2(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.expressionStatement(
+ AstTestFactory.identifier3('s'))));
+ }
+
void test_visitForStatement_c() {
_assertSource(
"for (; c;) {}",
@@ -2638,6 +2994,62 @@
AstTestFactory.libraryIdentifier([AstTestFactory.identifier3("a")]));
}
+ void test_visitListLiteral2_complex() {
+ _assertSource(
+ '<int>[0, for (e in l) 0, if (b) 1, ...[0]]',
+ astFactory.listLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [
+ AstTestFactory.integer(0),
+ astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.integer(0)),
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1)),
+ astFactory.spreadElement(
+ spreadOperator: TokenFactory.tokenFromType(
+ TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)]))
+ ]));
+ }
+
+ void test_visitListLiteral2_withConst_withoutTypeArgs() {
+ _assertSource(
+ 'const [0]',
+ astFactory.listLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitListLiteral2_withConst_withTypeArgs() {
+ _assertSource(
+ 'const <int>[0]',
+ astFactory.listLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitListLiteral2_withoutConst_withoutTypeArgs() {
+ _assertSource(
+ '[0]', astFactory.listLiteral2(elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitListLiteral2_withoutConst_withTypeArgs() {
+ _assertSource(
+ '<int>[0]',
+ astFactory.listLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
void test_visitListLiteral_const() {
_assertSource("const []", AstTestFactory.listLiteral2(Keyword.CONST, null));
}
@@ -2656,6 +3068,97 @@
]));
}
+ void test_visitMapForElement() {
+ _assertSource(
+ "for (e in l) 'a' : 'b'",
+ astFactory.mapForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.mapLiteralEntry3('a', 'b')));
+ }
+
+ void test_visitMapIfElement_else() {
+ _assertSource(
+ "if (b) 'a' : 'b' else 'c' : 'd'",
+ astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.mapLiteralEntry3('a', 'b'),
+ elseElement: AstTestFactory.mapLiteralEntry3('c', 'd')));
+ }
+
+ void test_visitMapIfElement_then() {
+ _assertSource(
+ "if (b) 'a' : 'b'",
+ astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.mapLiteralEntry3('a', 'b')));
+ }
+
+ void test_visitMapLiteral2_complex() {
+ _assertSource(
+ "<String, String>{'a' : 'b', for (c in d) 'e' : 'f', if (g) 'h' : 'i', ...{'j' : 'k'}}",
+ astFactory.mapLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ entries: [
+ AstTestFactory.mapLiteralEntry3('a', 'b'),
+ astFactory.mapForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('c'),
+ iterable: AstTestFactory.identifier3('d')),
+ body: AstTestFactory.mapLiteralEntry3('e', 'f')),
+ astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('g'),
+ thenElement: AstTestFactory.mapLiteralEntry3('h', 'i')),
+ astFactory.spreadElement(
+ spreadOperator: TokenFactory.tokenFromType(
+ TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory.mapLiteral2(
+ entries: [AstTestFactory.mapLiteralEntry3('j', 'k')]))
+ ]));
+ }
+
+ void test_visitMapLiteral2_withConst_withoutTypeArgs() {
+ _assertSource(
+ "const {'a' : 'b'}",
+ astFactory.mapLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
+ void test_visitMapLiteral2_withConst_withTypeArgs() {
+ _assertSource(
+ "const <String, String>{'a' : 'b'}",
+ astFactory.mapLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
+ void test_visitMapLiteral2_withoutConst_withoutTypeArgs() {
+ _assertSource(
+ "{'a' : 'b'}",
+ astFactory
+ .mapLiteral2(entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
+ void test_visitMapLiteral2_withoutConst_withTypeArgs() {
+ _assertSource(
+ "<String, String>{'a' : 'b'}",
+ astFactory.mapLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
void test_visitMapLiteral_const() {
_assertSource("const {}", AstTestFactory.mapLiteral(Keyword.CONST, null));
}
@@ -3034,6 +3537,62 @@
_assertSource(scriptTag, AstTestFactory.scriptTag(scriptTag));
}
+ void test_visitSetLiteral2_complex() {
+ _assertSource(
+ '<int>{0, for (e in l) 0, if (b) 1, ...[0]}',
+ astFactory.setLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [
+ AstTestFactory.integer(0),
+ astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.integer(0)),
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1)),
+ astFactory.spreadElement(
+ spreadOperator: TokenFactory.tokenFromType(
+ TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)]))
+ ]));
+ }
+
+ void test_visitSetLiteral2_withConst_withoutTypeArgs() {
+ _assertSource(
+ 'const {0}',
+ astFactory.setLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitSetLiteral2_withConst_withTypeArgs() {
+ _assertSource(
+ 'const <int>{0}',
+ astFactory.setLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitSetLiteral2_withoutConst_withoutTypeArgs() {
+ _assertSource(
+ '{0}', astFactory.setLiteral2(elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitSetLiteral2_withoutConst_withTypeArgs() {
+ _assertSource(
+ '<int>{0}',
+ astFactory.setLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
void test_visitSimpleFormalParameter_annotation() {
SimpleFormalParameter parameter =
AstTestFactory.simpleFormalParameter3('x');
@@ -3077,6 +3636,29 @@
_assertSource("'a'", AstTestFactory.string2("a"));
}
+ void test_visitSpreadElement_nonNullable() {
+ _assertSource(
+ '...[0]',
+ astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)])));
+ }
+
+ @failingTest
+ void test_visitSpreadElement_nullable() {
+ // TODO(brianwilkerson) Replace the token type below when there is one for
+ // '...?'.
+ _assertSource(
+ '...?[0]',
+ astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)])));
+ }
+
void test_visitStringInterpolation() {
_assertSource(
"'a\${e}b'",
@@ -3857,6 +4439,33 @@
_assertSource("@deprecated class C = S with M1;", declaration);
}
+ void test_visitCollectionForElement() {
+ _assertSource(
+ 'for (e in l) 0',
+ astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.integer(0)));
+ }
+
+ void test_visitCollectionIfElement_else() {
+ _assertSource(
+ 'if (b) 1 else 0',
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1),
+ elseElement: AstTestFactory.integer(0)));
+ }
+
+ void test_visitCollectionIfElement_then() {
+ _assertSource(
+ 'if (b) 1',
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1)));
+ }
+
void test_visitComment() {
_assertSource(
"",
@@ -4289,6 +4898,22 @@
_assertSource("covariant A this.a", expected);
}
+ void test_visitForEachPartsWithDeclaration() {
+ _assertSource(
+ 'var e in l',
+ astFactory.forEachPartsWithDeclaration(
+ loopVariable: AstTestFactory.declaredIdentifier3('e'),
+ iterable: AstTestFactory.identifier3('l')));
+ }
+
+ void test_visitForEachPartsWithIdentifier() {
+ _assertSource(
+ 'e in l',
+ astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')));
+ }
+
void test_visitForEachStatement_declared() {
_assertSource(
"for (var a in b) {}",
@@ -4494,6 +5119,36 @@
]));
}
+ void test_visitForPartsWithDeclarations() {
+ _assertSource(
+ 'var v; b; u',
+ astFactory.forPartsWithDeclarations(
+ variables: AstTestFactory.variableDeclarationList2(
+ Keyword.VAR, [AstTestFactory.variableDeclaration('v')]),
+ condition: AstTestFactory.identifier3('b'),
+ updaters: [AstTestFactory.identifier3('u')]));
+ }
+
+ void test_visitForPartsWithExpression() {
+ _assertSource(
+ 'v; b; u',
+ astFactory.forPartsWithExpression(
+ initialization: AstTestFactory.identifier3('v'),
+ condition: AstTestFactory.identifier3('b'),
+ updaters: [AstTestFactory.identifier3('u')]));
+ }
+
+ void test_visitForStatement2() {
+ _assertSource(
+ 'for (e in l) s;',
+ astFactory.forStatement2(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.expressionStatement(
+ AstTestFactory.identifier3('s'))));
+ }
+
void test_visitForStatement_c() {
_assertSource(
"for (; c;) {}",
@@ -5046,6 +5701,62 @@
AstTestFactory.libraryIdentifier([AstTestFactory.identifier3("a")]));
}
+ void test_visitListLiteral2_complex() {
+ _assertSource(
+ '<int>[0, for (e in l) 0, if (b) 1, ...[0]]',
+ astFactory.listLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [
+ AstTestFactory.integer(0),
+ astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.integer(0)),
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1)),
+ astFactory.spreadElement(
+ spreadOperator: TokenFactory.tokenFromType(
+ TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)]))
+ ]));
+ }
+
+ void test_visitListLiteral2_withConst_withoutTypeArgs() {
+ _assertSource(
+ 'const [0]',
+ astFactory.listLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitListLiteral2_withConst_withTypeArgs() {
+ _assertSource(
+ 'const <int>[0]',
+ astFactory.listLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitListLiteral2_withoutConst_withoutTypeArgs() {
+ _assertSource(
+ '[0]', astFactory.listLiteral2(elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitListLiteral2_withoutConst_withTypeArgs() {
+ _assertSource(
+ '<int>[0]',
+ astFactory.listLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
void test_visitListLiteral_const() {
_assertSource("const []", AstTestFactory.listLiteral2(Keyword.CONST, null));
}
@@ -5064,6 +5775,97 @@
]));
}
+ void test_visitMapForElement() {
+ _assertSource(
+ "for (e in l) 'a' : 'b'",
+ astFactory.mapForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.mapLiteralEntry3('a', 'b')));
+ }
+
+ void test_visitMapIfElement_else() {
+ _assertSource(
+ "if (b) 'a' : 'b' else 'c' : 'd'",
+ astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.mapLiteralEntry3('a', 'b'),
+ elseElement: AstTestFactory.mapLiteralEntry3('c', 'd')));
+ }
+
+ void test_visitMapIfElement_then() {
+ _assertSource(
+ "if (b) 'a' : 'b'",
+ astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.mapLiteralEntry3('a', 'b')));
+ }
+
+ void test_visitMapLiteral2_complex() {
+ _assertSource(
+ "<String, String>{'a' : 'b', for (c in d) 'e' : 'f', if (g) 'h' : 'i', ...{'j' : 'k'}}",
+ astFactory.mapLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ entries: [
+ AstTestFactory.mapLiteralEntry3('a', 'b'),
+ astFactory.mapForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('c'),
+ iterable: AstTestFactory.identifier3('d')),
+ body: AstTestFactory.mapLiteralEntry3('e', 'f')),
+ astFactory.mapIfElement(
+ condition: AstTestFactory.identifier3('g'),
+ thenElement: AstTestFactory.mapLiteralEntry3('h', 'i')),
+ astFactory.spreadElement(
+ spreadOperator: TokenFactory.tokenFromType(
+ TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory.mapLiteral2(
+ entries: [AstTestFactory.mapLiteralEntry3('j', 'k')]))
+ ]));
+ }
+
+ void test_visitMapLiteral2_withConst_withoutTypeArgs() {
+ _assertSource(
+ "const {'a' : 'b'}",
+ astFactory.mapLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
+ void test_visitMapLiteral2_withConst_withTypeArgs() {
+ _assertSource(
+ "const <String, String>{'a' : 'b'}",
+ astFactory.mapLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
+ void test_visitMapLiteral2_withoutConst_withoutTypeArgs() {
+ _assertSource(
+ "{'a' : 'b'}",
+ astFactory
+ .mapLiteral2(entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
+ void test_visitMapLiteral2_withoutConst_withTypeArgs() {
+ _assertSource(
+ "<String, String>{'a' : 'b'}",
+ astFactory.mapLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList([
+ AstTestFactory.typeName4('String'),
+ AstTestFactory.typeName4('String')
+ ]),
+ entries: [AstTestFactory.mapLiteralEntry3('a', 'b')]));
+ }
+
void test_visitMapLiteral_const() {
_assertSource("const {}", AstTestFactory.mapLiteral(Keyword.CONST, null));
}
@@ -5433,6 +6235,62 @@
_assertSource(scriptTag, AstTestFactory.scriptTag(scriptTag));
}
+ void test_visitSetLiteral2_complex() {
+ _assertSource(
+ '<int>{0, for (e in l) 0, if (b) 1, ...[0]}',
+ astFactory.setLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [
+ AstTestFactory.integer(0),
+ astFactory.collectionForElement(
+ forLoopParts: astFactory.forEachPartsWithIdentifier(
+ identifier: AstTestFactory.identifier3('e'),
+ iterable: AstTestFactory.identifier3('l')),
+ body: AstTestFactory.integer(0)),
+ astFactory.collectionIfElement(
+ condition: AstTestFactory.identifier3('b'),
+ thenElement: AstTestFactory.integer(1)),
+ astFactory.spreadElement(
+ spreadOperator: TokenFactory.tokenFromType(
+ TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)]))
+ ]));
+ }
+
+ void test_visitSetLiteral2_withConst_withoutTypeArgs() {
+ _assertSource(
+ 'const {0}',
+ astFactory.setLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitSetLiteral2_withConst_withTypeArgs() {
+ _assertSource(
+ 'const <int>{0}',
+ astFactory.setLiteral2(
+ constKeyword: TokenFactory.tokenFromKeyword(Keyword.CONST),
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitSetLiteral2_withoutConst_withoutTypeArgs() {
+ _assertSource(
+ '{0}', astFactory.setLiteral2(elements: [AstTestFactory.integer(0)]));
+ }
+
+ void test_visitSetLiteral2_withoutConst_withTypeArgs() {
+ _assertSource(
+ '<int>{0}',
+ astFactory.setLiteral2(
+ typeArguments: AstTestFactory.typeArgumentList(
+ [AstTestFactory.typeName4('int')]),
+ elements: [AstTestFactory.integer(0)]));
+ }
+
void test_visitSimpleFormalParameter_annotation() {
SimpleFormalParameter parameter =
AstTestFactory.simpleFormalParameter3('x');
@@ -5476,6 +6334,29 @@
_assertSource("'a'", AstTestFactory.string2("a"));
}
+ void test_visitSpreadElement_nonNullable() {
+ _assertSource(
+ '...[0]',
+ astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)])));
+ }
+
+ @failingTest
+ void test_visitSpreadElement_nullable() {
+ // TODO(brianwilkerson) Replace the token type below when there is one for
+ // '...?'.
+ _assertSource(
+ '...?[0]',
+ astFactory.spreadElement(
+ spreadOperator:
+ TokenFactory.tokenFromType(TokenType.PERIOD_PERIOD_PERIOD),
+ expression: astFactory
+ .listLiteral2(elements: [AstTestFactory.integer(0)])));
+ }
+
void test_visitStringInterpolation() {
_assertSource(
"'a\${e}b'",
diff --git a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
index a165d8d..235cd8b 100644
--- a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
@@ -6421,46 +6421,46 @@
@override
visitWithClause(node) => _unreachable(node);
-// @override
+ @override
visitCollectionForElement(CollectionForElement node) => _unreachable(node);
-// @override
+ @override
visitCollectionIfElement(CollectionIfElement node) => _unreachable(node);
-// @override
+ @override
visitForEachPartsWithDeclaration(ForEachPartsWithDeclaration node) =>
_unreachable(node);
-// @override
+ @override
visitForEachPartsWithIdentifier(ForEachPartsWithIdentifier node) =>
_unreachable(node);
-// @override
+ @override
visitForStatement2(ForStatement2 node) => _unreachable(node);
-// @override
+ @override
visitListLiteral2(ListLiteral2 node) => _unreachable(node);
-// @override
+ @override
visitMapForElement(MapForElement node) => _unreachable(node);
-// @override
+ @override
visitMapIfElement(MapIfElement node) => _unreachable(node);
-// @override
+ @override
visitMapLiteral2(MapLiteral2 node) => _unreachable(node);
-// @override
+ @override
visitSetLiteral2(SetLiteral2 node) => _unreachable(node);
-// @override
+ @override
visitSpreadElement(SpreadElement node) => _unreachable(node);
-// @override
+ @override
visitForPartsWithDeclarations(ForPartsWithDeclarations node) =>
_unreachable(node);
-// @override
+ @override
visitForPartsWithExpression(ForPartsWithExpression node) =>
_unreachable(node);
}