Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(518)

Side by Side Diff: pkg/analyzer/lib/src/generated/ast.dart

Issue 679873002: Clone tokens when cloning ASTs for constants (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 // This code was auto-generated, is not intended to be edited, and is subject to 5 // This code was auto-generated, is not intended to be edited, and is subject to
6 // significant change. Please see the README file for more information. 6 // significant change. Please see the README file for more information.
7 7
8 library engine.ast; 8 library engine.ast;
9 9
10 import 'dart:collection'; 10 import 'dart:collection';
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 } 988 }
989 List<ParameterElement> parameters = executableElement.parameters; 989 List<ParameterElement> parameters = executableElement.parameters;
990 if (parameters.length < 1) { 990 if (parameters.length < 1) {
991 return null; 991 return null;
992 } 992 }
993 return parameters[0]; 993 return parameters[0];
994 } 994 }
995 } 995 }
996 996
997 /** 997 /**
998 * Instances of the class `AstCloner` implement an object that will clone any AS T structure 998 * An `AstCloner` is an AST visitor that will clone any AST structure that it
999 * that it visits. The cloner will only clone the structure, it will not preserv e any resolution 999 * visits. The cloner will only clone the structure, it will not preserve any
1000 * results or properties associated with the nodes. 1000 * resolution results or properties associated with the nodes.
1001 */ 1001 */
1002 class AstCloner implements AstVisitor<AstNode> { 1002 class AstCloner implements AstVisitor<AstNode> {
1003 List cloneNodeList(NodeList nodes) { 1003 /**
1004 * A flag indicating whether tokens should be cloned while cloning an AST
1005 * structure.
1006 */
1007 final bool cloneTokens;
1008
1009 /**
1010 * Initialize a newly created AST cloner to optionally clone tokens while
1011 * cloning AST nodes if [cloneTokens] is `true`.
1012 */
1013 AstCloner([this.cloneTokens = false]);
1014
1015 /**
1016 * Return a clone of the given [node].
1017 */
1018 AstNode cloneNode(AstNode node) {
1019 if (node == null) {
1020 return null;
1021 }
1022 return node.accept(this) as AstNode;
1023 }
1024
1025 /**
1026 * Return a list containing cloned versions of the nodes in the given list of
1027 * [nodes].
1028 */
1029 List<AstNode> cloneNodeList(NodeList nodes) {
1004 int count = nodes.length; 1030 int count = nodes.length;
1005 List clonedNodes = new List(); 1031 List clonedNodes = new List();
1006 for (int i = 0; i < count; i++) { 1032 for (int i = 0; i < count; i++) {
1007 clonedNodes.add((nodes[i]).accept(this) as AstNode); 1033 clonedNodes.add((nodes[i]).accept(this) as AstNode);
1008 } 1034 }
1009 return clonedNodes; 1035 return clonedNodes;
1010 } 1036 }
1011 1037
1012 @override 1038 /**
1013 AdjacentStrings visitAdjacentStrings(AdjacentStrings node) => new AdjacentStri ngs(cloneNodeList(node.strings)); 1039 * Clone the given [token] if tokens are suppose to be cloned.
Paul Berry 2014/10/26 17:02:34 s/suppose/supposed/
Brian Wilkerson 2014/10/26 18:41:15 Done
1014 1040 */
1015 @override 1041 Token cloneToken(Token token) {
1016 Annotation visitAnnotation(Annotation node) => new Annotation(node.atSign, clo neNode(node.name), node.period, cloneNode(node.constructorName), cloneNode(node. arguments)); 1042 if (cloneTokens) {
1017 1043 return (token == null ? null : token.copy());
1018 @override 1044 } else {
1019 ArgumentList visitArgumentList(ArgumentList node) => new ArgumentList(node.lef tParenthesis, cloneNodeList(node.arguments), node.rightParenthesis); 1045 return token;
1020 1046 }
1021 @override 1047 }
1022 AsExpression visitAsExpression(AsExpression node) => new AsExpression(cloneNod e(node.expression), node.asOperator, cloneNode(node.type)); 1048
1023 1049 /**
1024 @override 1050 * Clone the given [token] if tokens are suppose to be cloned.
Paul Berry 2014/10/26 17:02:34 s/token/tokens/ s/suppose/supposed/
Brian Wilkerson 2014/10/26 18:41:15 Done
1025 AstNode visitAssertStatement(AssertStatement node) => new AssertStatement(node .keyword, node.leftParenthesis, cloneNode(node.condition), node.rightParenthesis , node.semicolon); 1051 */
1026 1052 List<Token> cloneTokenList(List<Token> tokens) {
1027 @override 1053 if (cloneTokens) {
1028 AssignmentExpression visitAssignmentExpression(AssignmentExpression node) => n ew AssignmentExpression(cloneNode(node.leftHandSide), node.operator, cloneNode(n ode.rightHandSide)); 1054 return tokens.map((Token token) => token.copy()).toList();
1029 1055 }
1030 @override 1056 return tokens;
1031 AwaitExpression visitAwaitExpression(AwaitExpression node) => new AwaitExpress ion(node.awaitKeyword, node.expression); 1057 }
1032 1058
1033 @override 1059 @override
1034 BinaryExpression visitBinaryExpression(BinaryExpression node) => new BinaryExp ression(cloneNode(node.leftOperand), node.operator, cloneNode(node.rightOperand) ); 1060 AdjacentStrings visitAdjacentStrings(AdjacentStrings node)
1035 1061 => new AdjacentStrings(cloneNodeList(node.strings));
1036 @override 1062
1037 Block visitBlock(Block node) => new Block(node.leftBracket, cloneNodeList(node .statements), node.rightBracket); 1063 @override
1038 1064 Annotation visitAnnotation(Annotation node)
1039 @override 1065 => new Annotation(
1040 BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node) => new BlockF unctionBody(node.keyword, node.star, cloneNode(node.block)); 1066 cloneToken(node.atSign),
1041 1067 cloneNode(node.name),
1042 @override 1068 cloneToken(node.period),
1043 BooleanLiteral visitBooleanLiteral(BooleanLiteral node) => new BooleanLiteral( node.literal, node.value); 1069 cloneNode(node.constructorName),
1044 1070 cloneNode(node.arguments));
1045 @override 1071
1046 BreakStatement visitBreakStatement(BreakStatement node) => new BreakStatement( node.keyword, cloneNode(node.label), node.semicolon); 1072 @override
1047 1073 ArgumentList visitArgumentList(ArgumentList node)
1048 @override 1074 => new ArgumentList(
1049 CascadeExpression visitCascadeExpression(CascadeExpression node) => new Cascad eExpression(cloneNode(node.target), cloneNodeList(node.cascadeSections)); 1075 cloneToken(node.leftParenthesis),
1050 1076 cloneNodeList(node.arguments),
1051 @override 1077 cloneToken(node.rightParenthesis));
1052 CatchClause visitCatchClause(CatchClause node) => new CatchClause(node.onKeywo rd, cloneNode(node.exceptionType), node.catchKeyword, node.leftParenthesis, clon eNode(node.exceptionParameter), node.comma, cloneNode(node.stackTraceParameter), node.rightParenthesis, cloneNode(node.body)); 1078
1079 @override
1080 AsExpression visitAsExpression(AsExpression node)
1081 => new AsExpression(
1082 cloneNode(node.expression),
1083 cloneToken(node.asOperator),
1084 cloneNode(node.type));
1085
1086 @override
1087 AstNode visitAssertStatement(AssertStatement node)
1088 => new AssertStatement(
1089 cloneToken(node.keyword),
1090 cloneToken(node.leftParenthesis),
1091 cloneNode(node.condition),
1092 cloneToken(node.rightParenthesis),
1093 cloneToken(node.semicolon));
1094
1095 @override
1096 AssignmentExpression visitAssignmentExpression(AssignmentExpression node)
1097 => new AssignmentExpression(
1098 cloneNode(node.leftHandSide),
1099 cloneToken(node.operator),
1100 cloneNode(node.rightHandSide));
1101
1102 @override
1103 AwaitExpression visitAwaitExpression(AwaitExpression node)
1104 => new AwaitExpression(
1105 cloneToken(node.awaitKeyword),
1106 cloneNode(node.expression));
1107
1108 @override
1109 BinaryExpression visitBinaryExpression(BinaryExpression node)
1110 => new BinaryExpression(
1111 cloneNode(node.leftOperand),
1112 cloneToken(node.operator),
1113 cloneNode(node.rightOperand));
1114
1115 @override
1116 Block visitBlock(Block node)
1117 => new Block(
1118 cloneToken(node.leftBracket),
1119 cloneNodeList(node.statements),
1120 cloneToken(node.rightBracket));
1121
1122 @override
1123 BlockFunctionBody visitBlockFunctionBody(BlockFunctionBody node)
1124 => new BlockFunctionBody(
1125 cloneToken(node.keyword),
1126 cloneToken(node.star),
1127 cloneNode(node.block));
1128
1129 @override
1130 BooleanLiteral visitBooleanLiteral(BooleanLiteral node)
1131 => new BooleanLiteral(cloneToken(node.literal), node.value);
1132
1133 @override
1134 BreakStatement visitBreakStatement(BreakStatement node)
1135 => new BreakStatement(
1136 cloneToken(node.keyword),
1137 cloneNode(node.label),
1138 cloneToken(node.semicolon));
1139
1140 @override
1141 CascadeExpression visitCascadeExpression(CascadeExpression node)
1142 => new CascadeExpression(
1143 cloneNode(node.target),
1144 cloneNodeList(node.cascadeSections));
1145
1146 @override
1147 CatchClause visitCatchClause(CatchClause node)
1148 => new CatchClause(
1149 cloneToken(node.onKeyword),
1150 cloneNode(node.exceptionType),
1151 cloneToken(node.catchKeyword),
1152 cloneToken(node.leftParenthesis),
1153 cloneNode(node.exceptionParameter),
1154 cloneToken(node.comma),
1155 cloneNode(node.stackTraceParameter),
1156 cloneToken(node.rightParenthesis),
1157 cloneNode(node.body));
1053 1158
1054 @override 1159 @override
1055 ClassDeclaration visitClassDeclaration(ClassDeclaration node) { 1160 ClassDeclaration visitClassDeclaration(ClassDeclaration node) {
1056 ClassDeclaration copy = new ClassDeclaration(cloneNode(node.documentationCom ment), cloneNodeList(node.metadata), node.abstractKeyword, node.classKeyword, cl oneNode(node.name), cloneNode(node.typeParameters), cloneNode(node.extendsClause ), cloneNode(node.withClause), cloneNode(node.implementsClause), node.leftBracke t, cloneNodeList(node.members), node.rightBracket); 1161 ClassDeclaration copy = new ClassDeclaration(
1162 cloneNode(node.documentationComment),
1163 cloneNodeList(node.metadata),
1164 cloneToken(node.abstractKeyword),
1165 cloneToken(node.classKeyword),
1166 cloneNode(node.name),
1167 cloneNode(node.typeParameters),
1168 cloneNode(node.extendsClause),
1169 cloneNode(node.withClause),
1170 cloneNode(node.implementsClause),
1171 cloneToken(node.leftBracket),
1172 cloneNodeList(node.members),
1173 cloneToken(node.rightBracket));
1057 copy.nativeClause = cloneNode(node.nativeClause); 1174 copy.nativeClause = cloneNode(node.nativeClause);
1058 return copy; 1175 return copy;
1059 } 1176 }
1060 1177
1061 @override 1178 @override
1062 ClassTypeAlias visitClassTypeAlias(ClassTypeAlias node) => new ClassTypeAlias( cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword , cloneNode(node.name), cloneNode(node.typeParameters), node.equals, node.abstra ctKeyword, cloneNode(node.superclass), cloneNode(node.withClause), cloneNode(nod e.implementsClause), node.semicolon); 1179 ClassTypeAlias visitClassTypeAlias(ClassTypeAlias node)
1180 => new ClassTypeAlias(
1181 cloneNode(node.documentationComment),
1182 cloneNodeList(node.metadata),
1183 cloneToken(node.keyword),
1184 cloneNode(node.name),
1185 cloneNode(node.typeParameters),
1186 cloneToken(node.equals),
1187 cloneToken(node.abstractKeyword),
1188 cloneNode(node.superclass),
1189 cloneNode(node.withClause),
1190 cloneNode(node.implementsClause),
1191 cloneToken(node.semicolon));
1063 1192
1064 @override 1193 @override
1065 Comment visitComment(Comment node) { 1194 Comment visitComment(Comment node) {
1066 if (node.isDocumentation) { 1195 if (node.isDocumentation) {
1067 return Comment.createDocumentationCommentWithReferences(node.tokens, clone NodeList(node.references)); 1196 return Comment.createDocumentationCommentWithReferences(
1197 cloneTokenList(node.tokens),
1198 cloneNodeList(node.references));
1068 } else if (node.isBlock) { 1199 } else if (node.isBlock) {
1069 return Comment.createBlockComment(node.tokens); 1200 return Comment.createBlockComment(cloneTokenList(node.tokens));
1070 } 1201 }
1071 return Comment.createEndOfLineComment(node.tokens); 1202 return Comment.createEndOfLineComment(cloneTokenList(node.tokens));
1072 } 1203 }
1073 1204
1074 @override 1205 @override
1075 CommentReference visitCommentReference(CommentReference node) => new CommentRe ference(node.newKeyword, cloneNode(node.identifier)); 1206 CommentReference visitCommentReference(CommentReference node)
1207 => new CommentReference(
1208 cloneToken(node.newKeyword),
1209 cloneNode(node.identifier));
1076 1210
1077 @override 1211 @override
1078 CompilationUnit visitCompilationUnit(CompilationUnit node) { 1212 CompilationUnit visitCompilationUnit(CompilationUnit node) {
1079 CompilationUnit clone = new CompilationUnit(node.beginToken, cloneNode(node. scriptTag), cloneNodeList(node.directives), cloneNodeList(node.declarations), no de.endToken); 1213 CompilationUnit clone = new CompilationUnit(
1214 cloneToken(node.beginToken),
1215 cloneNode(node.scriptTag),
1216 cloneNodeList(node.directives),
1217 cloneNodeList(node.declarations),
1218 cloneToken(node.endToken));
1080 clone.lineInfo = node.lineInfo; 1219 clone.lineInfo = node.lineInfo;
1081 return clone; 1220 return clone;
1082 } 1221 }
1083 1222
1084 @override 1223 @override
1085 ConditionalExpression visitConditionalExpression(ConditionalExpression node) = > new ConditionalExpression(cloneNode(node.condition), node.question, cloneNode( node.thenExpression), node.colon, cloneNode(node.elseExpression)); 1224 ConditionalExpression visitConditionalExpression(ConditionalExpression node)
1086 1225 => new ConditionalExpression(
1087 @override 1226 cloneNode(node.condition),
1088 ConstructorDeclaration visitConstructorDeclaration(ConstructorDeclaration node ) => new ConstructorDeclaration(cloneNode(node.documentationComment), cloneNodeL ist(node.metadata), node.externalKeyword, node.constKeyword, node.factoryKeyword , cloneNode(node.returnType), node.period, cloneNode(node.name), cloneNode(node. parameters), node.separator, cloneNodeList(node.initializers), cloneNode(node.re directedConstructor), cloneNode(node.body)); 1227 cloneToken(node.question),
1089 1228 cloneNode(node.thenExpression),
1090 @override 1229 cloneToken(node.colon),
1091 ConstructorFieldInitializer visitConstructorFieldInitializer(ConstructorFieldI nitializer node) => new ConstructorFieldInitializer(node.keyword, node.period, c loneNode(node.fieldName), node.equals, cloneNode(node.expression)); 1230 cloneNode(node.elseExpression));
1092 1231
1093 @override 1232 @override
1094 ConstructorName visitConstructorName(ConstructorName node) => new ConstructorN ame(cloneNode(node.type), node.period, cloneNode(node.name)); 1233 ConstructorDeclaration visitConstructorDeclaration(ConstructorDeclaration node )
1095 1234 => new ConstructorDeclaration(
1096 @override 1235 cloneNode(node.documentationComment),
1097 ContinueStatement visitContinueStatement(ContinueStatement node) => new Contin ueStatement(node.keyword, cloneNode(node.label), node.semicolon); 1236 cloneNodeList(node.metadata),
1098 1237 cloneToken(node.externalKeyword),
1099 @override 1238 cloneToken(node.constKeyword),
1100 DeclaredIdentifier visitDeclaredIdentifier(DeclaredIdentifier node) => new Dec laredIdentifier(cloneNode(node.documentationComment), cloneNodeList(node.metadat a), node.keyword, cloneNode(node.type), cloneNode(node.identifier)); 1239 cloneToken(node.factoryKeyword),
1101 1240 cloneNode(node.returnType),
1102 @override 1241 cloneToken(node.period),
1103 DefaultFormalParameter visitDefaultFormalParameter(DefaultFormalParameter node ) => new DefaultFormalParameter(cloneNode(node.parameter), node.kind, node.separ ator, cloneNode(node.defaultValue)); 1242 cloneNode(node.name),
1104 1243 cloneNode(node.parameters),
1105 @override 1244 cloneToken(node.separator),
1106 DoStatement visitDoStatement(DoStatement node) => new DoStatement(node.doKeywo rd, cloneNode(node.body), node.whileKeyword, node.leftParenthesis, cloneNode(nod e.condition), node.rightParenthesis, node.semicolon); 1245 cloneNodeList(node.initializers),
1107 1246 cloneNode(node.redirectedConstructor),
1108 @override 1247 cloneNode(node.body));
1109 DoubleLiteral visitDoubleLiteral(DoubleLiteral node) => new DoubleLiteral(node .literal, node.value); 1248
1110 1249 @override
1111 @override 1250 ConstructorFieldInitializer visitConstructorFieldInitializer(ConstructorFieldI nitializer node)
1112 EmptyFunctionBody visitEmptyFunctionBody(EmptyFunctionBody node) => new EmptyF unctionBody(node.semicolon); 1251 => new ConstructorFieldInitializer(
1113 1252 cloneToken(node.keyword),
1114 @override 1253 cloneToken(node.period),
1115 EmptyStatement visitEmptyStatement(EmptyStatement node) => new EmptyStatement( node.semicolon); 1254 cloneNode(node.fieldName),
1116 1255 cloneToken(node.equals),
1117 @override 1256 cloneNode(node.expression));
1118 AstNode visitEnumConstantDeclaration(EnumConstantDeclaration node) => new Enum ConstantDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.met adata), cloneNode(node.name)); 1257
1119 1258 @override
1120 @override 1259 ConstructorName visitConstructorName(ConstructorName node)
1121 EnumDeclaration visitEnumDeclaration(EnumDeclaration node) => new EnumDeclarat ion(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.key word, cloneNode(node.name), node.leftBracket, cloneNodeList(node.constants), nod e.rightBracket); 1260 => new ConstructorName(
1261 cloneNode(node.type),
1262 cloneToken(node.period),
1263 cloneNode(node.name));
1264
1265 @override
1266 ContinueStatement visitContinueStatement(ContinueStatement node)
1267 => new ContinueStatement(
1268 cloneToken(node.keyword),
1269 cloneNode(node.label),
1270 cloneToken(node.semicolon));
1271
1272 @override
1273 DeclaredIdentifier visitDeclaredIdentifier(DeclaredIdentifier node)
1274 => new DeclaredIdentifier(
1275 cloneNode(node.documentationComment),
1276 cloneNodeList(node.metadata),
1277 cloneToken(node.keyword),
1278 cloneNode(node.type),
1279 cloneNode(node.identifier));
1280
1281 @override
1282 DefaultFormalParameter visitDefaultFormalParameter(DefaultFormalParameter node )
1283 => new DefaultFormalParameter(
1284 cloneNode(node.parameter),
1285 node.kind,
1286 cloneToken(node.separator),
1287 cloneNode(node.defaultValue));
1288
1289 @override
1290 DoStatement visitDoStatement(DoStatement node)
1291 => new DoStatement(
1292 cloneToken(node.doKeyword),
1293 cloneNode(node.body),
1294 cloneToken(node.whileKeyword),
1295 cloneToken(node.leftParenthesis),
1296 cloneNode(node.condition),
1297 cloneToken(node.rightParenthesis),
1298 cloneToken(node.semicolon));
1299
1300 @override
1301 DoubleLiteral visitDoubleLiteral(DoubleLiteral node)
1302 => new DoubleLiteral(cloneToken(node.literal), node.value);
1303
1304 @override
1305 EmptyFunctionBody visitEmptyFunctionBody(EmptyFunctionBody node)
1306 => new EmptyFunctionBody(cloneToken(node.semicolon));
1307
1308 @override
1309 EmptyStatement visitEmptyStatement(EmptyStatement node)
1310 => new EmptyStatement(cloneToken(node.semicolon));
1311
1312 @override
1313 AstNode visitEnumConstantDeclaration(EnumConstantDeclaration node)
1314 => new EnumConstantDeclaration(
1315 cloneNode(node.documentationComment),
1316 cloneNodeList(node.metadata),
1317 cloneNode(node.name));
1318
1319 @override
1320 EnumDeclaration visitEnumDeclaration(EnumDeclaration node)
1321 => new EnumDeclaration(
1322 cloneNode(node.documentationComment),
1323 cloneNodeList(node.metadata),
1324 cloneToken(node.keyword),
1325 cloneNode(node.name),
1326 cloneToken(node.leftBracket),
1327 cloneNodeList(node.constants),
1328 cloneToken(node.rightBracket));
1122 1329
1123 @override 1330 @override
1124 ExportDirective visitExportDirective(ExportDirective node) { 1331 ExportDirective visitExportDirective(ExportDirective node) {
1125 ExportDirective directive = new ExportDirective(cloneNode(node.documentation Comment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.uri), clone NodeList(node.combinators), node.semicolon); 1332 ExportDirective directive = new ExportDirective(
1333 cloneNode(node.documentationComment),
1334 cloneNodeList(node.metadata),
1335 cloneToken(node.keyword),
1336 cloneNode(node.uri),
1337 cloneNodeList(node.combinators),
1338 cloneToken(node.semicolon));
1126 directive.source = node.source; 1339 directive.source = node.source;
1127 directive.uriContent = node.uriContent; 1340 directive.uriContent = node.uriContent;
1128 return directive; 1341 return directive;
1129 } 1342 }
1130 1343
1131 @override 1344 @override
1132 ExpressionFunctionBody visitExpressionFunctionBody(ExpressionFunctionBody node ) => new ExpressionFunctionBody(node.keyword, node.functionDefinition, cloneNode (node.expression), node.semicolon); 1345 ExpressionFunctionBody visitExpressionFunctionBody(ExpressionFunctionBody node )
1133 1346 => new ExpressionFunctionBody(
1134 @override 1347 cloneToken(node.keyword),
1135 ExpressionStatement visitExpressionStatement(ExpressionStatement node) => new ExpressionStatement(cloneNode(node.expression), node.semicolon); 1348 cloneToken(node.functionDefinition),
1136 1349 cloneNode(node.expression),
1137 @override 1350 cloneToken(node.semicolon));
1138 ExtendsClause visitExtendsClause(ExtendsClause node) => new ExtendsClause(node .keyword, cloneNode(node.superclass)); 1351
1139 1352 @override
1140 @override 1353 ExpressionStatement visitExpressionStatement(ExpressionStatement node)
1141 FieldDeclaration visitFieldDeclaration(FieldDeclaration node) => new FieldDecl aration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node .staticKeyword, cloneNode(node.fields), node.semicolon); 1354 => new ExpressionStatement(
1142 1355 cloneNode(node.expression),
1143 @override 1356 cloneToken(node.semicolon));
1144 FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) => n ew FieldFormalParameter(cloneNode(node.documentationComment), cloneNodeList(node .metadata), node.keyword, cloneNode(node.type), node.thisToken, node.period, clo neNode(node.identifier), cloneNode(node.parameters)); 1357
1358 @override
1359 ExtendsClause visitExtendsClause(ExtendsClause node)
1360 => new ExtendsClause(
1361 cloneToken(node.keyword),
1362 cloneNode(node.superclass));
1363
1364 @override
1365 FieldDeclaration visitFieldDeclaration(FieldDeclaration node)
1366 => new FieldDeclaration(
1367 cloneNode(node.documentationComment),
1368 cloneNodeList(node.metadata),
1369 cloneToken(node.staticKeyword),
1370 cloneNode(node.fields),
1371 cloneToken(node.semicolon));
1372
1373 @override
1374 FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node)
1375 => new FieldFormalParameter(
1376 cloneNode(node.documentationComment),
1377 cloneNodeList(node.metadata),
1378 cloneToken(node.keyword),
1379 cloneNode(node.type),
1380 cloneToken(node.thisToken),
1381 cloneToken(node.period),
1382 cloneNode(node.identifier),
1383 cloneNode(node.parameters));
1145 1384
1146 @override 1385 @override
1147 ForEachStatement visitForEachStatement(ForEachStatement node) { 1386 ForEachStatement visitForEachStatement(ForEachStatement node) {
1148 DeclaredIdentifier loopVariable = node.loopVariable; 1387 DeclaredIdentifier loopVariable = node.loopVariable;
1149 if (loopVariable == null) { 1388 if (loopVariable == null) {
1150 return new ForEachStatement.con2(node.awaitKeyword, node.forKeyword, node. leftParenthesis, cloneNode(node.identifier), node.inKeyword, cloneNode(node.iter ator), node.rightParenthesis, cloneNode(node.body)); 1389 return new ForEachStatement.con2(
1390 cloneToken(node.awaitKeyword),
1391 cloneToken(node.forKeyword),
1392 cloneToken(node.leftParenthesis),
1393 cloneNode(node.identifier),
1394 cloneToken(node.inKeyword),
1395 cloneNode(node.iterator),
1396 cloneToken(node.rightParenthesis),
1397 cloneNode(node.body));
1151 } 1398 }
1152 return new ForEachStatement.con1(node.awaitKeyword, node.forKeyword, node.le ftParenthesis, cloneNode(loopVariable), node.inKeyword, cloneNode(node.iterator) , node.rightParenthesis, cloneNode(node.body)); 1399 return new ForEachStatement.con1(
1153 } 1400 cloneToken(node.awaitKeyword),
1154 1401 cloneToken(node.forKeyword),
1155 @override 1402 cloneToken(node.leftParenthesis),
1156 FormalParameterList visitFormalParameterList(FormalParameterList node) => new FormalParameterList(node.leftParenthesis, cloneNodeList(node.parameters), node.l eftDelimiter, node.rightDelimiter, node.rightParenthesis); 1403 cloneNode(loopVariable),
1157 1404 cloneToken(node.inKeyword),
1158 @override 1405 cloneNode(node.iterator),
1159 ForStatement visitForStatement(ForStatement node) => new ForStatement(node.for Keyword, node.leftParenthesis, cloneNode(node.variables), cloneNode(node.initial ization), node.leftSeparator, cloneNode(node.condition), node.rightSeparator, cl oneNodeList(node.updaters), node.rightParenthesis, cloneNode(node.body)); 1406 cloneToken(node.rightParenthesis),
1160 1407 cloneNode(node.body));
1161 @override 1408 }
1162 FunctionDeclaration visitFunctionDeclaration(FunctionDeclaration node) => new FunctionDeclaration(cloneNode(node.documentationComment), cloneNodeList(node.met adata), node.externalKeyword, cloneNode(node.returnType), node.propertyKeyword, cloneNode(node.name), cloneNode(node.functionExpression)); 1409
1163 1410 @override
1164 @override 1411 FormalParameterList visitFormalParameterList(FormalParameterList node)
1165 FunctionDeclarationStatement visitFunctionDeclarationStatement(FunctionDeclara tionStatement node) => new FunctionDeclarationStatement(cloneNode(node.functionD eclaration)); 1412 => new FormalParameterList(
1166 1413 cloneToken(node.leftParenthesis),
1167 @override 1414 cloneNodeList(node.parameters),
1168 FunctionExpression visitFunctionExpression(FunctionExpression node) => new Fun ctionExpression(cloneNode(node.parameters), cloneNode(node.body)); 1415 cloneToken(node.leftDelimiter),
1169 1416 cloneToken(node.rightDelimiter),
1170 @override 1417 cloneToken(node.rightParenthesis));
1171 FunctionExpressionInvocation visitFunctionExpressionInvocation(FunctionExpress ionInvocation node) => new FunctionExpressionInvocation(cloneNode(node.function) , cloneNode(node.argumentList)); 1418
1172 1419 @override
1173 @override 1420 ForStatement visitForStatement(ForStatement node)
1174 FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) => new Functi onTypeAlias(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.returnType), cloneNode(node.name), cloneNode(node.t ypeParameters), cloneNode(node.parameters), node.semicolon); 1421 => new ForStatement(
1175 1422 cloneToken(node.forKeyword),
1176 @override 1423 cloneToken(node.leftParenthesis),
1177 FunctionTypedFormalParameter visitFunctionTypedFormalParameter(FunctionTypedFo rmalParameter node) => new FunctionTypedFormalParameter(cloneNode(node.documenta tionComment), cloneNodeList(node.metadata), cloneNode(node.returnType), cloneNod e(node.identifier), cloneNode(node.parameters)); 1424 cloneNode(node.variables),
1178 1425 cloneNode(node.initialization),
1179 @override 1426 cloneToken(node.leftSeparator),
1180 HideCombinator visitHideCombinator(HideCombinator node) => new HideCombinator( node.keyword, cloneNodeList(node.hiddenNames)); 1427 cloneNode(node.condition),
1181 1428 cloneToken(node.rightSeparator),
1182 @override 1429 cloneNodeList(node.updaters),
1183 IfStatement visitIfStatement(IfStatement node) => new IfStatement(node.ifKeywo rd, node.leftParenthesis, cloneNode(node.condition), node.rightParenthesis, clon eNode(node.thenStatement), node.elseKeyword, cloneNode(node.elseStatement)); 1430 cloneToken(node.rightParenthesis),
1184 1431 cloneNode(node.body));
1185 @override 1432
1186 ImplementsClause visitImplementsClause(ImplementsClause node) => new Implement sClause(node.keyword, cloneNodeList(node.interfaces)); 1433 @override
1434 FunctionDeclaration visitFunctionDeclaration(FunctionDeclaration node)
1435 => new FunctionDeclaration(
1436 cloneNode(node.documentationComment),
1437 cloneNodeList(node.metadata),
1438 cloneToken(node.externalKeyword),
1439 cloneNode(node.returnType),
1440 cloneToken(node.propertyKeyword),
1441 cloneNode(node.name),
1442 cloneNode(node.functionExpression));
1443
1444 @override
1445 FunctionDeclarationStatement visitFunctionDeclarationStatement(FunctionDeclara tionStatement node)
1446 => new FunctionDeclarationStatement(cloneNode(node.functionDeclaration));
1447
1448 @override
1449 FunctionExpression visitFunctionExpression(FunctionExpression node)
1450 => new FunctionExpression(
1451 cloneNode(node.parameters),
1452 cloneNode(node.body));
1453
1454 @override
1455 FunctionExpressionInvocation visitFunctionExpressionInvocation(FunctionExpress ionInvocation node)
1456 => new FunctionExpressionInvocation(
1457 cloneNode(node.function),
1458 cloneNode(node.argumentList));
1459
1460 @override
1461 FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node)
1462 => new FunctionTypeAlias(
1463 cloneNode(node.documentationComment),
1464 cloneNodeList(node.metadata),
1465 cloneToken(node.keyword),
1466 cloneNode(node.returnType),
1467 cloneNode(node.name),
1468 cloneNode(node.typeParameters),
1469 cloneNode(node.parameters),
1470 cloneToken(node.semicolon));
1471
1472 @override
1473 FunctionTypedFormalParameter visitFunctionTypedFormalParameter(FunctionTypedFo rmalParameter node)
1474 => new FunctionTypedFormalParameter(
1475 cloneNode(node.documentationComment),
1476 cloneNodeList(node.metadata),
1477 cloneNode(node.returnType),
1478 cloneNode(node.identifier),
1479 cloneNode(node.parameters));
1480
1481 @override
1482 HideCombinator visitHideCombinator(HideCombinator node)
1483 => new HideCombinator(
1484 cloneToken(node.keyword),
1485 cloneNodeList(node.hiddenNames));
1486
1487 @override
1488 IfStatement visitIfStatement(IfStatement node)
1489 => new IfStatement(
1490 cloneToken(node.ifKeyword),
1491 cloneToken(node.leftParenthesis),
1492 cloneNode(node.condition),
1493 cloneToken(node.rightParenthesis),
1494 cloneNode(node.thenStatement),
1495 cloneToken(node.elseKeyword),
1496 cloneNode(node.elseStatement));
1497
1498 @override
1499 ImplementsClause visitImplementsClause(ImplementsClause node)
1500 => new ImplementsClause(
1501 cloneToken(node.keyword),
1502 cloneNodeList(node.interfaces));
1187 1503
1188 @override 1504 @override
1189 ImportDirective visitImportDirective(ImportDirective node) { 1505 ImportDirective visitImportDirective(ImportDirective node) {
1190 ImportDirective directive = new ImportDirective(cloneNode(node.documentation Comment), cloneNodeList(node.metadata), node.keyword, cloneNode(node.uri), node. deferredToken, node.asToken, cloneNode(node.prefix), cloneNodeList(node.combinat ors), node.semicolon); 1506 ImportDirective directive = new ImportDirective(
1507 cloneNode(node.documentationComment),
1508 cloneNodeList(node.metadata),
1509 cloneToken(node.keyword),
1510 cloneNode(node.uri),
1511 cloneToken(node.deferredToken),
1512 cloneToken(node.asToken),
1513 cloneNode(node.prefix),
1514 cloneNodeList(node.combinators),
1515 cloneToken(node.semicolon));
1191 directive.source = node.source; 1516 directive.source = node.source;
1192 directive.uriContent = node.uriContent; 1517 directive.uriContent = node.uriContent;
1193 return directive; 1518 return directive;
1194 } 1519 }
1195 1520
1196 @override 1521 @override
1197 IndexExpression visitIndexExpression(IndexExpression node) { 1522 IndexExpression visitIndexExpression(IndexExpression node) {
1198 Token period = node.period; 1523 Token period = node.period;
1199 if (period == null) { 1524 if (period == null) {
1200 return new IndexExpression.forTarget(cloneNode(node.target), node.leftBrac ket, cloneNode(node.index), node.rightBracket); 1525 return new IndexExpression.forTarget(
1526 cloneNode(node.target),
1527 cloneToken(node.leftBracket),
1528 cloneNode(node.index),
1529 cloneToken(node.rightBracket));
1201 } else { 1530 } else {
1202 return new IndexExpression.forCascade(period, node.leftBracket, cloneNode( node.index), node.rightBracket); 1531 return new IndexExpression.forCascade(
1532 cloneToken(period),
1533 cloneToken(node.leftBracket),
1534 cloneNode(node.index),
1535 cloneToken(node.rightBracket));
1203 } 1536 }
1204 } 1537 }
1205 1538
1206 @override 1539 @override
1207 InstanceCreationExpression visitInstanceCreationExpression(InstanceCreationExp ression node) => new InstanceCreationExpression(node.keyword, cloneNode(node.con structorName), cloneNode(node.argumentList)); 1540 InstanceCreationExpression visitInstanceCreationExpression(InstanceCreationExp ression node)
1208 1541 => new InstanceCreationExpression(
1209 @override 1542 cloneToken(node.keyword),
1210 IntegerLiteral visitIntegerLiteral(IntegerLiteral node) => new IntegerLiteral( node.literal, node.value); 1543 cloneNode(node.constructorName),
1211 1544 cloneNode(node.argumentList));
1212 @override 1545
1213 InterpolationExpression visitInterpolationExpression(InterpolationExpression n ode) => new InterpolationExpression(node.leftBracket, cloneNode(node.expression) , node.rightBracket); 1546 @override
1214 1547 IntegerLiteral visitIntegerLiteral(IntegerLiteral node)
1215 @override 1548 => new IntegerLiteral(cloneToken(node.literal), node.value);
1216 InterpolationString visitInterpolationString(InterpolationString node) => new InterpolationString(node.contents, node.value); 1549
1217 1550 @override
1218 @override 1551 InterpolationExpression visitInterpolationExpression(InterpolationExpression n ode)
1219 IsExpression visitIsExpression(IsExpression node) => new IsExpression(cloneNod e(node.expression), node.isOperator, node.notOperator, cloneNode(node.type)); 1552 => new InterpolationExpression(
1220 1553 cloneToken(node.leftBracket),
1221 @override 1554 cloneNode(node.expression),
1222 Label visitLabel(Label node) => new Label(cloneNode(node.label), node.colon); 1555 cloneToken(node.rightBracket));
1223 1556
1224 @override 1557 @override
1225 LabeledStatement visitLabeledStatement(LabeledStatement node) => new LabeledSt atement(cloneNodeList(node.labels), cloneNode(node.statement)); 1558 InterpolationString visitInterpolationString(InterpolationString node)
1226 1559 => new InterpolationString(cloneToken(node.contents), node.value);
1227 @override 1560
1228 LibraryDirective visitLibraryDirective(LibraryDirective node) => new LibraryDi rective(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node .libraryToken, cloneNode(node.name), node.semicolon); 1561 @override
1229 1562 IsExpression visitIsExpression(IsExpression node)
1230 @override 1563 => new IsExpression(
1231 LibraryIdentifier visitLibraryIdentifier(LibraryIdentifier node) => new Librar yIdentifier(cloneNodeList(node.components)); 1564 cloneNode(node.expression),
1232 1565 cloneToken(node.isOperator),
1233 @override 1566 cloneToken(node.notOperator),
1234 ListLiteral visitListLiteral(ListLiteral node) => new ListLiteral(node.constKe yword, cloneNode(node.typeArguments), node.leftBracket, cloneNodeList(node.eleme nts), node.rightBracket); 1567 cloneNode(node.type));
1235 1568
1236 @override 1569 @override
1237 MapLiteral visitMapLiteral(MapLiteral node) => new MapLiteral(node.constKeywor d, cloneNode(node.typeArguments), node.leftBracket, cloneNodeList(node.entries), node.rightBracket); 1570 Label visitLabel(Label node)
1238 1571 => new Label(cloneNode(node.label), cloneToken(node.colon));
1239 @override 1572
1240 MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node) => new MapLiteralEn try(cloneNode(node.key), node.separator, cloneNode(node.value)); 1573 @override
1241 1574 LabeledStatement visitLabeledStatement(LabeledStatement node)
1242 @override 1575 => new LabeledStatement(
1243 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => new Method Declaration(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.externalKeyword, node.modifierKeyword, cloneNode(node.returnType), node.pro pertyKeyword, node.operatorKeyword, cloneNode(node.name), cloneNode(node.paramet ers), cloneNode(node.body)); 1576 cloneNodeList(node.labels),
1244 1577 cloneNode(node.statement));
1245 @override 1578
1246 MethodInvocation visitMethodInvocation(MethodInvocation node) => new MethodInv ocation(cloneNode(node.target), node.period, cloneNode(node.methodName), cloneNo de(node.argumentList)); 1579 @override
1247 1580 LibraryDirective visitLibraryDirective(LibraryDirective node)
1248 @override 1581 => new LibraryDirective(
1249 NamedExpression visitNamedExpression(NamedExpression node) => new NamedExpress ion(cloneNode(node.name), cloneNode(node.expression)); 1582 cloneNode(node.documentationComment),
1250 1583 cloneNodeList(node.metadata),
1251 @override 1584 cloneToken(node.libraryToken),
1252 AstNode visitNativeClause(NativeClause node) => new NativeClause(node.keyword, cloneNode(node.name)); 1585 cloneNode(node.name),
1253 1586 cloneToken(node.semicolon));
1254 @override 1587
1255 NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node) => new Nat iveFunctionBody(node.nativeToken, cloneNode(node.stringLiteral), node.semicolon) ; 1588 @override
1256 1589 LibraryIdentifier visitLibraryIdentifier(LibraryIdentifier node)
1257 @override 1590 => new LibraryIdentifier(cloneNodeList(node.components));
1258 NullLiteral visitNullLiteral(NullLiteral node) => new NullLiteral(node.literal ); 1591
1259 1592 @override
1260 @override 1593 ListLiteral visitListLiteral(ListLiteral node)
1261 ParenthesizedExpression visitParenthesizedExpression(ParenthesizedExpression n ode) => new ParenthesizedExpression(node.leftParenthesis, cloneNode(node.express ion), node.rightParenthesis); 1594 => new ListLiteral(
1595 cloneToken(node.constKeyword),
1596 cloneNode(node.typeArguments),
1597 cloneToken(node.leftBracket),
1598 cloneNodeList(node.elements),
1599 cloneToken(node.rightBracket));
1600
1601 @override
1602 MapLiteral visitMapLiteral(MapLiteral node)
1603 => new MapLiteral(
1604 cloneToken(node.constKeyword),
1605 cloneNode(node.typeArguments),
1606 cloneToken(node.leftBracket),
1607 cloneNodeList(node.entries),
1608 cloneToken(node.rightBracket));
1609
1610 @override
1611 MapLiteralEntry visitMapLiteralEntry(MapLiteralEntry node)
1612 => new MapLiteralEntry(
1613 cloneNode(node.key),
1614 cloneToken(node.separator),
1615 cloneNode(node.value));
1616
1617 @override
1618 MethodDeclaration visitMethodDeclaration(MethodDeclaration node)
1619 => new MethodDeclaration(
1620 cloneNode(node.documentationComment),
1621 cloneNodeList(node.metadata),
1622 cloneToken(node.externalKeyword),
1623 cloneToken(node.modifierKeyword),
1624 cloneNode(node.returnType),
1625 cloneToken(node.propertyKeyword),
1626 cloneToken(node.operatorKeyword),
1627 cloneNode(node.name),
1628 cloneNode(node.parameters),
1629 cloneNode(node.body));
1630
1631 @override
1632 MethodInvocation visitMethodInvocation(MethodInvocation node)
1633 => new MethodInvocation(
1634 cloneNode(node.target),
1635 cloneToken(node.period),
1636 cloneNode(node.methodName),
1637 cloneNode(node.argumentList));
1638
1639 @override
1640 NamedExpression visitNamedExpression(NamedExpression node)
1641 => new NamedExpression(cloneNode(node.name), cloneNode(node.expression));
1642
1643 @override
1644 AstNode visitNativeClause(NativeClause node)
1645 => new NativeClause(cloneToken(node.keyword), cloneNode(node.name));
1646
1647 @override
1648 NativeFunctionBody visitNativeFunctionBody(NativeFunctionBody node)
1649 => new NativeFunctionBody(
1650 cloneToken(node.nativeToken),
1651 cloneNode(node.stringLiteral),
1652 cloneToken(node.semicolon));
1653
1654 @override
1655 NullLiteral visitNullLiteral(NullLiteral node)
1656 => new NullLiteral(cloneToken(node.literal));
1657
1658 @override
1659 ParenthesizedExpression visitParenthesizedExpression(ParenthesizedExpression n ode)
1660 => new ParenthesizedExpression(
1661 cloneToken(node.leftParenthesis),
1662 cloneNode(node.expression),
1663 cloneToken(node.rightParenthesis));
1262 1664
1263 @override 1665 @override
1264 PartDirective visitPartDirective(PartDirective node) { 1666 PartDirective visitPartDirective(PartDirective node) {
1265 PartDirective directive = new PartDirective(cloneNode(node.documentationComm ent), cloneNodeList(node.metadata), node.partToken, cloneNode(node.uri), node.se micolon); 1667 PartDirective directive = new PartDirective(
1668 cloneNode(node.documentationComment),
1669 cloneNodeList(node.metadata),
1670 cloneToken(node.partToken),
1671 cloneNode(node.uri),
1672 cloneToken(node.semicolon));
1266 directive.source = node.source; 1673 directive.source = node.source;
1267 directive.uriContent = node.uriContent; 1674 directive.uriContent = node.uriContent;
1268 return directive; 1675 return directive;
1269 } 1676 }
1270 1677
1271 @override 1678 @override
1272 PartOfDirective visitPartOfDirective(PartOfDirective node) => new PartOfDirect ive(cloneNode(node.documentationComment), cloneNodeList(node.metadata), node.par tToken, node.ofToken, cloneNode(node.libraryName), node.semicolon); 1679 PartOfDirective visitPartOfDirective(PartOfDirective node)
1273 1680 => new PartOfDirective(
1274 @override 1681 cloneNode(node.documentationComment),
1275 PostfixExpression visitPostfixExpression(PostfixExpression node) => new Postfi xExpression(cloneNode(node.operand), node.operator); 1682 cloneNodeList(node.metadata),
1276 1683 cloneToken(node.partToken),
1277 @override 1684 cloneToken(node.ofToken),
1278 PrefixedIdentifier visitPrefixedIdentifier(PrefixedIdentifier node) => new Pre fixedIdentifier(cloneNode(node.prefix), node.period, cloneNode(node.identifier)) ; 1685 cloneNode(node.libraryName),
1279 1686 cloneToken(node.semicolon));
1280 @override 1687
1281 PrefixExpression visitPrefixExpression(PrefixExpression node) => new PrefixExp ression(node.operator, cloneNode(node.operand)); 1688 @override
1282 1689 PostfixExpression visitPostfixExpression(PostfixExpression node)
1283 @override 1690 => new PostfixExpression(
1284 PropertyAccess visitPropertyAccess(PropertyAccess node) => new PropertyAccess( cloneNode(node.target), node.operator, cloneNode(node.propertyName)); 1691 cloneNode(node.operand),
1285 1692 cloneToken(node.operator));
1286 @override 1693
1287 RedirectingConstructorInvocation visitRedirectingConstructorInvocation(Redirec tingConstructorInvocation node) => new RedirectingConstructorInvocation(node.key word, node.period, cloneNode(node.constructorName), cloneNode(node.argumentList) ); 1694 @override
1288 1695 PrefixedIdentifier visitPrefixedIdentifier(PrefixedIdentifier node)
1289 @override 1696 => new PrefixedIdentifier(
1290 RethrowExpression visitRethrowExpression(RethrowExpression node) => new Rethro wExpression(node.keyword); 1697 cloneNode(node.prefix),
1291 1698 cloneToken(node.period),
1292 @override 1699 cloneNode(node.identifier));
1293 ReturnStatement visitReturnStatement(ReturnStatement node) => new ReturnStatem ent(node.keyword, cloneNode(node.expression), node.semicolon); 1700
1294 1701 @override
1295 @override 1702 PrefixExpression visitPrefixExpression(PrefixExpression node)
1296 ScriptTag visitScriptTag(ScriptTag node) => new ScriptTag(node.scriptTag); 1703 => new PrefixExpression(
1297 1704 cloneToken(node.operator),
1298 @override 1705 cloneNode(node.operand));
1299 ShowCombinator visitShowCombinator(ShowCombinator node) => new ShowCombinator( node.keyword, cloneNodeList(node.shownNames)); 1706
1300 1707 @override
1301 @override 1708 PropertyAccess visitPropertyAccess(PropertyAccess node)
1302 SimpleFormalParameter visitSimpleFormalParameter(SimpleFormalParameter node) = > new SimpleFormalParameter(cloneNode(node.documentationComment), cloneNodeList( node.metadata), node.keyword, cloneNode(node.type), cloneNode(node.identifier)); 1709 => new PropertyAccess(
1303 1710 cloneNode(node.target),
1304 @override 1711 cloneToken(node.operator),
1305 SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node) => new SimpleIde ntifier(node.token); 1712 cloneNode(node.propertyName));
1306 1713
1307 @override 1714 @override
1308 SimpleStringLiteral visitSimpleStringLiteral(SimpleStringLiteral node) => new SimpleStringLiteral(node.literal, node.value); 1715 RedirectingConstructorInvocation visitRedirectingConstructorInvocation(Redirec tingConstructorInvocation node)
1309 1716 => new RedirectingConstructorInvocation(
1310 @override 1717 cloneToken(node.keyword),
1311 StringInterpolation visitStringInterpolation(StringInterpolation node) => new StringInterpolation(cloneNodeList(node.elements)); 1718 cloneToken(node.period),
1312 1719 cloneNode(node.constructorName),
1313 @override 1720 cloneNode(node.argumentList));
1314 SuperConstructorInvocation visitSuperConstructorInvocation(SuperConstructorInv ocation node) => new SuperConstructorInvocation(node.keyword, node.period, clone Node(node.constructorName), cloneNode(node.argumentList)); 1721
1315 1722 @override
1316 @override 1723 RethrowExpression visitRethrowExpression(RethrowExpression node)
1317 SuperExpression visitSuperExpression(SuperExpression node) => new SuperExpress ion(node.keyword); 1724 => new RethrowExpression(cloneToken(node.keyword));
1318 1725
1319 @override 1726 @override
1320 SwitchCase visitSwitchCase(SwitchCase node) => new SwitchCase(cloneNodeList(no de.labels), node.keyword, cloneNode(node.expression), node.colon, cloneNodeList( node.statements)); 1727 ReturnStatement visitReturnStatement(ReturnStatement node)
1321 1728 => new ReturnStatement(
1322 @override 1729 cloneToken(node.keyword),
1323 SwitchDefault visitSwitchDefault(SwitchDefault node) => new SwitchDefault(clon eNodeList(node.labels), node.keyword, node.colon, cloneNodeList(node.statements) ); 1730 cloneNode(node.expression),
1324 1731 cloneToken(node.semicolon));
1325 @override 1732
1326 SwitchStatement visitSwitchStatement(SwitchStatement node) => new SwitchStatem ent(node.keyword, node.leftParenthesis, cloneNode(node.expression), node.rightPa renthesis, node.leftBracket, cloneNodeList(node.members), node.rightBracket); 1733 @override
1327 1734 ScriptTag visitScriptTag(ScriptTag node)
1328 @override 1735 => new ScriptTag(cloneToken(node.scriptTag));
1329 SymbolLiteral visitSymbolLiteral(SymbolLiteral node) => new SymbolLiteral(node .poundSign, node.components); 1736
1330 1737 @override
1331 @override 1738 ShowCombinator visitShowCombinator(ShowCombinator node)
1332 ThisExpression visitThisExpression(ThisExpression node) => new ThisExpression( node.keyword); 1739 => new ShowCombinator(
1333 1740 cloneToken(node.keyword),
1334 @override 1741 cloneNodeList(node.shownNames));
1335 ThrowExpression visitThrowExpression(ThrowExpression node) => new ThrowExpress ion(node.keyword, cloneNode(node.expression)); 1742
1336 1743 @override
1337 @override 1744 SimpleFormalParameter visitSimpleFormalParameter(SimpleFormalParameter node)
1338 TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableD eclaration node) => new TopLevelVariableDeclaration(cloneNode(node.documentation Comment), cloneNodeList(node.metadata), cloneNode(node.variables), node.semicolo n); 1745 => new SimpleFormalParameter(
1339 1746 cloneNode(node.documentationComment),
1340 @override 1747 cloneNodeList(node.metadata),
1341 TryStatement visitTryStatement(TryStatement node) => new TryStatement(node.try Keyword, cloneNode(node.body), cloneNodeList(node.catchClauses), node.finallyKey word, cloneNode(node.finallyBlock)); 1748 cloneToken(node.keyword),
1342 1749 cloneNode(node.type),
1343 @override 1750 cloneNode(node.identifier));
1344 TypeArgumentList visitTypeArgumentList(TypeArgumentList node) => new TypeArgum entList(node.leftBracket, cloneNodeList(node.arguments), node.rightBracket); 1751
1345 1752 @override
1346 @override 1753 SimpleIdentifier visitSimpleIdentifier(SimpleIdentifier node)
1347 TypeName visitTypeName(TypeName node) => new TypeName(cloneNode(node.name), cl oneNode(node.typeArguments)); 1754 => new SimpleIdentifier(cloneToken(node.token));
1348 1755
1349 @override 1756 @override
1350 TypeParameter visitTypeParameter(TypeParameter node) => new TypeParameter(clon eNode(node.documentationComment), cloneNodeList(node.metadata), cloneNode(node.n ame), node.keyword, cloneNode(node.bound)); 1757 SimpleStringLiteral visitSimpleStringLiteral(SimpleStringLiteral node)
1351 1758 => new SimpleStringLiteral(cloneToken(node.literal), node.value);
1352 @override 1759
1353 TypeParameterList visitTypeParameterList(TypeParameterList node) => new TypePa rameterList(node.leftBracket, cloneNodeList(node.typeParameters), node.rightBrac ket); 1760 @override
1354 1761 StringInterpolation visitStringInterpolation(StringInterpolation node)
1355 @override 1762 => new StringInterpolation(cloneNodeList(node.elements));
1356 VariableDeclaration visitVariableDeclaration(VariableDeclaration node) => new VariableDeclaration(null, cloneNodeList(node.metadata), cloneNode(node.name), no de.equals, cloneNode(node.initializer)); 1763
1357 1764 @override
1358 @override 1765 SuperConstructorInvocation visitSuperConstructorInvocation(SuperConstructorInv ocation node)
1359 VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList n ode) => new VariableDeclarationList(null, cloneNodeList(node.metadata), node.key word, cloneNode(node.type), cloneNodeList(node.variables)); 1766 => new SuperConstructorInvocation(
1360 1767 cloneToken(node.keyword),
1361 @override 1768 cloneToken(node.period),
1362 VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclara tionStatement node) => new VariableDeclarationStatement(cloneNode(node.variables ), node.semicolon); 1769 cloneNode(node.constructorName),
1363 1770 cloneNode(node.argumentList));
1364 @override 1771
1365 WhileStatement visitWhileStatement(WhileStatement node) => new WhileStatement( node.keyword, node.leftParenthesis, cloneNode(node.condition), node.rightParenth esis, cloneNode(node.body)); 1772 @override
1366 1773 SuperExpression visitSuperExpression(SuperExpression node)
1367 @override 1774 => new SuperExpression(cloneToken(node.keyword));
1368 WithClause visitWithClause(WithClause node) => new WithClause(node.withKeyword , cloneNodeList(node.mixinTypes)); 1775
1369 1776 @override
1370 @override 1777 SwitchCase visitSwitchCase(SwitchCase node)
1371 YieldStatement visitYieldStatement(YieldStatement node) => new YieldStatement( node.yieldKeyword, node.star, node.expression, node.semicolon); 1778 => new SwitchCase(
1372 1779 cloneNodeList(node.labels),
1373 AstNode cloneNode(AstNode node) { 1780 cloneToken(node.keyword),
1374 if (node == null) { 1781 cloneNode(node.expression),
1375 return null; 1782 cloneToken(node.colon),
1376 } 1783 cloneNodeList(node.statements));
1377 return node.accept(this) as AstNode; 1784
1378 } 1785 @override
1786 SwitchDefault visitSwitchDefault(SwitchDefault node)
1787 => new SwitchDefault(
1788 cloneNodeList(node.labels),
1789 cloneToken(node.keyword),
1790 cloneToken(node.colon),
1791 cloneNodeList(node.statements));
1792
1793 @override
1794 SwitchStatement visitSwitchStatement(SwitchStatement node)
1795 => new SwitchStatement(
1796 cloneToken(node.keyword),
1797 cloneToken(node.leftParenthesis),
1798 cloneNode(node.expression),
1799 cloneToken(node.rightParenthesis),
1800 cloneToken(node.leftBracket),
1801 cloneNodeList(node.members),
1802 cloneToken(node.rightBracket));
1803
1804 @override
1805 SymbolLiteral visitSymbolLiteral(SymbolLiteral node)
1806 => new SymbolLiteral(
1807 cloneToken(node.poundSign),
1808 cloneTokenList(node.components));
1809
1810 @override
1811 ThisExpression visitThisExpression(ThisExpression node)
1812 => new ThisExpression(cloneToken(node.keyword));
1813
1814 @override
1815 ThrowExpression visitThrowExpression(ThrowExpression node)
1816 => new ThrowExpression(
1817 cloneToken(node.keyword),
1818 cloneNode(node.expression));
1819
1820 @override
1821 TopLevelVariableDeclaration visitTopLevelVariableDeclaration(TopLevelVariableD eclaration node)
1822 => new TopLevelVariableDeclaration(
1823 cloneNode(node.documentationComment),
1824 cloneNodeList(node.metadata),
1825 cloneNode(node.variables),
1826 cloneToken(node.semicolon));
1827
1828 @override
1829 TryStatement visitTryStatement(TryStatement node)
1830 => new TryStatement(
1831 cloneToken(node.tryKeyword),
1832 cloneNode(node.body),
1833 cloneNodeList(node.catchClauses),
1834 cloneToken(node.finallyKeyword),
1835 cloneNode(node.finallyBlock));
1836
1837 @override
1838 TypeArgumentList visitTypeArgumentList(TypeArgumentList node)
1839 => new TypeArgumentList(
1840 cloneToken(node.leftBracket),
1841 cloneNodeList(node.arguments),
1842 cloneToken(node.rightBracket));
1843
1844 @override
1845 TypeName visitTypeName(TypeName node)
1846 => new TypeName(cloneNode(node.name), cloneNode(node.typeArguments));
1847
1848 @override
1849 TypeParameter visitTypeParameter(TypeParameter node)
1850 => new TypeParameter(
1851 cloneNode(node.documentationComment),
1852 cloneNodeList(node.metadata),
1853 cloneNode(node.name),
1854 cloneToken(node.keyword),
1855 cloneNode(node.bound));
1856
1857 @override
1858 TypeParameterList visitTypeParameterList(TypeParameterList node)
1859 => new TypeParameterList(
1860 cloneToken(node.leftBracket),
1861 cloneNodeList(node.typeParameters),
1862 cloneToken(node.rightBracket));
1863
1864 @override
1865 VariableDeclaration visitVariableDeclaration(VariableDeclaration node)
1866 => new VariableDeclaration(
1867 null,
1868 cloneNodeList(node.metadata),
1869 cloneNode(node.name),
1870 cloneToken(node.equals),
1871 cloneNode(node.initializer));
1872
1873 @override
1874 VariableDeclarationList visitVariableDeclarationList(VariableDeclarationList n ode)
1875 => new VariableDeclarationList(
1876 null,
1877 cloneNodeList(node.metadata),
1878 cloneToken(node.keyword),
1879 cloneNode(node.type),
1880 cloneNodeList(node.variables));
1881
1882 @override
1883 VariableDeclarationStatement visitVariableDeclarationStatement(VariableDeclara tionStatement node)
1884 => new VariableDeclarationStatement(
1885 cloneNode(node.variables),
1886 cloneToken(node.semicolon));
1887
1888 @override
1889 WhileStatement visitWhileStatement(WhileStatement node)
1890 => new WhileStatement(
1891 cloneToken(node.keyword),
1892 cloneToken(node.leftParenthesis),
1893 cloneNode(node.condition),
1894 cloneToken(node.rightParenthesis),
1895 cloneNode(node.body));
1896
1897 @override
1898 WithClause visitWithClause(WithClause node)
1899 => new WithClause(
1900 cloneToken(node.withKeyword),
1901 cloneNodeList(node.mixinTypes));
1902
1903 @override
1904 YieldStatement visitYieldStatement(YieldStatement node)
1905 => new YieldStatement(
1906 cloneToken(node.yieldKeyword),
1907 cloneToken(node.star),
1908 cloneNode(node.expression),
1909 cloneToken(node.semicolon));
1379 } 1910 }
1380 1911
1381 /** 1912 /**
1382 * Instances of the class `AstComparator` compare the structure of two ASTNodes to see whether 1913 * An `AstComparator` compares the structure of two AstNodes to see whether
1383 * they are equal. 1914 * they are equal.
1384 */ 1915 */
1385 class AstComparator implements AstVisitor<bool> { 1916 class AstComparator implements AstVisitor<bool> {
1386 /** 1917 /**
1387 * Return `true` if the two AST nodes are equal. 1918 * Return `true` if the [first] node and the [second] node are equal.
1388 *
1389 * @param first the first node being compared
1390 * @param second the second node being compared
1391 * @return `true` if the two AST nodes are equal
1392 */ 1919 */
1393 static bool equalNodes(AstNode first, AstNode second) { 1920 static bool equalNodes(AstNode first, AstNode second) {
1394 AstComparator comparator = new AstComparator(); 1921 AstComparator comparator = new AstComparator();
1395 return comparator._isEqualNodes(first, second); 1922 return comparator.isEqualNodes(first, second);
1396 } 1923 }
1397 1924
1398 /** 1925 /**
1399 * The AST node with which the node being visited is to be compared. This is o nly valid at the 1926 * The AST node with which the node being visited is to be compared. This is o nly valid at the
1400 * beginning of each visit method (until [isEqualNodes] is invoked). 1927 * beginning of each visit method (until [isEqualNodes] is invoked).
1401 */ 1928 */
1402 AstNode _other; 1929 AstNode _other;
1403 1930
1404 @override 1931 @override
1405 bool visitAdjacentStrings(AdjacentStrings node) { 1932 bool visitAdjacentStrings(AdjacentStrings node) {
1406 AdjacentStrings other = this._other as AdjacentStrings; 1933 AdjacentStrings other = this._other as AdjacentStrings;
1407 return _isEqualNodeLists(node.strings, other.strings); 1934 return _isEqualNodeLists(node.strings, other.strings);
1408 } 1935 }
1409 1936
1410 @override 1937 @override
1411 bool visitAnnotation(Annotation node) { 1938 bool visitAnnotation(Annotation node) {
1412 Annotation other = this._other as Annotation; 1939 Annotation other = this._other as Annotation;
1413 return _isEqualTokens(node.atSign, other.atSign) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.period, other.period) && _isEqualNodes(node. constructorName, other.constructorName) && _isEqualNodes(node.arguments, other.a rguments); 1940 return isEqualTokens(node.atSign, other.atSign) && isEqualNodes(node.name, o ther.name) && isEqualTokens(node.period, other.period) && isEqualNodes(node.cons tructorName, other.constructorName) && isEqualNodes(node.arguments, other.argume nts);
1414 } 1941 }
1415 1942
1416 @override 1943 @override
1417 bool visitArgumentList(ArgumentList node) { 1944 bool visitArgumentList(ArgumentList node) {
1418 ArgumentList other = this._other as ArgumentList; 1945 ArgumentList other = this._other as ArgumentList;
1419 return _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqu alNodeLists(node.arguments, other.arguments) && _isEqualTokens(node.rightParenth esis, other.rightParenthesis); 1946 return isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqua lNodeLists(node.arguments, other.arguments) && isEqualTokens(node.rightParenthes is, other.rightParenthesis);
1420 } 1947 }
1421 1948
1422 @override 1949 @override
1423 bool visitAsExpression(AsExpression node) { 1950 bool visitAsExpression(AsExpression node) {
1424 AsExpression other = this._other as AsExpression; 1951 AsExpression other = this._other as AsExpression;
1425 return _isEqualNodes(node.expression, other.expression) && _isEqualTokens(no de.asOperator, other.asOperator) && _isEqualNodes(node.type, other.type); 1952 return isEqualNodes(node.expression, other.expression) && isEqualTokens(node .asOperator, other.asOperator) && isEqualNodes(node.type, other.type);
1426 } 1953 }
1427 1954
1428 @override 1955 @override
1429 bool visitAssertStatement(AssertStatement node) { 1956 bool visitAssertStatement(AssertStatement node) {
1430 AssertStatement other = this._other as AssertStatement; 1957 AssertStatement other = this._other as AssertStatement;
1431 return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.le ftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other.con dition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isE qualTokens(node.semicolon, other.semicolon); 1958 return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.left Parenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.condit ion) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualT okens(node.semicolon, other.semicolon);
1432 } 1959 }
1433 1960
1434 @override 1961 @override
1435 bool visitAssignmentExpression(AssignmentExpression node) { 1962 bool visitAssignmentExpression(AssignmentExpression node) {
1436 AssignmentExpression other = this._other as AssignmentExpression; 1963 AssignmentExpression other = this._other as AssignmentExpression;
1437 return _isEqualNodes(node.leftHandSide, other.leftHandSide) && _isEqualToken s(node.operator, other.operator) && _isEqualNodes(node.rightHandSide, other.righ tHandSide); 1964 return isEqualNodes(node.leftHandSide, other.leftHandSide) && isEqualTokens( node.operator, other.operator) && isEqualNodes(node.rightHandSide, other.rightHa ndSide);
1438 } 1965 }
1439 1966
1440 @override 1967 @override
1441 bool visitAwaitExpression(AwaitExpression node) { 1968 bool visitAwaitExpression(AwaitExpression node) {
1442 AwaitExpression other = this._other as AwaitExpression; 1969 AwaitExpression other = this._other as AwaitExpression;
1443 return _isEqualTokens(node.awaitKeyword, other.awaitKeyword) && _isEqualNode s(node.expression, other.expression); 1970 return isEqualTokens(node.awaitKeyword, other.awaitKeyword) && isEqualNodes( node.expression, other.expression);
1444 } 1971 }
1445 1972
1446 @override 1973 @override
1447 bool visitBinaryExpression(BinaryExpression node) { 1974 bool visitBinaryExpression(BinaryExpression node) {
1448 BinaryExpression other = this._other as BinaryExpression; 1975 BinaryExpression other = this._other as BinaryExpression;
1449 return _isEqualNodes(node.leftOperand, other.leftOperand) && _isEqualTokens( node.operator, other.operator) && _isEqualNodes(node.rightOperand, other.rightOp erand); 1976 return isEqualNodes(node.leftOperand, other.leftOperand) && isEqualTokens(no de.operator, other.operator) && isEqualNodes(node.rightOperand, other.rightOpera nd);
1450 } 1977 }
1451 1978
1452 @override 1979 @override
1453 bool visitBlock(Block node) { 1980 bool visitBlock(Block node) {
1454 Block other = this._other as Block; 1981 Block other = this._other as Block;
1455 return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLi sts(node.statements, other.statements) && _isEqualTokens(node.rightBracket, othe r.rightBracket); 1982 return isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLis ts(node.statements, other.statements) && isEqualTokens(node.rightBracket, other. rightBracket);
1456 } 1983 }
1457 1984
1458 @override 1985 @override
1459 bool visitBlockFunctionBody(BlockFunctionBody node) { 1986 bool visitBlockFunctionBody(BlockFunctionBody node) {
1460 BlockFunctionBody other = this._other as BlockFunctionBody; 1987 BlockFunctionBody other = this._other as BlockFunctionBody;
1461 return _isEqualNodes(node.block, other.block); 1988 return isEqualNodes(node.block, other.block);
1462 } 1989 }
1463 1990
1464 @override 1991 @override
1465 bool visitBooleanLiteral(BooleanLiteral node) { 1992 bool visitBooleanLiteral(BooleanLiteral node) {
1466 BooleanLiteral other = this._other as BooleanLiteral; 1993 BooleanLiteral other = this._other as BooleanLiteral;
1467 return _isEqualTokens(node.literal, other.literal) && node.value == other.va lue; 1994 return isEqualTokens(node.literal, other.literal) && node.value == other.val ue;
1468 } 1995 }
1469 1996
1470 @override 1997 @override
1471 bool visitBreakStatement(BreakStatement node) { 1998 bool visitBreakStatement(BreakStatement node) {
1472 BreakStatement other = this._other as BreakStatement; 1999 BreakStatement other = this._other as BreakStatement;
1473 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.lab el, other.label) && _isEqualTokens(node.semicolon, other.semicolon); 2000 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.label , other.label) && isEqualTokens(node.semicolon, other.semicolon);
1474 } 2001 }
1475 2002
1476 @override 2003 @override
1477 bool visitCascadeExpression(CascadeExpression node) { 2004 bool visitCascadeExpression(CascadeExpression node) {
1478 CascadeExpression other = this._other as CascadeExpression; 2005 CascadeExpression other = this._other as CascadeExpression;
1479 return _isEqualNodes(node.target, other.target) && _isEqualNodeLists(node.ca scadeSections, other.cascadeSections); 2006 return isEqualNodes(node.target, other.target) && _isEqualNodeLists(node.cas cadeSections, other.cascadeSections);
1480 } 2007 }
1481 2008
1482 @override 2009 @override
1483 bool visitCatchClause(CatchClause node) { 2010 bool visitCatchClause(CatchClause node) {
1484 CatchClause other = this._other as CatchClause; 2011 CatchClause other = this._other as CatchClause;
1485 return _isEqualTokens(node.onKeyword, other.onKeyword) && _isEqualNodes(node .exceptionType, other.exceptionType) && _isEqualTokens(node.catchKeyword, other. catchKeyword) && _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.exceptionParameter, other.exceptionParameter) && _isEqualToke ns(node.comma, other.comma) && _isEqualNodes(node.stackTraceParameter, other.sta ckTraceParameter) && _isEqualTokens(node.rightParenthesis, other.rightParenthesi s) && _isEqualNodes(node.body, other.body); 2012 return isEqualTokens(node.onKeyword, other.onKeyword) && isEqualNodes(node.e xceptionType, other.exceptionType) && isEqualTokens(node.catchKeyword, other.cat chKeyword) && isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEq ualNodes(node.exceptionParameter, other.exceptionParameter) && isEqualTokens(nod e.comma, other.comma) && isEqualNodes(node.stackTraceParameter, other.stackTrace Parameter) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && is EqualNodes(node.body, other.body);
1486 } 2013 }
1487 2014
1488 @override 2015 @override
1489 bool visitClassDeclaration(ClassDeclaration node) { 2016 bool visitClassDeclaration(ClassDeclaration node) {
1490 ClassDeclaration other = this._other as ClassDeclaration; 2017 ClassDeclaration other = this._other as ClassDeclaration;
1491 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.abstr actKeyword, other.abstractKeyword) && _isEqualTokens(node.classKeyword, other.cl assKeyword) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.typePa rameters, other.typeParameters) && _isEqualNodes(node.extendsClause, other.exten dsClause) && _isEqualNodes(node.withClause, other.withClause) && _isEqualNodes(n ode.implementsClause, other.implementsClause) && _isEqualTokens(node.leftBracket , other.leftBracket) && _isEqualNodeLists(node.members, other.members) && _isEqu alTokens(node.rightBracket, other.rightBracket); 2018 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.abstrac tKeyword, other.abstractKeyword) && isEqualTokens(node.classKeyword, other.class Keyword) && isEqualNodes(node.name, other.name) && isEqualNodes(node.typeParamet ers, other.typeParameters) && isEqualNodes(node.extendsClause, other.extendsClau se) && isEqualNodes(node.withClause, other.withClause) && isEqualNodes(node.impl ementsClause, other.implementsClause) && isEqualTokens(node.leftBracket, other.l eftBracket) && _isEqualNodeLists(node.members, other.members) && isEqualTokens(n ode.rightBracket, other.rightBracket);
1492 } 2019 }
1493 2020
1494 @override 2021 @override
1495 bool visitClassTypeAlias(ClassTypeAlias node) { 2022 bool visitClassTypeAlias(ClassTypeAlias node) {
1496 ClassTypeAlias other = this._other as ClassTypeAlias; 2023 ClassTypeAlias other = this._other as ClassTypeAlias;
1497 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node .typeParameters, other.typeParameters) && _isEqualTokens(node.equals, other.equa ls) && _isEqualTokens(node.abstractKeyword, other.abstractKeyword) && _isEqualNo des(node.superclass, other.superclass) && _isEqualNodes(node.withClause, other.w ithClause) && _isEqualNodes(node.implementsClause, other.implementsClause) && _i sEqualTokens(node.semicolon, other.semicolon); 2024 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.name, other.name) && isEqualNodes(node.typ eParameters, other.typeParameters) && isEqualTokens(node.equals, other.equals) & & isEqualTokens(node.abstractKeyword, other.abstractKeyword) && isEqualNodes(nod e.superclass, other.superclass) && isEqualNodes(node.withClause, other.withClaus e) && isEqualNodes(node.implementsClause, other.implementsClause) && isEqualToke ns(node.semicolon, other.semicolon);
1498 } 2025 }
1499 2026
1500 @override 2027 @override
1501 bool visitComment(Comment node) { 2028 bool visitComment(Comment node) {
1502 Comment other = this._other as Comment; 2029 Comment other = this._other as Comment;
1503 return _isEqualNodeLists(node.references, other.references); 2030 return _isEqualNodeLists(node.references, other.references);
1504 } 2031 }
1505 2032
1506 @override 2033 @override
1507 bool visitCommentReference(CommentReference node) { 2034 bool visitCommentReference(CommentReference node) {
1508 CommentReference other = this._other as CommentReference; 2035 CommentReference other = this._other as CommentReference;
1509 return _isEqualTokens(node.newKeyword, other.newKeyword) && _isEqualNodes(no de.identifier, other.identifier); 2036 return isEqualTokens(node.newKeyword, other.newKeyword) && isEqualNodes(node .identifier, other.identifier);
1510 } 2037 }
1511 2038
1512 @override 2039 @override
1513 bool visitCompilationUnit(CompilationUnit node) { 2040 bool visitCompilationUnit(CompilationUnit node) {
1514 CompilationUnit other = this._other as CompilationUnit; 2041 CompilationUnit other = this._other as CompilationUnit;
1515 return _isEqualTokens(node.beginToken, other.beginToken) && _isEqualNodes(no de.scriptTag, other.scriptTag) && _isEqualNodeLists(node.directives, other.direc tives) && _isEqualNodeLists(node.declarations, other.declarations) && _isEqualTo kens(node.endToken, other.endToken); 2042 return isEqualTokens(node.beginToken, other.beginToken) && isEqualNodes(node .scriptTag, other.scriptTag) && _isEqualNodeLists(node.directives, other.directi ves) && _isEqualNodeLists(node.declarations, other.declarations) && isEqualToken s(node.endToken, other.endToken);
1516 } 2043 }
1517 2044
1518 @override 2045 @override
1519 bool visitConditionalExpression(ConditionalExpression node) { 2046 bool visitConditionalExpression(ConditionalExpression node) {
1520 ConditionalExpression other = this._other as ConditionalExpression; 2047 ConditionalExpression other = this._other as ConditionalExpression;
1521 return _isEqualNodes(node.condition, other.condition) && _isEqualTokens(node .question, other.question) && _isEqualNodes(node.thenExpression, other.thenExpre ssion) && _isEqualTokens(node.colon, other.colon) && _isEqualNodes(node.elseExpr ession, other.elseExpression); 2048 return isEqualNodes(node.condition, other.condition) && isEqualTokens(node.q uestion, other.question) && isEqualNodes(node.thenExpression, other.thenExpressi on) && isEqualTokens(node.colon, other.colon) && isEqualNodes(node.elseExpressio n, other.elseExpression);
1522 } 2049 }
1523 2050
1524 @override 2051 @override
1525 bool visitConstructorDeclaration(ConstructorDeclaration node) { 2052 bool visitConstructorDeclaration(ConstructorDeclaration node) {
1526 ConstructorDeclaration other = this._other as ConstructorDeclaration; 2053 ConstructorDeclaration other = this._other as ConstructorDeclaration;
1527 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.exter nalKeyword, other.externalKeyword) && _isEqualTokens(node.constKeyword, other.co nstKeyword) && _isEqualTokens(node.factoryKeyword, other.factoryKeyword) && _isE qualNodes(node.returnType, other.returnType) && _isEqualTokens(node.period, othe r.period) && _isEqualNodes(node.name, other.name) && _isEqualNodes(node.paramete rs, other.parameters) && _isEqualTokens(node.separator, other.separator) && _isE qualNodeLists(node.initializers, other.initializers) && _isEqualNodes(node.redir ectedConstructor, other.redirectedConstructor) && _isEqualNodes(node.body, other .body); 2054 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.externa lKeyword, other.externalKeyword) && isEqualTokens(node.constKeyword, other.const Keyword) && isEqualTokens(node.factoryKeyword, other.factoryKeyword) && isEqualN odes(node.returnType, other.returnType) && isEqualTokens(node.period, other.peri od) && isEqualNodes(node.name, other.name) && isEqualNodes(node.parameters, othe r.parameters) && isEqualTokens(node.separator, other.separator) && _isEqualNodeL ists(node.initializers, other.initializers) && isEqualNodes(node.redirectedConst ructor, other.redirectedConstructor) && isEqualNodes(node.body, other.body);
1528 } 2055 }
1529 2056
1530 @override 2057 @override
1531 bool visitConstructorFieldInitializer(ConstructorFieldInitializer node) { 2058 bool visitConstructorFieldInitializer(ConstructorFieldInitializer node) {
1532 ConstructorFieldInitializer other = this._other as ConstructorFieldInitializ er; 2059 ConstructorFieldInitializer other = this._other as ConstructorFieldInitializ er;
1533 return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.pe riod, other.period) && _isEqualNodes(node.fieldName, other.fieldName) && _isEqua lTokens(node.equals, other.equals) && _isEqualNodes(node.expression, other.expre ssion); 2060 return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.peri od, other.period) && isEqualNodes(node.fieldName, other.fieldName) && isEqualTok ens(node.equals, other.equals) && isEqualNodes(node.expression, other.expression );
1534 } 2061 }
1535 2062
1536 @override 2063 @override
1537 bool visitConstructorName(ConstructorName node) { 2064 bool visitConstructorName(ConstructorName node) {
1538 ConstructorName other = this._other as ConstructorName; 2065 ConstructorName other = this._other as ConstructorName;
1539 return _isEqualNodes(node.type, other.type) && _isEqualTokens(node.period, o ther.period) && _isEqualNodes(node.name, other.name); 2066 return isEqualNodes(node.type, other.type) && isEqualTokens(node.period, oth er.period) && isEqualNodes(node.name, other.name);
1540 } 2067 }
1541 2068
1542 @override 2069 @override
1543 bool visitContinueStatement(ContinueStatement node) { 2070 bool visitContinueStatement(ContinueStatement node) {
1544 ContinueStatement other = this._other as ContinueStatement; 2071 ContinueStatement other = this._other as ContinueStatement;
1545 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.lab el, other.label) && _isEqualTokens(node.semicolon, other.semicolon); 2072 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.label , other.label) && isEqualTokens(node.semicolon, other.semicolon);
1546 } 2073 }
1547 2074
1548 @override 2075 @override
1549 bool visitDeclaredIdentifier(DeclaredIdentifier node) { 2076 bool visitDeclaredIdentifier(DeclaredIdentifier node) {
1550 DeclaredIdentifier other = this._other as DeclaredIdentifier; 2077 DeclaredIdentifier other = this._other as DeclaredIdentifier;
1551 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualNodes(node .identifier, other.identifier); 2078 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.type, other.type) && isEqualNodes(node.ide ntifier, other.identifier);
1552 } 2079 }
1553 2080
1554 @override 2081 @override
1555 bool visitDefaultFormalParameter(DefaultFormalParameter node) { 2082 bool visitDefaultFormalParameter(DefaultFormalParameter node) {
1556 DefaultFormalParameter other = this._other as DefaultFormalParameter; 2083 DefaultFormalParameter other = this._other as DefaultFormalParameter;
1557 return _isEqualNodes(node.parameter, other.parameter) && node.kind == other. kind && _isEqualTokens(node.separator, other.separator) && _isEqualNodes(node.de faultValue, other.defaultValue); 2084 return isEqualNodes(node.parameter, other.parameter) && node.kind == other.k ind && isEqualTokens(node.separator, other.separator) && isEqualNodes(node.defau ltValue, other.defaultValue);
1558 } 2085 }
1559 2086
1560 @override 2087 @override
1561 bool visitDoStatement(DoStatement node) { 2088 bool visitDoStatement(DoStatement node) {
1562 DoStatement other = this._other as DoStatement; 2089 DoStatement other = this._other as DoStatement;
1563 return _isEqualTokens(node.doKeyword, other.doKeyword) && _isEqualNodes(node .body, other.body) && _isEqualTokens(node.whileKeyword, other.whileKeyword) && _ isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node .condition, other.condition) && _isEqualTokens(node.rightParenthesis, other.righ tParenthesis) && _isEqualTokens(node.semicolon, other.semicolon); 2090 return isEqualTokens(node.doKeyword, other.doKeyword) && isEqualNodes(node.b ody, other.body) && isEqualTokens(node.whileKeyword, other.whileKeyword) && isEq ualTokens(node.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.cond ition, other.condition) && isEqualTokens(node.rightParenthesis, other.rightParen thesis) && isEqualTokens(node.semicolon, other.semicolon);
1564 } 2091 }
1565 2092
1566 @override 2093 @override
1567 bool visitDoubleLiteral(DoubleLiteral node) { 2094 bool visitDoubleLiteral(DoubleLiteral node) {
1568 DoubleLiteral other = this._other as DoubleLiteral; 2095 DoubleLiteral other = this._other as DoubleLiteral;
1569 return _isEqualTokens(node.literal, other.literal) && node.value == other.va lue; 2096 return isEqualTokens(node.literal, other.literal) && node.value == other.val ue;
1570 } 2097 }
1571 2098
1572 @override 2099 @override
1573 bool visitEmptyFunctionBody(EmptyFunctionBody node) { 2100 bool visitEmptyFunctionBody(EmptyFunctionBody node) {
1574 EmptyFunctionBody other = this._other as EmptyFunctionBody; 2101 EmptyFunctionBody other = this._other as EmptyFunctionBody;
1575 return _isEqualTokens(node.semicolon, other.semicolon); 2102 return isEqualTokens(node.semicolon, other.semicolon);
1576 } 2103 }
1577 2104
1578 @override 2105 @override
1579 bool visitEmptyStatement(EmptyStatement node) { 2106 bool visitEmptyStatement(EmptyStatement node) {
1580 EmptyStatement other = this._other as EmptyStatement; 2107 EmptyStatement other = this._other as EmptyStatement;
1581 return _isEqualTokens(node.semicolon, other.semicolon); 2108 return isEqualTokens(node.semicolon, other.semicolon);
1582 } 2109 }
1583 2110
1584 @override 2111 @override
1585 bool visitEnumConstantDeclaration(EnumConstantDeclaration node) { 2112 bool visitEnumConstantDeclaration(EnumConstantDeclaration node) {
1586 EnumConstantDeclaration other = this._other as EnumConstantDeclaration; 2113 EnumConstantDeclaration other = this._other as EnumConstantDeclaration;
1587 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.name, other.name); 2114 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.name, ot her.name);
1588 } 2115 }
1589 2116
1590 @override 2117 @override
1591 bool visitEnumDeclaration(EnumDeclaration node) { 2118 bool visitEnumDeclaration(EnumDeclaration node) {
1592 EnumDeclaration other = this._other as EnumDeclaration; 2119 EnumDeclaration other = this._other as EnumDeclaration;
1593 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.name, other.name) && _isEqualTokens(nod e.leftBracket, other.leftBracket) && _isEqualNodeLists(node.constants, other.con stants) && _isEqualTokens(node.rightBracket, other.rightBracket); 2120 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.name, other.name) && isEqualTokens(node.le ftBracket, other.leftBracket) && _isEqualNodeLists(node.constants, other.constan ts) && isEqualTokens(node.rightBracket, other.rightBracket);
1594 } 2121 }
1595 2122
1596 @override 2123 @override
1597 bool visitExportDirective(ExportDirective node) { 2124 bool visitExportDirective(ExportDirective node) {
1598 ExportDirective other = this._other as ExportDirective; 2125 ExportDirective other = this._other as ExportDirective;
1599 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.uri, other.uri) && _isEqualNodeLists(no de.combinators, other.combinators) && _isEqualTokens(node.semicolon, other.semic olon); 2126 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.uri, other.uri) && _isEqualNodeLists(node. combinators, other.combinators) && isEqualTokens(node.semicolon, other.semicolon );
1600 } 2127 }
1601 2128
1602 @override 2129 @override
1603 bool visitExpressionFunctionBody(ExpressionFunctionBody node) { 2130 bool visitExpressionFunctionBody(ExpressionFunctionBody node) {
1604 ExpressionFunctionBody other = this._other as ExpressionFunctionBody; 2131 ExpressionFunctionBody other = this._other as ExpressionFunctionBody;
1605 return _isEqualTokens(node.functionDefinition, other.functionDefinition) && _isEqualNodes(node.expression, other.expression) && _isEqualTokens(node.semicolo n, other.semicolon); 2132 return isEqualTokens(node.functionDefinition, other.functionDefinition) && i sEqualNodes(node.expression, other.expression) && isEqualTokens(node.semicolon, other.semicolon);
1606 } 2133 }
1607 2134
1608 @override 2135 @override
1609 bool visitExpressionStatement(ExpressionStatement node) { 2136 bool visitExpressionStatement(ExpressionStatement node) {
1610 ExpressionStatement other = this._other as ExpressionStatement; 2137 ExpressionStatement other = this._other as ExpressionStatement;
1611 return _isEqualNodes(node.expression, other.expression) && _isEqualTokens(no de.semicolon, other.semicolon); 2138 return isEqualNodes(node.expression, other.expression) && isEqualTokens(node .semicolon, other.semicolon);
1612 } 2139 }
1613 2140
1614 @override 2141 @override
1615 bool visitExtendsClause(ExtendsClause node) { 2142 bool visitExtendsClause(ExtendsClause node) {
1616 ExtendsClause other = this._other as ExtendsClause; 2143 ExtendsClause other = this._other as ExtendsClause;
1617 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.sup erclass, other.superclass); 2144 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.super class, other.superclass);
1618 } 2145 }
1619 2146
1620 @override 2147 @override
1621 bool visitFieldDeclaration(FieldDeclaration node) { 2148 bool visitFieldDeclaration(FieldDeclaration node) {
1622 FieldDeclaration other = this._other as FieldDeclaration; 2149 FieldDeclaration other = this._other as FieldDeclaration;
1623 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.stati cKeyword, other.staticKeyword) && _isEqualNodes(node.fields, other.fields) && _i sEqualTokens(node.semicolon, other.semicolon); 2150 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.staticK eyword, other.staticKeyword) && isEqualNodes(node.fields, other.fields) && isEqu alTokens(node.semicolon, other.semicolon);
1624 } 2151 }
1625 2152
1626 @override 2153 @override
1627 bool visitFieldFormalParameter(FieldFormalParameter node) { 2154 bool visitFieldFormalParameter(FieldFormalParameter node) {
1628 FieldFormalParameter other = this._other as FieldFormalParameter; 2155 FieldFormalParameter other = this._other as FieldFormalParameter;
1629 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualTokens(nod e.thisToken, other.thisToken) && _isEqualTokens(node.period, other.period) && _i sEqualNodes(node.identifier, other.identifier); 2156 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.type, other.type) && isEqualTokens(node.th isToken, other.thisToken) && isEqualTokens(node.period, other.period) && isEqual Nodes(node.identifier, other.identifier);
1630 } 2157 }
1631 2158
1632 @override 2159 @override
1633 bool visitForEachStatement(ForEachStatement node) { 2160 bool visitForEachStatement(ForEachStatement node) {
1634 ForEachStatement other = this._other as ForEachStatement; 2161 ForEachStatement other = this._other as ForEachStatement;
1635 return _isEqualTokens(node.forKeyword, other.forKeyword) && _isEqualTokens(n ode.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.loopVariable, other.loopVariable) && _isEqualTokens(node.inKeyword, other.inKeyword) && _isEqu alNodes(node.iterator, other.iterator) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.body, other.body); 2162 return isEqualTokens(node.forKeyword, other.forKeyword) && isEqualTokens(nod e.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.loopVariable, oth er.loopVariable) && isEqualTokens(node.inKeyword, other.inKeyword) && isEqualNod es(node.iterator, other.iterator) && isEqualTokens(node.rightParenthesis, other. rightParenthesis) && isEqualNodes(node.body, other.body);
1636 } 2163 }
1637 2164
1638 @override 2165 @override
1639 bool visitFormalParameterList(FormalParameterList node) { 2166 bool visitFormalParameterList(FormalParameterList node) {
1640 FormalParameterList other = this._other as FormalParameterList; 2167 FormalParameterList other = this._other as FormalParameterList;
1641 return _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqu alNodeLists(node.parameters, other.parameters) && _isEqualTokens(node.leftDelimi ter, other.leftDelimiter) && _isEqualTokens(node.rightDelimiter, other.rightDeli miter) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis); 2168 return isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqua lNodeLists(node.parameters, other.parameters) && isEqualTokens(node.leftDelimite r, other.leftDelimiter) && isEqualTokens(node.rightDelimiter, other.rightDelimit er) && isEqualTokens(node.rightParenthesis, other.rightParenthesis);
1642 } 2169 }
1643 2170
1644 @override 2171 @override
1645 bool visitForStatement(ForStatement node) { 2172 bool visitForStatement(ForStatement node) {
1646 ForStatement other = this._other as ForStatement; 2173 ForStatement other = this._other as ForStatement;
1647 return _isEqualTokens(node.forKeyword, other.forKeyword) && _isEqualTokens(n ode.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.variables, oth er.variables) && _isEqualNodes(node.initialization, other.initialization) && _is EqualTokens(node.leftSeparator, other.leftSeparator) && _isEqualNodes(node.condi tion, other.condition) && _isEqualTokens(node.rightSeparator, other.rightSeparat or) && _isEqualNodeLists(node.updaters, other.updaters) && _isEqualTokens(node.r ightParenthesis, other.rightParenthesis) && _isEqualNodes(node.body, other.body) ; 2174 return isEqualTokens(node.forKeyword, other.forKeyword) && isEqualTokens(nod e.leftParenthesis, other.leftParenthesis) && isEqualNodes(node.variables, other. variables) && isEqualNodes(node.initialization, other.initialization) && isEqual Tokens(node.leftSeparator, other.leftSeparator) && isEqualNodes(node.condition, other.condition) && isEqualTokens(node.rightSeparator, other.rightSeparator) && _isEqualNodeLists(node.updaters, other.updaters) && isEqualTokens(node.rightPare nthesis, other.rightParenthesis) && isEqualNodes(node.body, other.body);
1648 } 2175 }
1649 2176
1650 @override 2177 @override
1651 bool visitFunctionDeclaration(FunctionDeclaration node) { 2178 bool visitFunctionDeclaration(FunctionDeclaration node) {
1652 FunctionDeclaration other = this._other as FunctionDeclaration; 2179 FunctionDeclaration other = this._other as FunctionDeclaration;
1653 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.exter nalKeyword, other.externalKeyword) && _isEqualNodes(node.returnType, other.retur nType) && _isEqualTokens(node.propertyKeyword, other.propertyKeyword) && _isEqua lNodes(node.name, other.name) && _isEqualNodes(node.functionExpression, other.fu nctionExpression); 2180 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.externa lKeyword, other.externalKeyword) && isEqualNodes(node.returnType, other.returnTy pe) && isEqualTokens(node.propertyKeyword, other.propertyKeyword) && isEqualNode s(node.name, other.name) && isEqualNodes(node.functionExpression, other.function Expression);
1654 } 2181 }
1655 2182
1656 @override 2183 @override
1657 bool visitFunctionDeclarationStatement(FunctionDeclarationStatement node) { 2184 bool visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
1658 FunctionDeclarationStatement other = this._other as FunctionDeclarationState ment; 2185 FunctionDeclarationStatement other = this._other as FunctionDeclarationState ment;
1659 return _isEqualNodes(node.functionDeclaration, other.functionDeclaration); 2186 return isEqualNodes(node.functionDeclaration, other.functionDeclaration);
1660 } 2187 }
1661 2188
1662 @override 2189 @override
1663 bool visitFunctionExpression(FunctionExpression node) { 2190 bool visitFunctionExpression(FunctionExpression node) {
1664 FunctionExpression other = this._other as FunctionExpression; 2191 FunctionExpression other = this._other as FunctionExpression;
1665 return _isEqualNodes(node.parameters, other.parameters) && _isEqualNodes(nod e.body, other.body); 2192 return isEqualNodes(node.parameters, other.parameters) && isEqualNodes(node. body, other.body);
1666 } 2193 }
1667 2194
1668 @override 2195 @override
1669 bool visitFunctionExpressionInvocation(FunctionExpressionInvocation node) { 2196 bool visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
1670 FunctionExpressionInvocation other = this._other as FunctionExpressionInvoca tion; 2197 FunctionExpressionInvocation other = this._other as FunctionExpressionInvoca tion;
1671 return _isEqualNodes(node.function, other.function) && _isEqualNodes(node.ar gumentList, other.argumentList); 2198 return isEqualNodes(node.function, other.function) && isEqualNodes(node.argu mentList, other.argumentList);
1672 } 2199 }
1673 2200
1674 @override 2201 @override
1675 bool visitFunctionTypeAlias(FunctionTypeAlias node) { 2202 bool visitFunctionTypeAlias(FunctionTypeAlias node) {
1676 FunctionTypeAlias other = this._other as FunctionTypeAlias; 2203 FunctionTypeAlias other = this._other as FunctionTypeAlias;
1677 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.returnType, other.returnType) && _isEqu alNodes(node.name, other.name) && _isEqualNodes(node.typeParameters, other.typeP arameters) && _isEqualNodes(node.parameters, other.parameters) && _isEqualTokens (node.semicolon, other.semicolon); 2204 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.returnType, other.returnType) && isEqualNo des(node.name, other.name) && isEqualNodes(node.typeParameters, other.typeParame ters) && isEqualNodes(node.parameters, other.parameters) && isEqualTokens(node.s emicolon, other.semicolon);
1678 } 2205 }
1679 2206
1680 @override 2207 @override
1681 bool visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) { 2208 bool visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
1682 FunctionTypedFormalParameter other = this._other as FunctionTypedFormalParam eter; 2209 FunctionTypedFormalParameter other = this._other as FunctionTypedFormalParam eter;
1683 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.return Type, other.returnType) && _isEqualNodes(node.identifier, other.identifier) && _ isEqualNodes(node.parameters, other.parameters); 2210 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.returnTy pe, other.returnType) && isEqualNodes(node.identifier, other.identifier) && isEq ualNodes(node.parameters, other.parameters);
1684 } 2211 }
1685 2212
1686 @override 2213 @override
1687 bool visitHideCombinator(HideCombinator node) { 2214 bool visitHideCombinator(HideCombinator node) {
1688 HideCombinator other = this._other as HideCombinator; 2215 HideCombinator other = this._other as HideCombinator;
1689 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node .hiddenNames, other.hiddenNames); 2216 return isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node. hiddenNames, other.hiddenNames);
1690 } 2217 }
1691 2218
1692 @override 2219 @override
1693 bool visitIfStatement(IfStatement node) { 2220 bool visitIfStatement(IfStatement node) {
1694 IfStatement other = this._other as IfStatement; 2221 IfStatement other = this._other as IfStatement;
1695 return _isEqualTokens(node.ifKeyword, other.ifKeyword) && _isEqualTokens(nod e.leftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other .condition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isEqualNodes(node.thenStatement, other.thenStatement) && _isEqualTokens(node.el seKeyword, other.elseKeyword) && _isEqualNodes(node.elseStatement, other.elseSta tement); 2222 return isEqualTokens(node.ifKeyword, other.ifKeyword) && isEqualTokens(node. leftParenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.co ndition) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEq ualNodes(node.thenStatement, other.thenStatement) && isEqualTokens(node.elseKeyw ord, other.elseKeyword) && isEqualNodes(node.elseStatement, other.elseStatement) ;
1696 } 2223 }
1697 2224
1698 @override 2225 @override
1699 bool visitImplementsClause(ImplementsClause node) { 2226 bool visitImplementsClause(ImplementsClause node) {
1700 ImplementsClause other = this._other as ImplementsClause; 2227 ImplementsClause other = this._other as ImplementsClause;
1701 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node .interfaces, other.interfaces); 2228 return isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node. interfaces, other.interfaces);
1702 } 2229 }
1703 2230
1704 @override 2231 @override
1705 bool visitImportDirective(ImportDirective node) { 2232 bool visitImportDirective(ImportDirective node) {
1706 ImportDirective other = this._other as ImportDirective; 2233 ImportDirective other = this._other as ImportDirective;
1707 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.uri, other.uri) && _isEqualTokens(node. asToken, other.asToken) && _isEqualNodes(node.prefix, other.prefix) && _isEqualN odeLists(node.combinators, other.combinators) && _isEqualTokens(node.semicolon, other.semicolon); 2234 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.uri, other.uri) && isEqualTokens(node.asTo ken, other.asToken) && isEqualNodes(node.prefix, other.prefix) && _isEqualNodeLi sts(node.combinators, other.combinators) && isEqualTokens(node.semicolon, other. semicolon);
1708 } 2235 }
1709 2236
1710 @override 2237 @override
1711 bool visitIndexExpression(IndexExpression node) { 2238 bool visitIndexExpression(IndexExpression node) {
1712 IndexExpression other = this._other as IndexExpression; 2239 IndexExpression other = this._other as IndexExpression;
1713 return _isEqualNodes(node.target, other.target) && _isEqualTokens(node.leftB racket, other.leftBracket) && _isEqualNodes(node.index, other.index) && _isEqual Tokens(node.rightBracket, other.rightBracket); 2240 return isEqualNodes(node.target, other.target) && isEqualTokens(node.leftBra cket, other.leftBracket) && isEqualNodes(node.index, other.index) && isEqualToke ns(node.rightBracket, other.rightBracket);
1714 } 2241 }
1715 2242
1716 @override 2243 @override
1717 bool visitInstanceCreationExpression(InstanceCreationExpression node) { 2244 bool visitInstanceCreationExpression(InstanceCreationExpression node) {
1718 InstanceCreationExpression other = this._other as InstanceCreationExpression ; 2245 InstanceCreationExpression other = this._other as InstanceCreationExpression ;
1719 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.con structorName, other.constructorName) && _isEqualNodes(node.argumentList, other.a rgumentList); 2246 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.const ructorName, other.constructorName) && isEqualNodes(node.argumentList, other.argu mentList);
1720 } 2247 }
1721 2248
1722 @override 2249 @override
1723 bool visitIntegerLiteral(IntegerLiteral node) { 2250 bool visitIntegerLiteral(IntegerLiteral node) {
1724 IntegerLiteral other = this._other as IntegerLiteral; 2251 IntegerLiteral other = this._other as IntegerLiteral;
1725 return _isEqualTokens(node.literal, other.literal) && (node.value == other.v alue); 2252 return isEqualTokens(node.literal, other.literal) && (node.value == other.va lue);
1726 } 2253 }
1727 2254
1728 @override 2255 @override
1729 bool visitInterpolationExpression(InterpolationExpression node) { 2256 bool visitInterpolationExpression(InterpolationExpression node) {
1730 InterpolationExpression other = this._other as InterpolationExpression; 2257 InterpolationExpression other = this._other as InterpolationExpression;
1731 return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodes( node.expression, other.expression) && _isEqualTokens(node.rightBracket, other.ri ghtBracket); 2258 return isEqualTokens(node.leftBracket, other.leftBracket) && isEqualNodes(no de.expression, other.expression) && isEqualTokens(node.rightBracket, other.right Bracket);
1732 } 2259 }
1733 2260
1734 @override 2261 @override
1735 bool visitInterpolationString(InterpolationString node) { 2262 bool visitInterpolationString(InterpolationString node) {
1736 InterpolationString other = this._other as InterpolationString; 2263 InterpolationString other = this._other as InterpolationString;
1737 return _isEqualTokens(node.contents, other.contents) && node.value == other. value; 2264 return isEqualTokens(node.contents, other.contents) && node.value == other.v alue;
1738 } 2265 }
1739 2266
1740 @override 2267 @override
1741 bool visitIsExpression(IsExpression node) { 2268 bool visitIsExpression(IsExpression node) {
1742 IsExpression other = this._other as IsExpression; 2269 IsExpression other = this._other as IsExpression;
1743 return _isEqualNodes(node.expression, other.expression) && _isEqualTokens(no de.isOperator, other.isOperator) && _isEqualTokens(node.notOperator, other.notOp erator) && _isEqualNodes(node.type, other.type); 2270 return isEqualNodes(node.expression, other.expression) && isEqualTokens(node .isOperator, other.isOperator) && isEqualTokens(node.notOperator, other.notOpera tor) && isEqualNodes(node.type, other.type);
1744 } 2271 }
1745 2272
1746 @override 2273 @override
1747 bool visitLabel(Label node) { 2274 bool visitLabel(Label node) {
1748 Label other = this._other as Label; 2275 Label other = this._other as Label;
1749 return _isEqualNodes(node.label, other.label) && _isEqualTokens(node.colon, other.colon); 2276 return isEqualNodes(node.label, other.label) && isEqualTokens(node.colon, ot her.colon);
1750 } 2277 }
1751 2278
1752 @override 2279 @override
1753 bool visitLabeledStatement(LabeledStatement node) { 2280 bool visitLabeledStatement(LabeledStatement node) {
1754 LabeledStatement other = this._other as LabeledStatement; 2281 LabeledStatement other = this._other as LabeledStatement;
1755 return _isEqualNodeLists(node.labels, other.labels) && _isEqualNodes(node.st atement, other.statement); 2282 return _isEqualNodeLists(node.labels, other.labels) && isEqualNodes(node.sta tement, other.statement);
1756 } 2283 }
1757 2284
1758 @override 2285 @override
1759 bool visitLibraryDirective(LibraryDirective node) { 2286 bool visitLibraryDirective(LibraryDirective node) {
1760 LibraryDirective other = this._other as LibraryDirective; 2287 LibraryDirective other = this._other as LibraryDirective;
1761 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.libra ryToken, other.libraryToken) && _isEqualNodes(node.name, other.name) && _isEqual Tokens(node.semicolon, other.semicolon); 2288 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.library Token, other.libraryToken) && isEqualNodes(node.name, other.name) && isEqualToke ns(node.semicolon, other.semicolon);
1762 } 2289 }
1763 2290
1764 @override 2291 @override
1765 bool visitLibraryIdentifier(LibraryIdentifier node) { 2292 bool visitLibraryIdentifier(LibraryIdentifier node) {
1766 LibraryIdentifier other = this._other as LibraryIdentifier; 2293 LibraryIdentifier other = this._other as LibraryIdentifier;
1767 return _isEqualNodeLists(node.components, other.components); 2294 return _isEqualNodeLists(node.components, other.components);
1768 } 2295 }
1769 2296
1770 @override 2297 @override
1771 bool visitListLiteral(ListLiteral node) { 2298 bool visitListLiteral(ListLiteral node) {
1772 ListLiteral other = this._other as ListLiteral; 2299 ListLiteral other = this._other as ListLiteral;
1773 return _isEqualTokens(node.constKeyword, other.constKeyword) && _isEqualNode s(node.typeArguments, other.typeArguments) && _isEqualTokens(node.leftBracket, o ther.leftBracket) && _isEqualNodeLists(node.elements, other.elements) && _isEqua lTokens(node.rightBracket, other.rightBracket); 2300 return isEqualTokens(node.constKeyword, other.constKeyword) && isEqualNodes( node.typeArguments, other.typeArguments) && isEqualTokens(node.leftBracket, othe r.leftBracket) && _isEqualNodeLists(node.elements, other.elements) && isEqualTok ens(node.rightBracket, other.rightBracket);
1774 } 2301 }
1775 2302
1776 @override 2303 @override
1777 bool visitMapLiteral(MapLiteral node) { 2304 bool visitMapLiteral(MapLiteral node) {
1778 MapLiteral other = this._other as MapLiteral; 2305 MapLiteral other = this._other as MapLiteral;
1779 return _isEqualTokens(node.constKeyword, other.constKeyword) && _isEqualNode s(node.typeArguments, other.typeArguments) && _isEqualTokens(node.leftBracket, o ther.leftBracket) && _isEqualNodeLists(node.entries, other.entries) && _isEqualT okens(node.rightBracket, other.rightBracket); 2306 return isEqualTokens(node.constKeyword, other.constKeyword) && isEqualNodes( node.typeArguments, other.typeArguments) && isEqualTokens(node.leftBracket, othe r.leftBracket) && _isEqualNodeLists(node.entries, other.entries) && isEqualToken s(node.rightBracket, other.rightBracket);
1780 } 2307 }
1781 2308
1782 @override 2309 @override
1783 bool visitMapLiteralEntry(MapLiteralEntry node) { 2310 bool visitMapLiteralEntry(MapLiteralEntry node) {
1784 MapLiteralEntry other = this._other as MapLiteralEntry; 2311 MapLiteralEntry other = this._other as MapLiteralEntry;
1785 return _isEqualNodes(node.key, other.key) && _isEqualTokens(node.separator, other.separator) && _isEqualNodes(node.value, other.value); 2312 return isEqualNodes(node.key, other.key) && isEqualTokens(node.separator, ot her.separator) && isEqualNodes(node.value, other.value);
1786 } 2313 }
1787 2314
1788 @override 2315 @override
1789 bool visitMethodDeclaration(MethodDeclaration node) { 2316 bool visitMethodDeclaration(MethodDeclaration node) {
1790 MethodDeclaration other = this._other as MethodDeclaration; 2317 MethodDeclaration other = this._other as MethodDeclaration;
1791 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.exter nalKeyword, other.externalKeyword) && _isEqualTokens(node.modifierKeyword, other .modifierKeyword) && _isEqualNodes(node.returnType, other.returnType) && _isEqua lTokens(node.propertyKeyword, other.propertyKeyword) && _isEqualTokens(node.prop ertyKeyword, other.propertyKeyword) && _isEqualNodes(node.name, other.name) && _ isEqualNodes(node.parameters, other.parameters) && _isEqualNodes(node.body, othe r.body); 2318 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.externa lKeyword, other.externalKeyword) && isEqualTokens(node.modifierKeyword, other.mo difierKeyword) && isEqualNodes(node.returnType, other.returnType) && isEqualToke ns(node.propertyKeyword, other.propertyKeyword) && isEqualTokens(node.propertyKe yword, other.propertyKeyword) && isEqualNodes(node.name, other.name) && isEqualN odes(node.parameters, other.parameters) && isEqualNodes(node.body, other.body);
1792 } 2319 }
1793 2320
1794 @override 2321 @override
1795 bool visitMethodInvocation(MethodInvocation node) { 2322 bool visitMethodInvocation(MethodInvocation node) {
1796 MethodInvocation other = this._other as MethodInvocation; 2323 MethodInvocation other = this._other as MethodInvocation;
1797 return _isEqualNodes(node.target, other.target) && _isEqualTokens(node.perio d, other.period) && _isEqualNodes(node.methodName, other.methodName) && _isEqual Nodes(node.argumentList, other.argumentList); 2324 return isEqualNodes(node.target, other.target) && isEqualTokens(node.period, other.period) && isEqualNodes(node.methodName, other.methodName) && isEqualNode s(node.argumentList, other.argumentList);
1798 } 2325 }
1799 2326
1800 @override 2327 @override
1801 bool visitNamedExpression(NamedExpression node) { 2328 bool visitNamedExpression(NamedExpression node) {
1802 NamedExpression other = this._other as NamedExpression; 2329 NamedExpression other = this._other as NamedExpression;
1803 return _isEqualNodes(node.name, other.name) && _isEqualNodes(node.expression , other.expression); 2330 return isEqualNodes(node.name, other.name) && isEqualNodes(node.expression, other.expression);
1804 } 2331 }
1805 2332
1806 @override 2333 @override
1807 bool visitNativeClause(NativeClause node) { 2334 bool visitNativeClause(NativeClause node) {
1808 NativeClause other = this._other as NativeClause; 2335 NativeClause other = this._other as NativeClause;
1809 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.nam e, other.name); 2336 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.name, other.name);
1810 } 2337 }
1811 2338
1812 @override 2339 @override
1813 bool visitNativeFunctionBody(NativeFunctionBody node) { 2340 bool visitNativeFunctionBody(NativeFunctionBody node) {
1814 NativeFunctionBody other = this._other as NativeFunctionBody; 2341 NativeFunctionBody other = this._other as NativeFunctionBody;
1815 return _isEqualTokens(node.nativeToken, other.nativeToken) && _isEqualNodes( node.stringLiteral, other.stringLiteral) && _isEqualTokens(node.semicolon, other .semicolon); 2342 return isEqualTokens(node.nativeToken, other.nativeToken) && isEqualNodes(no de.stringLiteral, other.stringLiteral) && isEqualTokens(node.semicolon, other.se micolon);
1816 } 2343 }
1817 2344
1818 @override 2345 @override
1819 bool visitNullLiteral(NullLiteral node) { 2346 bool visitNullLiteral(NullLiteral node) {
1820 NullLiteral other = this._other as NullLiteral; 2347 NullLiteral other = this._other as NullLiteral;
1821 return _isEqualTokens(node.literal, other.literal); 2348 return isEqualTokens(node.literal, other.literal);
1822 } 2349 }
1823 2350
1824 @override 2351 @override
1825 bool visitParenthesizedExpression(ParenthesizedExpression node) { 2352 bool visitParenthesizedExpression(ParenthesizedExpression node) {
1826 ParenthesizedExpression other = this._other as ParenthesizedExpression; 2353 ParenthesizedExpression other = this._other as ParenthesizedExpression;
1827 return _isEqualTokens(node.leftParenthesis, other.leftParenthesis) && _isEqu alNodes(node.expression, other.expression) && _isEqualTokens(node.rightParenthes is, other.rightParenthesis); 2354 return isEqualTokens(node.leftParenthesis, other.leftParenthesis) && isEqual Nodes(node.expression, other.expression) && isEqualTokens(node.rightParenthesis, other.rightParenthesis);
1828 } 2355 }
1829 2356
1830 @override 2357 @override
1831 bool visitPartDirective(PartDirective node) { 2358 bool visitPartDirective(PartDirective node) {
1832 PartDirective other = this._other as PartDirective; 2359 PartDirective other = this._other as PartDirective;
1833 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.partT oken, other.partToken) && _isEqualNodes(node.uri, other.uri) && _isEqualTokens(n ode.semicolon, other.semicolon); 2360 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.partTok en, other.partToken) && isEqualNodes(node.uri, other.uri) && isEqualTokens(node. semicolon, other.semicolon);
1834 } 2361 }
1835 2362
1836 @override 2363 @override
1837 bool visitPartOfDirective(PartOfDirective node) { 2364 bool visitPartOfDirective(PartOfDirective node) {
1838 PartOfDirective other = this._other as PartOfDirective; 2365 PartOfDirective other = this._other as PartOfDirective;
1839 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.partT oken, other.partToken) && _isEqualTokens(node.ofToken, other.ofToken) && _isEqua lNodes(node.libraryName, other.libraryName) && _isEqualTokens(node.semicolon, ot her.semicolon); 2366 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.partTok en, other.partToken) && isEqualTokens(node.ofToken, other.ofToken) && isEqualNod es(node.libraryName, other.libraryName) && isEqualTokens(node.semicolon, other.s emicolon);
1840 } 2367 }
1841 2368
1842 @override 2369 @override
1843 bool visitPostfixExpression(PostfixExpression node) { 2370 bool visitPostfixExpression(PostfixExpression node) {
1844 PostfixExpression other = this._other as PostfixExpression; 2371 PostfixExpression other = this._other as PostfixExpression;
1845 return _isEqualNodes(node.operand, other.operand) && _isEqualTokens(node.ope rator, other.operator); 2372 return isEqualNodes(node.operand, other.operand) && isEqualTokens(node.opera tor, other.operator);
1846 } 2373 }
1847 2374
1848 @override 2375 @override
1849 bool visitPrefixedIdentifier(PrefixedIdentifier node) { 2376 bool visitPrefixedIdentifier(PrefixedIdentifier node) {
1850 PrefixedIdentifier other = this._other as PrefixedIdentifier; 2377 PrefixedIdentifier other = this._other as PrefixedIdentifier;
1851 return _isEqualNodes(node.prefix, other.prefix) && _isEqualTokens(node.perio d, other.period) && _isEqualNodes(node.identifier, other.identifier); 2378 return isEqualNodes(node.prefix, other.prefix) && isEqualTokens(node.period, other.period) && isEqualNodes(node.identifier, other.identifier);
1852 } 2379 }
1853 2380
1854 @override 2381 @override
1855 bool visitPrefixExpression(PrefixExpression node) { 2382 bool visitPrefixExpression(PrefixExpression node) {
1856 PrefixExpression other = this._other as PrefixExpression; 2383 PrefixExpression other = this._other as PrefixExpression;
1857 return _isEqualTokens(node.operator, other.operator) && _isEqualNodes(node.o perand, other.operand); 2384 return isEqualTokens(node.operator, other.operator) && isEqualNodes(node.ope rand, other.operand);
1858 } 2385 }
1859 2386
1860 @override 2387 @override
1861 bool visitPropertyAccess(PropertyAccess node) { 2388 bool visitPropertyAccess(PropertyAccess node) {
1862 PropertyAccess other = this._other as PropertyAccess; 2389 PropertyAccess other = this._other as PropertyAccess;
1863 return _isEqualNodes(node.target, other.target) && _isEqualTokens(node.opera tor, other.operator) && _isEqualNodes(node.propertyName, other.propertyName); 2390 return isEqualNodes(node.target, other.target) && isEqualTokens(node.operato r, other.operator) && isEqualNodes(node.propertyName, other.propertyName);
1864 } 2391 }
1865 2392
1866 @override 2393 @override
1867 bool visitRedirectingConstructorInvocation(RedirectingConstructorInvocation no de) { 2394 bool visitRedirectingConstructorInvocation(RedirectingConstructorInvocation no de) {
1868 RedirectingConstructorInvocation other = this._other as RedirectingConstruct orInvocation; 2395 RedirectingConstructorInvocation other = this._other as RedirectingConstruct orInvocation;
1869 return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.pe riod, other.period) && _isEqualNodes(node.constructorName, other.constructorName ) && _isEqualNodes(node.argumentList, other.argumentList); 2396 return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.peri od, other.period) && isEqualNodes(node.constructorName, other.constructorName) & & isEqualNodes(node.argumentList, other.argumentList);
1870 } 2397 }
1871 2398
1872 @override 2399 @override
1873 bool visitRethrowExpression(RethrowExpression node) { 2400 bool visitRethrowExpression(RethrowExpression node) {
1874 RethrowExpression other = this._other as RethrowExpression; 2401 RethrowExpression other = this._other as RethrowExpression;
1875 return _isEqualTokens(node.keyword, other.keyword); 2402 return isEqualTokens(node.keyword, other.keyword);
1876 } 2403 }
1877 2404
1878 @override 2405 @override
1879 bool visitReturnStatement(ReturnStatement node) { 2406 bool visitReturnStatement(ReturnStatement node) {
1880 ReturnStatement other = this._other as ReturnStatement; 2407 ReturnStatement other = this._other as ReturnStatement;
1881 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.exp ression, other.expression) && _isEqualTokens(node.semicolon, other.semicolon); 2408 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.expre ssion, other.expression) && isEqualTokens(node.semicolon, other.semicolon);
1882 } 2409 }
1883 2410
1884 @override 2411 @override
1885 bool visitScriptTag(ScriptTag node) { 2412 bool visitScriptTag(ScriptTag node) {
1886 ScriptTag other = this._other as ScriptTag; 2413 ScriptTag other = this._other as ScriptTag;
1887 return _isEqualTokens(node.scriptTag, other.scriptTag); 2414 return isEqualTokens(node.scriptTag, other.scriptTag);
1888 } 2415 }
1889 2416
1890 @override 2417 @override
1891 bool visitShowCombinator(ShowCombinator node) { 2418 bool visitShowCombinator(ShowCombinator node) {
1892 ShowCombinator other = this._other as ShowCombinator; 2419 ShowCombinator other = this._other as ShowCombinator;
1893 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node .shownNames, other.shownNames); 2420 return isEqualTokens(node.keyword, other.keyword) && _isEqualNodeLists(node. shownNames, other.shownNames);
1894 } 2421 }
1895 2422
1896 @override 2423 @override
1897 bool visitSimpleFormalParameter(SimpleFormalParameter node) { 2424 bool visitSimpleFormalParameter(SimpleFormalParameter node) {
1898 SimpleFormalParameter other = this._other as SimpleFormalParameter; 2425 SimpleFormalParameter other = this._other as SimpleFormalParameter;
1899 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualNodes(node .identifier, other.identifier); 2426 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.type, other.type) && isEqualNodes(node.ide ntifier, other.identifier);
1900 } 2427 }
1901 2428
1902 @override 2429 @override
1903 bool visitSimpleIdentifier(SimpleIdentifier node) { 2430 bool visitSimpleIdentifier(SimpleIdentifier node) {
1904 SimpleIdentifier other = this._other as SimpleIdentifier; 2431 SimpleIdentifier other = this._other as SimpleIdentifier;
1905 return _isEqualTokens(node.token, other.token); 2432 return isEqualTokens(node.token, other.token);
1906 } 2433 }
1907 2434
1908 @override 2435 @override
1909 bool visitSimpleStringLiteral(SimpleStringLiteral node) { 2436 bool visitSimpleStringLiteral(SimpleStringLiteral node) {
1910 SimpleStringLiteral other = this._other as SimpleStringLiteral; 2437 SimpleStringLiteral other = this._other as SimpleStringLiteral;
1911 return _isEqualTokens(node.literal, other.literal) && (node.value == other.v alue); 2438 return isEqualTokens(node.literal, other.literal) && (node.value == other.va lue);
1912 } 2439 }
1913 2440
1914 @override 2441 @override
1915 bool visitStringInterpolation(StringInterpolation node) { 2442 bool visitStringInterpolation(StringInterpolation node) {
1916 StringInterpolation other = this._other as StringInterpolation; 2443 StringInterpolation other = this._other as StringInterpolation;
1917 return _isEqualNodeLists(node.elements, other.elements); 2444 return _isEqualNodeLists(node.elements, other.elements);
1918 } 2445 }
1919 2446
1920 @override 2447 @override
1921 bool visitSuperConstructorInvocation(SuperConstructorInvocation node) { 2448 bool visitSuperConstructorInvocation(SuperConstructorInvocation node) {
1922 SuperConstructorInvocation other = this._other as SuperConstructorInvocation ; 2449 SuperConstructorInvocation other = this._other as SuperConstructorInvocation ;
1923 return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.pe riod, other.period) && _isEqualNodes(node.constructorName, other.constructorName ) && _isEqualNodes(node.argumentList, other.argumentList); 2450 return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.peri od, other.period) && isEqualNodes(node.constructorName, other.constructorName) & & isEqualNodes(node.argumentList, other.argumentList);
1924 } 2451 }
1925 2452
1926 @override 2453 @override
1927 bool visitSuperExpression(SuperExpression node) { 2454 bool visitSuperExpression(SuperExpression node) {
1928 SuperExpression other = this._other as SuperExpression; 2455 SuperExpression other = this._other as SuperExpression;
1929 return _isEqualTokens(node.keyword, other.keyword); 2456 return isEqualTokens(node.keyword, other.keyword);
1930 } 2457 }
1931 2458
1932 @override 2459 @override
1933 bool visitSwitchCase(SwitchCase node) { 2460 bool visitSwitchCase(SwitchCase node) {
1934 SwitchCase other = this._other as SwitchCase; 2461 SwitchCase other = this._other as SwitchCase;
1935 return _isEqualNodeLists(node.labels, other.labels) && _isEqualTokens(node.k eyword, other.keyword) && _isEqualNodes(node.expression, other.expression) && _i sEqualTokens(node.colon, other.colon) && _isEqualNodeLists(node.statements, othe r.statements); 2462 return _isEqualNodeLists(node.labels, other.labels) && isEqualTokens(node.ke yword, other.keyword) && isEqualNodes(node.expression, other.expression) && isEq ualTokens(node.colon, other.colon) && _isEqualNodeLists(node.statements, other.s tatements);
1936 } 2463 }
1937 2464
1938 @override 2465 @override
1939 bool visitSwitchDefault(SwitchDefault node) { 2466 bool visitSwitchDefault(SwitchDefault node) {
1940 SwitchDefault other = this._other as SwitchDefault; 2467 SwitchDefault other = this._other as SwitchDefault;
1941 return _isEqualNodeLists(node.labels, other.labels) && _isEqualTokens(node.k eyword, other.keyword) && _isEqualTokens(node.colon, other.colon) && _isEqualNod eLists(node.statements, other.statements); 2468 return _isEqualNodeLists(node.labels, other.labels) && isEqualTokens(node.ke yword, other.keyword) && isEqualTokens(node.colon, other.colon) && _isEqualNodeL ists(node.statements, other.statements);
1942 } 2469 }
1943 2470
1944 @override 2471 @override
1945 bool visitSwitchStatement(SwitchStatement node) { 2472 bool visitSwitchStatement(SwitchStatement node) {
1946 SwitchStatement other = this._other as SwitchStatement; 2473 SwitchStatement other = this._other as SwitchStatement;
1947 return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.le ftParenthesis, other.leftParenthesis) && _isEqualNodes(node.expression, other.ex pression) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _i sEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.memb ers, other.members) && _isEqualTokens(node.rightBracket, other.rightBracket); 2474 return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.left Parenthesis, other.leftParenthesis) && isEqualNodes(node.expression, other.expre ssion) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqua lTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLists(node.members, other.members) && isEqualTokens(node.rightBracket, other.rightBracket);
1948 } 2475 }
1949 2476
1950 @override 2477 @override
1951 bool visitSymbolLiteral(SymbolLiteral node) { 2478 bool visitSymbolLiteral(SymbolLiteral node) {
1952 SymbolLiteral other = this._other as SymbolLiteral; 2479 SymbolLiteral other = this._other as SymbolLiteral;
1953 return _isEqualTokens(node.poundSign, other.poundSign) && _isEqualTokenLists (node.components, other.components); 2480 return isEqualTokens(node.poundSign, other.poundSign) && _isEqualTokenLists( node.components, other.components);
1954 } 2481 }
1955 2482
1956 @override 2483 @override
1957 bool visitThisExpression(ThisExpression node) { 2484 bool visitThisExpression(ThisExpression node) {
1958 ThisExpression other = this._other as ThisExpression; 2485 ThisExpression other = this._other as ThisExpression;
1959 return _isEqualTokens(node.keyword, other.keyword); 2486 return isEqualTokens(node.keyword, other.keyword);
1960 } 2487 }
1961 2488
1962 @override 2489 @override
1963 bool visitThrowExpression(ThrowExpression node) { 2490 bool visitThrowExpression(ThrowExpression node) {
1964 ThrowExpression other = this._other as ThrowExpression; 2491 ThrowExpression other = this._other as ThrowExpression;
1965 return _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node.exp ression, other.expression); 2492 return isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.expre ssion, other.expression);
1966 } 2493 }
1967 2494
1968 @override 2495 @override
1969 bool visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) { 2496 bool visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
1970 TopLevelVariableDeclaration other = this._other as TopLevelVariableDeclarati on; 2497 TopLevelVariableDeclaration other = this._other as TopLevelVariableDeclarati on;
1971 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.variab les, other.variables) && _isEqualTokens(node.semicolon, other.semicolon); 2498 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.variable s, other.variables) && isEqualTokens(node.semicolon, other.semicolon);
1972 } 2499 }
1973 2500
1974 @override 2501 @override
1975 bool visitTryStatement(TryStatement node) { 2502 bool visitTryStatement(TryStatement node) {
1976 TryStatement other = this._other as TryStatement; 2503 TryStatement other = this._other as TryStatement;
1977 return _isEqualTokens(node.tryKeyword, other.tryKeyword) && _isEqualNodes(no de.body, other.body) && _isEqualNodeLists(node.catchClauses, other.catchClauses) && _isEqualTokens(node.finallyKeyword, other.finallyKeyword) && _isEqualNodes(n ode.finallyBlock, other.finallyBlock); 2504 return isEqualTokens(node.tryKeyword, other.tryKeyword) && isEqualNodes(node .body, other.body) && _isEqualNodeLists(node.catchClauses, other.catchClauses) & & isEqualTokens(node.finallyKeyword, other.finallyKeyword) && isEqualNodes(node. finallyBlock, other.finallyBlock);
1978 } 2505 }
1979 2506
1980 @override 2507 @override
1981 bool visitTypeArgumentList(TypeArgumentList node) { 2508 bool visitTypeArgumentList(TypeArgumentList node) {
1982 TypeArgumentList other = this._other as TypeArgumentList; 2509 TypeArgumentList other = this._other as TypeArgumentList;
1983 return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLi sts(node.arguments, other.arguments) && _isEqualTokens(node.rightBracket, other. rightBracket); 2510 return isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLis ts(node.arguments, other.arguments) && isEqualTokens(node.rightBracket, other.ri ghtBracket);
1984 } 2511 }
1985 2512
1986 @override 2513 @override
1987 bool visitTypeName(TypeName node) { 2514 bool visitTypeName(TypeName node) {
1988 TypeName other = this._other as TypeName; 2515 TypeName other = this._other as TypeName;
1989 return _isEqualNodes(node.name, other.name) && _isEqualNodes(node.typeArgume nts, other.typeArguments); 2516 return isEqualNodes(node.name, other.name) && isEqualNodes(node.typeArgument s, other.typeArguments);
1990 } 2517 }
1991 2518
1992 @override 2519 @override
1993 bool visitTypeParameter(TypeParameter node) { 2520 bool visitTypeParameter(TypeParameter node) {
1994 TypeParameter other = this._other as TypeParameter; 2521 TypeParameter other = this._other as TypeParameter;
1995 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.keyword, other.keyword) && _isEqualNodes(node .bound, other.bound); 2522 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.name, ot her.name) && isEqualTokens(node.keyword, other.keyword) && isEqualNodes(node.bou nd, other.bound);
1996 } 2523 }
1997 2524
1998 @override 2525 @override
1999 bool visitTypeParameterList(TypeParameterList node) { 2526 bool visitTypeParameterList(TypeParameterList node) {
2000 TypeParameterList other = this._other as TypeParameterList; 2527 TypeParameterList other = this._other as TypeParameterList;
2001 return _isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLi sts(node.typeParameters, other.typeParameters) && _isEqualTokens(node.rightBrack et, other.rightBracket); 2528 return isEqualTokens(node.leftBracket, other.leftBracket) && _isEqualNodeLis ts(node.typeParameters, other.typeParameters) && isEqualTokens(node.rightBracket , other.rightBracket);
2002 } 2529 }
2003 2530
2004 @override 2531 @override
2005 bool visitVariableDeclaration(VariableDeclaration node) { 2532 bool visitVariableDeclaration(VariableDeclaration node) {
2006 VariableDeclaration other = this._other as VariableDeclaration; 2533 VariableDeclaration other = this._other as VariableDeclaration;
2007 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualNodes(node.name, other.name) && _isEqualTokens(node.equals, other.equals) && _isEqualNodes(node.i nitializer, other.initializer); 2534 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualNodes(node.name, ot her.name) && isEqualTokens(node.equals, other.equals) && isEqualNodes(node.initi alizer, other.initializer);
2008 } 2535 }
2009 2536
2010 @override 2537 @override
2011 bool visitVariableDeclarationList(VariableDeclarationList node) { 2538 bool visitVariableDeclarationList(VariableDeclarationList node) {
2012 VariableDeclarationList other = this._other as VariableDeclarationList; 2539 VariableDeclarationList other = this._other as VariableDeclarationList;
2013 return _isEqualNodes(node.documentationComment, other.documentationComment) && _isEqualNodeLists(node.metadata, other.metadata) && _isEqualTokens(node.keywo rd, other.keyword) && _isEqualNodes(node.type, other.type) && _isEqualNodeLists( node.variables, other.variables); 2540 return isEqualNodes(node.documentationComment, other.documentationComment) & & _isEqualNodeLists(node.metadata, other.metadata) && isEqualTokens(node.keyword , other.keyword) && isEqualNodes(node.type, other.type) && _isEqualNodeLists(nod e.variables, other.variables);
2014 } 2541 }
2015 2542
2016 @override 2543 @override
2017 bool visitVariableDeclarationStatement(VariableDeclarationStatement node) { 2544 bool visitVariableDeclarationStatement(VariableDeclarationStatement node) {
2018 VariableDeclarationStatement other = this._other as VariableDeclarationState ment; 2545 VariableDeclarationStatement other = this._other as VariableDeclarationState ment;
2019 return _isEqualNodes(node.variables, other.variables) && _isEqualTokens(node .semicolon, other.semicolon); 2546 return isEqualNodes(node.variables, other.variables) && isEqualTokens(node.s emicolon, other.semicolon);
2020 } 2547 }
2021 2548
2022 @override 2549 @override
2023 bool visitWhileStatement(WhileStatement node) { 2550 bool visitWhileStatement(WhileStatement node) {
2024 WhileStatement other = this._other as WhileStatement; 2551 WhileStatement other = this._other as WhileStatement;
2025 return _isEqualTokens(node.keyword, other.keyword) && _isEqualTokens(node.le ftParenthesis, other.leftParenthesis) && _isEqualNodes(node.condition, other.con dition) && _isEqualTokens(node.rightParenthesis, other.rightParenthesis) && _isE qualNodes(node.body, other.body); 2552 return isEqualTokens(node.keyword, other.keyword) && isEqualTokens(node.left Parenthesis, other.leftParenthesis) && isEqualNodes(node.condition, other.condit ion) && isEqualTokens(node.rightParenthesis, other.rightParenthesis) && isEqualN odes(node.body, other.body);
2026 } 2553 }
2027 2554
2028 @override 2555 @override
2029 bool visitWithClause(WithClause node) { 2556 bool visitWithClause(WithClause node) {
2030 WithClause other = this._other as WithClause; 2557 WithClause other = this._other as WithClause;
2031 return _isEqualTokens(node.withKeyword, other.withKeyword) && _isEqualNodeLi sts(node.mixinTypes, other.mixinTypes); 2558 return isEqualTokens(node.withKeyword, other.withKeyword) && _isEqualNodeLis ts(node.mixinTypes, other.mixinTypes);
2032 } 2559 }
2033 2560
2034 @override 2561 @override
2035 bool visitYieldStatement(YieldStatement node) { 2562 bool visitYieldStatement(YieldStatement node) {
2036 YieldStatement other = this._other as YieldStatement; 2563 YieldStatement other = this._other as YieldStatement;
2037 return _isEqualTokens(node.yieldKeyword, other.yieldKeyword) && _isEqualNode s(node.expression, other.expression) && _isEqualTokens(node.semicolon, other.sem icolon); 2564 return isEqualTokens(node.yieldKeyword, other.yieldKeyword) && isEqualNodes( node.expression, other.expression) && isEqualTokens(node.semicolon, other.semico lon);
2038 } 2565 }
2039 2566
2040 /** 2567 /**
2041 * Return `true` if the given lists of AST nodes have the same size and corres ponding 2568 * Return `true` if the given lists of AST nodes have the same size and corres ponding
2042 * elements are equal. 2569 * elements are equal.
2043 * 2570 *
2044 * @param first the first node being compared 2571 * @param first the first node being compared
2045 * @param second the second node being compared 2572 * @param second the second node being compared
2046 * @return `true` if the given AST nodes have the same size and corresponding elements are 2573 * @return `true` if the given AST nodes have the same size and corresponding elements are
2047 * equal 2574 * equal
2048 */ 2575 */
2049 bool _isEqualNodeLists(NodeList first, NodeList second) { 2576 bool _isEqualNodeLists(NodeList first, NodeList second) {
2050 if (first == null) { 2577 if (first == null) {
2051 return second == null; 2578 return second == null;
2052 } else if (second == null) { 2579 } else if (second == null) {
2053 return false; 2580 return false;
2054 } 2581 }
2055 int size = first.length; 2582 int size = first.length;
2056 if (second.length != size) { 2583 if (second.length != size) {
2057 return false; 2584 return false;
2058 } 2585 }
2059 for (int i = 0; i < size; i++) { 2586 for (int i = 0; i < size; i++) {
2060 if (!_isEqualNodes(first[i], second[i])) { 2587 if (!isEqualNodes(first[i], second[i])) {
2061 return false; 2588 return false;
2062 } 2589 }
2063 } 2590 }
2064 return true; 2591 return true;
2065 } 2592 }
2066 2593
2067 /** 2594 /**
2068 * Return `true` if the given AST nodes have the same structure. 2595 * Return `true` if the [first] node and the [second] node have the same
2596 * structure.
2069 * 2597 *
2070 * @param first the first node being compared 2598 * *Note:* This method is only visible for testing purposes and should not be
2071 * @param second the second node being compared 2599 * used by clients.
2072 * @return `true` if the given AST nodes have the same structure
2073 */ 2600 */
2074 bool _isEqualNodes(AstNode first, AstNode second) { 2601 bool isEqualNodes(AstNode first, AstNode second) {
2075 if (first == null) { 2602 if (first == null) {
2076 return second == null; 2603 return second == null;
2077 } else if (second == null) { 2604 } else if (second == null) {
2078 return false; 2605 return false;
2079 } else if (first.runtimeType != second.runtimeType) { 2606 } else if (first.runtimeType != second.runtimeType) {
2080 return false; 2607 return false;
2081 } 2608 }
2082 _other = second; 2609 _other = second;
2083 return first.accept(this); 2610 return first.accept(this);
2084 } 2611 }
2085 2612
2086 /** 2613 /**
2087 * Return `true` if the given arrays of tokens have the same length and corres ponding 2614 * Return `true` if the given arrays of tokens have the same length and corres ponding
2088 * elements are equal. 2615 * elements are equal.
2089 * 2616 *
2090 * @param first the first node being compared 2617 * @param first the first node being compared
2091 * @param second the second node being compared 2618 * @param second the second node being compared
2092 * @return `true` if the given arrays of tokens have the same length and corre sponding 2619 * @return `true` if the given arrays of tokens have the same length and corre sponding
2093 * elements are equal 2620 * elements are equal
2094 */ 2621 */
2095 bool _isEqualTokenLists(List<Token> first, List<Token> second) { 2622 bool _isEqualTokenLists(List<Token> first, List<Token> second) {
2096 int length = first.length; 2623 int length = first.length;
2097 if (second.length != length) { 2624 if (second.length != length) {
2098 return false; 2625 return false;
2099 } 2626 }
2100 for (int i = 0; i < length; i++) { 2627 for (int i = 0; i < length; i++) {
2101 if (!_isEqualTokens(first[i], second[i])) { 2628 if (!isEqualTokens(first[i], second[i])) {
2102 return false; 2629 return false;
2103 } 2630 }
2104 } 2631 }
2105 return true; 2632 return true;
2106 } 2633 }
2107 2634
2108 /** 2635 /**
2109 * Return `true` if the given tokens have the same structure. 2636 * Return `true` if the [first] token and the [second] token have the same
2637 * structure.
2110 * 2638 *
2111 * @param first the first node being compared 2639 * *Note:* This method is only visible for testing purposes and should not be
2112 * @param second the second node being compared 2640 * used by clients.
2113 * @return `true` if the given tokens have the same structure
2114 */ 2641 */
2115 bool _isEqualTokens(Token first, Token second) { 2642 bool isEqualTokens(Token first, Token second) {
2116 if (first == null) { 2643 if (first == null) {
2117 return second == null; 2644 return second == null;
2118 } else if (second == null) { 2645 } else if (second == null) {
2119 return false; 2646 return false;
2120 } else if (identical(first, second)) { 2647 } else if (identical(first, second)) {
2121 return true; 2648 return true;
2122 } 2649 }
2123 return first.offset == second.offset && first.length == second.length && fir st.lexeme == second.lexeme; 2650 return first.offset == second.offset
2651 && first.length == second.length
2652 && first.lexeme == second.lexeme;
2124 } 2653 }
2125 } 2654 }
2126 2655
2127 /** 2656 /**
2128 * The abstract class `AstNode` defines the behavior common to all nodes in the AST structure 2657 * The abstract class `AstNode` defines the behavior common to all nodes in the AST structure
2129 * for a Dart program. 2658 * for a Dart program.
2130 */ 2659 */
2131 abstract class AstNode { 2660 abstract class AstNode {
2132 /** 2661 /**
2133 * An empty array of ast nodes. 2662 * An empty array of ast nodes.
(...skipping 17574 matching lines...) Expand 10 before | Expand all | Expand 10 after
19708 _elements[index] = node; 20237 _elements[index] = node;
19709 } 20238 }
19710 void clear() { 20239 void clear() {
19711 _elements = <E> []; 20240 _elements = <E> [];
19712 } 20241 }
19713 int get length => _elements.length; 20242 int get length => _elements.length;
19714 void set length(int value) { 20243 void set length(int value) {
19715 throw new UnsupportedError("Cannot resize NodeList."); 20244 throw new UnsupportedError("Cannot resize NodeList.");
19716 } 20245 }
19717 } 20246 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698