| OLD | NEW |
| 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 library analyzer.src.generated.parser; | 5 library analyzer.src.generated.parser; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import "dart:math" as math; | 8 import "dart:math" as math; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
| 11 import 'package:analyzer/dart/ast/token.dart'; | 11 import 'package:analyzer/dart/ast/token.dart'; |
| 12 import 'package:analyzer/dart/ast/visitor.dart'; | 12 import 'package:analyzer/dart/ast/visitor.dart'; |
| 13 import 'package:analyzer/src/dart/ast/ast.dart'; | 13 import 'package:analyzer/src/dart/ast/ast.dart'; |
| 14 import 'package:analyzer/src/dart/ast/token.dart'; | 14 import 'package:analyzer/src/dart/ast/token.dart'; |
| 15 import 'package:analyzer/src/dart/ast/utilities.dart'; | 15 import 'package:analyzer/src/dart/ast/utilities.dart'; |
| 16 import 'package:analyzer/src/dart/scanner/reader.dart'; | 16 import 'package:analyzer/src/dart/scanner/reader.dart'; |
| 17 import 'package:analyzer/src/dart/scanner/scanner.dart'; | 17 import 'package:analyzer/src/dart/scanner/scanner.dart'; |
| 18 import 'package:analyzer/src/generated/engine.dart' | 18 import 'package:analyzer/src/generated/engine.dart' |
| 19 show AnalysisEngine, AnalysisOptionsImpl; | 19 show AnalysisEngine, AnalysisOptionsImpl; |
| 20 import 'package:analyzer/src/generated/error.dart'; | 20 import 'package:analyzer/src/generated/error.dart'; |
| 21 import 'package:analyzer/src/generated/generated/shared_messages.dart' | 21 import 'package:analyzer/src/generated/generated/shared_messages.dart' |
| 22 as shared_messages; | 22 as shared_messages; |
| 23 import 'package:analyzer/src/generated/java_core.dart'; | 23 import 'package:analyzer/src/generated/java_core.dart'; |
| 24 import 'package:analyzer/src/generated/java_engine.dart'; | 24 import 'package:analyzer/src/generated/java_engine.dart'; |
| 25 import 'package:analyzer/src/generated/source.dart'; | 25 import 'package:analyzer/src/generated/source.dart'; |
| 26 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; | 26 import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; |
| 27 import 'package:analyzer/src/generated/utilities_dart.dart'; | 27 import 'package:analyzer/src/generated/utilities_dart.dart'; |
| 28 | 28 |
| 29 export 'package:analyzer/src/dart/ast/utilities.dart' show ResolutionCopier; |
| 30 |
| 29 Map<String, MethodTrampoline> methodTable_Parser = <String, MethodTrampoline>{ | 31 Map<String, MethodTrampoline> methodTable_Parser = <String, MethodTrampoline>{ |
| 30 'parseCompilationUnit_1': new MethodTrampoline( | 32 'parseCompilationUnit_1': new MethodTrampoline( |
| 31 1, (Parser target, arg0) => target.parseCompilationUnit(arg0)), | 33 1, (Parser target, arg0) => target.parseCompilationUnit(arg0)), |
| 32 'parseDirectives_1': new MethodTrampoline( | 34 'parseDirectives_1': new MethodTrampoline( |
| 33 1, (Parser target, arg0) => target.parseDirectives(arg0)), | 35 1, (Parser target, arg0) => target.parseDirectives(arg0)), |
| 34 'parseExpression_1': new MethodTrampoline( | 36 'parseExpression_1': new MethodTrampoline( |
| 35 1, (Parser target, arg0) => target.parseExpression(arg0)), | 37 1, (Parser target, arg0) => target.parseExpression(arg0)), |
| 36 'parseStatement_1': new MethodTrampoline( | 38 'parseStatement_1': new MethodTrampoline( |
| 37 1, (Parser target, arg0) => target.parseStatement(arg0)), | 39 1, (Parser target, arg0) => target.parseStatement(arg0)), |
| 38 'parseStatements_1': new MethodTrampoline( | 40 'parseStatements_1': new MethodTrampoline( |
| (...skipping 9893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9932 */ | 9934 */ |
| 9933 const ParserErrorCode(String name, String message, [String correction]) | 9935 const ParserErrorCode(String name, String message, [String correction]) |
| 9934 : super(name, message, correction); | 9936 : super(name, message, correction); |
| 9935 | 9937 |
| 9936 @override | 9938 @override |
| 9937 ErrorSeverity get errorSeverity => ErrorSeverity.ERROR; | 9939 ErrorSeverity get errorSeverity => ErrorSeverity.ERROR; |
| 9938 | 9940 |
| 9939 @override | 9941 @override |
| 9940 ErrorType get type => ErrorType.SYNTACTIC_ERROR; | 9942 ErrorType get type => ErrorType.SYNTACTIC_ERROR; |
| 9941 } | 9943 } |
| 9942 | |
| 9943 /** | |
| 9944 * An object that copies resolution information from one AST structure to | |
| 9945 * another as long as the structures of the corresponding children of a pair of | |
| 9946 * nodes are the same. | |
| 9947 */ | |
| 9948 class ResolutionCopier implements AstVisitor<bool> { | |
| 9949 /** | |
| 9950 * The AST node with which the node being visited is to be compared. This is | |
| 9951 * only valid at the beginning of each visit method (until [isEqualNodes] is | |
| 9952 * invoked). | |
| 9953 */ | |
| 9954 AstNode _toNode; | |
| 9955 | |
| 9956 @override | |
| 9957 bool visitAdjacentStrings(AdjacentStrings node) { | |
| 9958 AdjacentStrings toNode = this._toNode as AdjacentStrings; | |
| 9959 if (_isEqualNodeLists(node.strings, toNode.strings)) { | |
| 9960 toNode.staticType = node.staticType; | |
| 9961 toNode.propagatedType = node.propagatedType; | |
| 9962 return true; | |
| 9963 } | |
| 9964 return false; | |
| 9965 } | |
| 9966 | |
| 9967 @override | |
| 9968 bool visitAnnotation(Annotation node) { | |
| 9969 Annotation toNode = this._toNode as Annotation; | |
| 9970 if (_and( | |
| 9971 _isEqualTokens(node.atSign, toNode.atSign), | |
| 9972 _isEqualNodes(node.name, toNode.name), | |
| 9973 _isEqualTokens(node.period, toNode.period), | |
| 9974 _isEqualNodes(node.constructorName, toNode.constructorName), | |
| 9975 _isEqualNodes(node.arguments, toNode.arguments))) { | |
| 9976 toNode.element = node.element; | |
| 9977 return true; | |
| 9978 } | |
| 9979 return false; | |
| 9980 } | |
| 9981 | |
| 9982 @override | |
| 9983 bool visitArgumentList(ArgumentList node) { | |
| 9984 ArgumentList toNode = this._toNode as ArgumentList; | |
| 9985 return _and( | |
| 9986 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 9987 _isEqualNodeLists(node.arguments, toNode.arguments), | |
| 9988 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)); | |
| 9989 } | |
| 9990 | |
| 9991 @override | |
| 9992 bool visitAsExpression(AsExpression node) { | |
| 9993 AsExpression toNode = this._toNode as AsExpression; | |
| 9994 if (_and( | |
| 9995 _isEqualNodes(node.expression, toNode.expression), | |
| 9996 _isEqualTokens(node.asOperator, toNode.asOperator), | |
| 9997 _isEqualNodes(node.type, toNode.type))) { | |
| 9998 toNode.propagatedType = node.propagatedType; | |
| 9999 toNode.staticType = node.staticType; | |
| 10000 return true; | |
| 10001 } | |
| 10002 return false; | |
| 10003 } | |
| 10004 | |
| 10005 @override | |
| 10006 bool visitAssertStatement(AssertStatement node) { | |
| 10007 AssertStatement toNode = this._toNode as AssertStatement; | |
| 10008 return _and( | |
| 10009 _isEqualTokens(node.assertKeyword, toNode.assertKeyword), | |
| 10010 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10011 _isEqualNodes(node.condition, toNode.condition), | |
| 10012 _isEqualTokens(node.comma, toNode.comma), | |
| 10013 _isEqualNodes(node.message, toNode.message), | |
| 10014 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10015 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10016 } | |
| 10017 | |
| 10018 @override | |
| 10019 bool visitAssignmentExpression(AssignmentExpression node) { | |
| 10020 AssignmentExpression toNode = this._toNode as AssignmentExpression; | |
| 10021 if (_and( | |
| 10022 _isEqualNodes(node.leftHandSide, toNode.leftHandSide), | |
| 10023 _isEqualTokens(node.operator, toNode.operator), | |
| 10024 _isEqualNodes(node.rightHandSide, toNode.rightHandSide))) { | |
| 10025 toNode.propagatedElement = node.propagatedElement; | |
| 10026 toNode.propagatedType = node.propagatedType; | |
| 10027 toNode.staticElement = node.staticElement; | |
| 10028 toNode.staticType = node.staticType; | |
| 10029 return true; | |
| 10030 } | |
| 10031 return false; | |
| 10032 } | |
| 10033 | |
| 10034 @override | |
| 10035 bool visitAwaitExpression(AwaitExpression node) { | |
| 10036 AwaitExpression toNode = this._toNode as AwaitExpression; | |
| 10037 if (_and(_isEqualTokens(node.awaitKeyword, toNode.awaitKeyword), | |
| 10038 _isEqualNodes(node.expression, toNode.expression))) { | |
| 10039 toNode.propagatedType = node.propagatedType; | |
| 10040 toNode.staticType = node.staticType; | |
| 10041 return true; | |
| 10042 } | |
| 10043 return false; | |
| 10044 } | |
| 10045 | |
| 10046 @override | |
| 10047 bool visitBinaryExpression(BinaryExpression node) { | |
| 10048 BinaryExpression toNode = this._toNode as BinaryExpression; | |
| 10049 if (_and( | |
| 10050 _isEqualNodes(node.leftOperand, toNode.leftOperand), | |
| 10051 _isEqualTokens(node.operator, toNode.operator), | |
| 10052 _isEqualNodes(node.rightOperand, toNode.rightOperand))) { | |
| 10053 toNode.propagatedElement = node.propagatedElement; | |
| 10054 toNode.propagatedType = node.propagatedType; | |
| 10055 toNode.staticElement = node.staticElement; | |
| 10056 toNode.staticType = node.staticType; | |
| 10057 return true; | |
| 10058 } | |
| 10059 return false; | |
| 10060 } | |
| 10061 | |
| 10062 @override | |
| 10063 bool visitBlock(Block node) { | |
| 10064 Block toNode = this._toNode as Block; | |
| 10065 return _and( | |
| 10066 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10067 _isEqualNodeLists(node.statements, toNode.statements), | |
| 10068 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 10069 } | |
| 10070 | |
| 10071 @override | |
| 10072 bool visitBlockFunctionBody(BlockFunctionBody node) { | |
| 10073 BlockFunctionBody toNode = this._toNode as BlockFunctionBody; | |
| 10074 return _isEqualNodes(node.block, toNode.block); | |
| 10075 } | |
| 10076 | |
| 10077 @override | |
| 10078 bool visitBooleanLiteral(BooleanLiteral node) { | |
| 10079 BooleanLiteral toNode = this._toNode as BooleanLiteral; | |
| 10080 if (_and(_isEqualTokens(node.literal, toNode.literal), | |
| 10081 node.value == toNode.value)) { | |
| 10082 toNode.propagatedType = node.propagatedType; | |
| 10083 toNode.staticType = node.staticType; | |
| 10084 return true; | |
| 10085 } | |
| 10086 return false; | |
| 10087 } | |
| 10088 | |
| 10089 @override | |
| 10090 bool visitBreakStatement(BreakStatement node) { | |
| 10091 BreakStatement toNode = this._toNode as BreakStatement; | |
| 10092 if (_and( | |
| 10093 _isEqualTokens(node.breakKeyword, toNode.breakKeyword), | |
| 10094 _isEqualNodes(node.label, toNode.label), | |
| 10095 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10096 // TODO(paulberry): map node.target to toNode.target. | |
| 10097 return true; | |
| 10098 } | |
| 10099 return false; | |
| 10100 } | |
| 10101 | |
| 10102 @override | |
| 10103 bool visitCascadeExpression(CascadeExpression node) { | |
| 10104 CascadeExpression toNode = this._toNode as CascadeExpression; | |
| 10105 if (_and(_isEqualNodes(node.target, toNode.target), | |
| 10106 _isEqualNodeLists(node.cascadeSections, toNode.cascadeSections))) { | |
| 10107 toNode.propagatedType = node.propagatedType; | |
| 10108 toNode.staticType = node.staticType; | |
| 10109 return true; | |
| 10110 } | |
| 10111 return false; | |
| 10112 } | |
| 10113 | |
| 10114 @override | |
| 10115 bool visitCatchClause(CatchClause node) { | |
| 10116 CatchClause toNode = this._toNode as CatchClause; | |
| 10117 return _and( | |
| 10118 _isEqualTokens(node.onKeyword, toNode.onKeyword), | |
| 10119 _isEqualNodes(node.exceptionType, toNode.exceptionType), | |
| 10120 _isEqualTokens(node.catchKeyword, toNode.catchKeyword), | |
| 10121 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10122 _isEqualNodes(node.exceptionParameter, toNode.exceptionParameter), | |
| 10123 _isEqualTokens(node.comma, toNode.comma), | |
| 10124 _isEqualNodes(node.stackTraceParameter, toNode.stackTraceParameter), | |
| 10125 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10126 _isEqualNodes(node.body, toNode.body)); | |
| 10127 } | |
| 10128 | |
| 10129 @override | |
| 10130 bool visitClassDeclaration(ClassDeclaration node) { | |
| 10131 ClassDeclaration toNode = this._toNode as ClassDeclaration; | |
| 10132 return _and( | |
| 10133 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10134 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10135 _isEqualTokens(node.abstractKeyword, toNode.abstractKeyword), | |
| 10136 _isEqualTokens(node.classKeyword, toNode.classKeyword), | |
| 10137 _isEqualNodes(node.name, toNode.name), | |
| 10138 _isEqualNodes(node.typeParameters, toNode.typeParameters), | |
| 10139 _isEqualNodes(node.extendsClause, toNode.extendsClause), | |
| 10140 _isEqualNodes(node.withClause, toNode.withClause), | |
| 10141 _isEqualNodes(node.implementsClause, toNode.implementsClause), | |
| 10142 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10143 _isEqualNodeLists(node.members, toNode.members), | |
| 10144 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 10145 } | |
| 10146 | |
| 10147 @override | |
| 10148 bool visitClassTypeAlias(ClassTypeAlias node) { | |
| 10149 ClassTypeAlias toNode = this._toNode as ClassTypeAlias; | |
| 10150 return _and( | |
| 10151 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10152 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10153 _isEqualTokens(node.typedefKeyword, toNode.typedefKeyword), | |
| 10154 _isEqualNodes(node.name, toNode.name), | |
| 10155 _isEqualNodes(node.typeParameters, toNode.typeParameters), | |
| 10156 _isEqualTokens(node.equals, toNode.equals), | |
| 10157 _isEqualTokens(node.abstractKeyword, toNode.abstractKeyword), | |
| 10158 _isEqualNodes(node.superclass, toNode.superclass), | |
| 10159 _isEqualNodes(node.withClause, toNode.withClause), | |
| 10160 _isEqualNodes(node.implementsClause, toNode.implementsClause), | |
| 10161 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10162 } | |
| 10163 | |
| 10164 @override | |
| 10165 bool visitComment(Comment node) { | |
| 10166 Comment toNode = this._toNode as Comment; | |
| 10167 return _isEqualNodeLists(node.references, toNode.references); | |
| 10168 } | |
| 10169 | |
| 10170 @override | |
| 10171 bool visitCommentReference(CommentReference node) { | |
| 10172 CommentReference toNode = this._toNode as CommentReference; | |
| 10173 return _and(_isEqualTokens(node.newKeyword, toNode.newKeyword), | |
| 10174 _isEqualNodes(node.identifier, toNode.identifier)); | |
| 10175 } | |
| 10176 | |
| 10177 @override | |
| 10178 bool visitCompilationUnit(CompilationUnit node) { | |
| 10179 CompilationUnit toNode = this._toNode as CompilationUnit; | |
| 10180 if (_and( | |
| 10181 _isEqualTokens(node.beginToken, toNode.beginToken), | |
| 10182 _isEqualNodes(node.scriptTag, toNode.scriptTag), | |
| 10183 _isEqualNodeLists(node.directives, toNode.directives), | |
| 10184 _isEqualNodeLists(node.declarations, toNode.declarations), | |
| 10185 _isEqualTokens(node.endToken, toNode.endToken))) { | |
| 10186 toNode.element = node.element; | |
| 10187 return true; | |
| 10188 } | |
| 10189 return false; | |
| 10190 } | |
| 10191 | |
| 10192 @override | |
| 10193 bool visitConditionalExpression(ConditionalExpression node) { | |
| 10194 ConditionalExpression toNode = this._toNode as ConditionalExpression; | |
| 10195 if (_and( | |
| 10196 _isEqualNodes(node.condition, toNode.condition), | |
| 10197 _isEqualTokens(node.question, toNode.question), | |
| 10198 _isEqualNodes(node.thenExpression, toNode.thenExpression), | |
| 10199 _isEqualTokens(node.colon, toNode.colon), | |
| 10200 _isEqualNodes(node.elseExpression, toNode.elseExpression))) { | |
| 10201 toNode.propagatedType = node.propagatedType; | |
| 10202 toNode.staticType = node.staticType; | |
| 10203 return true; | |
| 10204 } | |
| 10205 return false; | |
| 10206 } | |
| 10207 | |
| 10208 @override | |
| 10209 bool visitConfiguration(Configuration node) { | |
| 10210 Configuration toNode = this._toNode as Configuration; | |
| 10211 if (_and( | |
| 10212 _isEqualTokens(node.ifKeyword, toNode.ifKeyword), | |
| 10213 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10214 _isEqualNodes(node.name, toNode.name), | |
| 10215 _isEqualTokens(node.equalToken, toNode.equalToken), | |
| 10216 _isEqualNodes(node.value, toNode.value), | |
| 10217 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10218 _isEqualNodes(node.libraryUri, toNode.libraryUri))) { | |
| 10219 return true; | |
| 10220 } | |
| 10221 return false; | |
| 10222 } | |
| 10223 | |
| 10224 @override | |
| 10225 bool visitConstructorDeclaration(ConstructorDeclaration node) { | |
| 10226 ConstructorDeclaration toNode = this._toNode as ConstructorDeclaration; | |
| 10227 if (_and( | |
| 10228 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10229 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10230 _isEqualTokens(node.externalKeyword, toNode.externalKeyword), | |
| 10231 _isEqualTokens(node.constKeyword, toNode.constKeyword), | |
| 10232 _isEqualTokens(node.factoryKeyword, toNode.factoryKeyword), | |
| 10233 _isEqualNodes(node.returnType, toNode.returnType), | |
| 10234 _isEqualTokens(node.period, toNode.period), | |
| 10235 _isEqualNodes(node.name, toNode.name), | |
| 10236 _isEqualNodes(node.parameters, toNode.parameters), | |
| 10237 _isEqualTokens(node.separator, toNode.separator), | |
| 10238 _isEqualNodeLists(node.initializers, toNode.initializers), | |
| 10239 _isEqualNodes(node.redirectedConstructor, toNode.redirectedConstructor), | |
| 10240 _isEqualNodes(node.body, toNode.body))) { | |
| 10241 toNode.element = node.element; | |
| 10242 return true; | |
| 10243 } | |
| 10244 return false; | |
| 10245 } | |
| 10246 | |
| 10247 @override | |
| 10248 bool visitConstructorFieldInitializer(ConstructorFieldInitializer node) { | |
| 10249 ConstructorFieldInitializer toNode = | |
| 10250 this._toNode as ConstructorFieldInitializer; | |
| 10251 return _and( | |
| 10252 _isEqualTokens(node.thisKeyword, toNode.thisKeyword), | |
| 10253 _isEqualTokens(node.period, toNode.period), | |
| 10254 _isEqualNodes(node.fieldName, toNode.fieldName), | |
| 10255 _isEqualTokens(node.equals, toNode.equals), | |
| 10256 _isEqualNodes(node.expression, toNode.expression)); | |
| 10257 } | |
| 10258 | |
| 10259 @override | |
| 10260 bool visitConstructorName(ConstructorName node) { | |
| 10261 ConstructorName toNode = this._toNode as ConstructorName; | |
| 10262 if (_and( | |
| 10263 _isEqualNodes(node.type, toNode.type), | |
| 10264 _isEqualTokens(node.period, toNode.period), | |
| 10265 _isEqualNodes(node.name, toNode.name))) { | |
| 10266 toNode.staticElement = node.staticElement; | |
| 10267 return true; | |
| 10268 } | |
| 10269 return false; | |
| 10270 } | |
| 10271 | |
| 10272 @override | |
| 10273 bool visitContinueStatement(ContinueStatement node) { | |
| 10274 ContinueStatement toNode = this._toNode as ContinueStatement; | |
| 10275 if (_and( | |
| 10276 _isEqualTokens(node.continueKeyword, toNode.continueKeyword), | |
| 10277 _isEqualNodes(node.label, toNode.label), | |
| 10278 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10279 // TODO(paulberry): map node.target to toNode.target. | |
| 10280 return true; | |
| 10281 } | |
| 10282 return false; | |
| 10283 } | |
| 10284 | |
| 10285 @override | |
| 10286 bool visitDeclaredIdentifier(DeclaredIdentifier node) { | |
| 10287 DeclaredIdentifier toNode = this._toNode as DeclaredIdentifier; | |
| 10288 return _and( | |
| 10289 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10290 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10291 _isEqualTokens(node.keyword, toNode.keyword), | |
| 10292 _isEqualNodes(node.type, toNode.type), | |
| 10293 _isEqualNodes(node.identifier, toNode.identifier)); | |
| 10294 } | |
| 10295 | |
| 10296 @override | |
| 10297 bool visitDefaultFormalParameter(DefaultFormalParameter node) { | |
| 10298 DefaultFormalParameter toNode = this._toNode as DefaultFormalParameter; | |
| 10299 return _and( | |
| 10300 _isEqualNodes(node.parameter, toNode.parameter), | |
| 10301 node.kind == toNode.kind, | |
| 10302 _isEqualTokens(node.separator, toNode.separator), | |
| 10303 _isEqualNodes(node.defaultValue, toNode.defaultValue)); | |
| 10304 } | |
| 10305 | |
| 10306 @override | |
| 10307 bool visitDoStatement(DoStatement node) { | |
| 10308 DoStatement toNode = this._toNode as DoStatement; | |
| 10309 return _and( | |
| 10310 _isEqualTokens(node.doKeyword, toNode.doKeyword), | |
| 10311 _isEqualNodes(node.body, toNode.body), | |
| 10312 _isEqualTokens(node.whileKeyword, toNode.whileKeyword), | |
| 10313 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10314 _isEqualNodes(node.condition, toNode.condition), | |
| 10315 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10316 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10317 } | |
| 10318 | |
| 10319 @override | |
| 10320 bool visitDottedName(DottedName node) { | |
| 10321 DottedName toNode = this._toNode as DottedName; | |
| 10322 return _isEqualNodeLists(node.components, toNode.components); | |
| 10323 } | |
| 10324 | |
| 10325 @override | |
| 10326 bool visitDoubleLiteral(DoubleLiteral node) { | |
| 10327 DoubleLiteral toNode = this._toNode as DoubleLiteral; | |
| 10328 if (_and(_isEqualTokens(node.literal, toNode.literal), | |
| 10329 node.value == toNode.value)) { | |
| 10330 toNode.propagatedType = node.propagatedType; | |
| 10331 toNode.staticType = node.staticType; | |
| 10332 return true; | |
| 10333 } | |
| 10334 return false; | |
| 10335 } | |
| 10336 | |
| 10337 @override | |
| 10338 bool visitEmptyFunctionBody(EmptyFunctionBody node) { | |
| 10339 EmptyFunctionBody toNode = this._toNode as EmptyFunctionBody; | |
| 10340 return _isEqualTokens(node.semicolon, toNode.semicolon); | |
| 10341 } | |
| 10342 | |
| 10343 @override | |
| 10344 bool visitEmptyStatement(EmptyStatement node) { | |
| 10345 EmptyStatement toNode = this._toNode as EmptyStatement; | |
| 10346 return _isEqualTokens(node.semicolon, toNode.semicolon); | |
| 10347 } | |
| 10348 | |
| 10349 @override | |
| 10350 bool visitEnumConstantDeclaration(EnumConstantDeclaration node) { | |
| 10351 EnumConstantDeclaration toNode = this._toNode as EnumConstantDeclaration; | |
| 10352 return _and( | |
| 10353 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10354 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10355 _isEqualNodes(node.name, toNode.name)); | |
| 10356 } | |
| 10357 | |
| 10358 @override | |
| 10359 bool visitEnumDeclaration(EnumDeclaration node) { | |
| 10360 EnumDeclaration toNode = this._toNode as EnumDeclaration; | |
| 10361 return _and( | |
| 10362 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10363 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10364 _isEqualTokens(node.enumKeyword, toNode.enumKeyword), | |
| 10365 _isEqualNodes(node.name, toNode.name), | |
| 10366 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10367 _isEqualNodeLists(node.constants, toNode.constants), | |
| 10368 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 10369 } | |
| 10370 | |
| 10371 @override | |
| 10372 bool visitExportDirective(ExportDirective node) { | |
| 10373 ExportDirective toNode = this._toNode as ExportDirective; | |
| 10374 if (_and( | |
| 10375 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10376 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10377 _isEqualTokens(node.keyword, toNode.keyword), | |
| 10378 _isEqualNodes(node.uri, toNode.uri), | |
| 10379 _isEqualNodeLists(node.combinators, toNode.combinators), | |
| 10380 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10381 toNode.element = node.element; | |
| 10382 return true; | |
| 10383 } | |
| 10384 return false; | |
| 10385 } | |
| 10386 | |
| 10387 @override | |
| 10388 bool visitExpressionFunctionBody(ExpressionFunctionBody node) { | |
| 10389 ExpressionFunctionBody toNode = this._toNode as ExpressionFunctionBody; | |
| 10390 return _and( | |
| 10391 _isEqualTokens(node.functionDefinition, toNode.functionDefinition), | |
| 10392 _isEqualNodes(node.expression, toNode.expression), | |
| 10393 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10394 } | |
| 10395 | |
| 10396 @override | |
| 10397 bool visitExpressionStatement(ExpressionStatement node) { | |
| 10398 ExpressionStatement toNode = this._toNode as ExpressionStatement; | |
| 10399 return _and(_isEqualNodes(node.expression, toNode.expression), | |
| 10400 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10401 } | |
| 10402 | |
| 10403 @override | |
| 10404 bool visitExtendsClause(ExtendsClause node) { | |
| 10405 ExtendsClause toNode = this._toNode as ExtendsClause; | |
| 10406 return _and(_isEqualTokens(node.extendsKeyword, toNode.extendsKeyword), | |
| 10407 _isEqualNodes(node.superclass, toNode.superclass)); | |
| 10408 } | |
| 10409 | |
| 10410 @override | |
| 10411 bool visitFieldDeclaration(FieldDeclaration node) { | |
| 10412 FieldDeclaration toNode = this._toNode as FieldDeclaration; | |
| 10413 return _and( | |
| 10414 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10415 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10416 _isEqualTokens(node.staticKeyword, toNode.staticKeyword), | |
| 10417 _isEqualNodes(node.fields, toNode.fields), | |
| 10418 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10419 } | |
| 10420 | |
| 10421 @override | |
| 10422 bool visitFieldFormalParameter(FieldFormalParameter node) { | |
| 10423 FieldFormalParameter toNode = this._toNode as FieldFormalParameter; | |
| 10424 return _and( | |
| 10425 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10426 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10427 _isEqualTokens(node.keyword, toNode.keyword), | |
| 10428 _isEqualNodes(node.type, toNode.type), | |
| 10429 _isEqualTokens(node.thisKeyword, toNode.thisKeyword), | |
| 10430 _isEqualTokens(node.period, toNode.period), | |
| 10431 _isEqualNodes(node.identifier, toNode.identifier)); | |
| 10432 } | |
| 10433 | |
| 10434 @override | |
| 10435 bool visitForEachStatement(ForEachStatement node) { | |
| 10436 ForEachStatement toNode = this._toNode as ForEachStatement; | |
| 10437 return _and( | |
| 10438 _isEqualTokens(node.forKeyword, toNode.forKeyword), | |
| 10439 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10440 _isEqualNodes(node.loopVariable, toNode.loopVariable), | |
| 10441 _isEqualTokens(node.inKeyword, toNode.inKeyword), | |
| 10442 _isEqualNodes(node.iterable, toNode.iterable), | |
| 10443 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10444 _isEqualNodes(node.body, toNode.body)); | |
| 10445 } | |
| 10446 | |
| 10447 @override | |
| 10448 bool visitFormalParameterList(FormalParameterList node) { | |
| 10449 FormalParameterList toNode = this._toNode as FormalParameterList; | |
| 10450 return _and( | |
| 10451 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10452 _isEqualNodeLists(node.parameters, toNode.parameters), | |
| 10453 _isEqualTokens(node.leftDelimiter, toNode.leftDelimiter), | |
| 10454 _isEqualTokens(node.rightDelimiter, toNode.rightDelimiter), | |
| 10455 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis)); | |
| 10456 } | |
| 10457 | |
| 10458 @override | |
| 10459 bool visitForStatement(ForStatement node) { | |
| 10460 ForStatement toNode = this._toNode as ForStatement; | |
| 10461 return _and( | |
| 10462 _isEqualTokens(node.forKeyword, toNode.forKeyword), | |
| 10463 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10464 _isEqualNodes(node.variables, toNode.variables), | |
| 10465 _isEqualNodes(node.initialization, toNode.initialization), | |
| 10466 _isEqualTokens(node.leftSeparator, toNode.leftSeparator), | |
| 10467 _isEqualNodes(node.condition, toNode.condition), | |
| 10468 _isEqualTokens(node.rightSeparator, toNode.rightSeparator), | |
| 10469 _isEqualNodeLists(node.updaters, toNode.updaters), | |
| 10470 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10471 _isEqualNodes(node.body, toNode.body)); | |
| 10472 } | |
| 10473 | |
| 10474 @override | |
| 10475 bool visitFunctionDeclaration(FunctionDeclaration node) { | |
| 10476 FunctionDeclaration toNode = this._toNode as FunctionDeclaration; | |
| 10477 return _and( | |
| 10478 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10479 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10480 _isEqualTokens(node.externalKeyword, toNode.externalKeyword), | |
| 10481 _isEqualNodes(node.returnType, toNode.returnType), | |
| 10482 _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword), | |
| 10483 _isEqualNodes(node.name, toNode.name), | |
| 10484 _isEqualNodes(node.functionExpression, toNode.functionExpression)); | |
| 10485 } | |
| 10486 | |
| 10487 @override | |
| 10488 bool visitFunctionDeclarationStatement(FunctionDeclarationStatement node) { | |
| 10489 FunctionDeclarationStatement toNode = | |
| 10490 this._toNode as FunctionDeclarationStatement; | |
| 10491 return _isEqualNodes(node.functionDeclaration, toNode.functionDeclaration); | |
| 10492 } | |
| 10493 | |
| 10494 @override | |
| 10495 bool visitFunctionExpression(FunctionExpression node) { | |
| 10496 FunctionExpression toNode = this._toNode as FunctionExpression; | |
| 10497 if (_and(_isEqualNodes(node.parameters, toNode.parameters), | |
| 10498 _isEqualNodes(node.body, toNode.body))) { | |
| 10499 toNode.element = node.element; | |
| 10500 toNode.propagatedType = node.propagatedType; | |
| 10501 toNode.staticType = node.staticType; | |
| 10502 return true; | |
| 10503 } | |
| 10504 return false; | |
| 10505 } | |
| 10506 | |
| 10507 @override | |
| 10508 bool visitFunctionExpressionInvocation(FunctionExpressionInvocation node) { | |
| 10509 FunctionExpressionInvocation toNode = | |
| 10510 this._toNode as FunctionExpressionInvocation; | |
| 10511 if (_and(_isEqualNodes(node.function, toNode.function), | |
| 10512 _isEqualNodes(node.argumentList, toNode.argumentList))) { | |
| 10513 toNode.propagatedElement = node.propagatedElement; | |
| 10514 toNode.propagatedInvokeType = node.propagatedInvokeType; | |
| 10515 toNode.propagatedType = node.propagatedType; | |
| 10516 toNode.staticInvokeType = node.staticInvokeType; | |
| 10517 toNode.staticElement = node.staticElement; | |
| 10518 toNode.staticType = node.staticType; | |
| 10519 return true; | |
| 10520 } | |
| 10521 return false; | |
| 10522 } | |
| 10523 | |
| 10524 @override | |
| 10525 bool visitFunctionTypeAlias(FunctionTypeAlias node) { | |
| 10526 FunctionTypeAlias toNode = this._toNode as FunctionTypeAlias; | |
| 10527 return _and( | |
| 10528 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10529 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10530 _isEqualTokens(node.typedefKeyword, toNode.typedefKeyword), | |
| 10531 _isEqualNodes(node.returnType, toNode.returnType), | |
| 10532 _isEqualNodes(node.name, toNode.name), | |
| 10533 _isEqualNodes(node.typeParameters, toNode.typeParameters), | |
| 10534 _isEqualNodes(node.parameters, toNode.parameters), | |
| 10535 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10536 } | |
| 10537 | |
| 10538 @override | |
| 10539 bool visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) { | |
| 10540 FunctionTypedFormalParameter toNode = | |
| 10541 this._toNode as FunctionTypedFormalParameter; | |
| 10542 return _and( | |
| 10543 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10544 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10545 _isEqualNodes(node.returnType, toNode.returnType), | |
| 10546 _isEqualNodes(node.identifier, toNode.identifier), | |
| 10547 _isEqualNodes(node.parameters, toNode.parameters)); | |
| 10548 } | |
| 10549 | |
| 10550 @override | |
| 10551 bool visitHideCombinator(HideCombinator node) { | |
| 10552 HideCombinator toNode = this._toNode as HideCombinator; | |
| 10553 return _and(_isEqualTokens(node.keyword, toNode.keyword), | |
| 10554 _isEqualNodeLists(node.hiddenNames, toNode.hiddenNames)); | |
| 10555 } | |
| 10556 | |
| 10557 @override | |
| 10558 bool visitIfStatement(IfStatement node) { | |
| 10559 IfStatement toNode = this._toNode as IfStatement; | |
| 10560 return _and( | |
| 10561 _isEqualTokens(node.ifKeyword, toNode.ifKeyword), | |
| 10562 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10563 _isEqualNodes(node.condition, toNode.condition), | |
| 10564 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 10565 _isEqualNodes(node.thenStatement, toNode.thenStatement), | |
| 10566 _isEqualTokens(node.elseKeyword, toNode.elseKeyword), | |
| 10567 _isEqualNodes(node.elseStatement, toNode.elseStatement)); | |
| 10568 } | |
| 10569 | |
| 10570 @override | |
| 10571 bool visitImplementsClause(ImplementsClause node) { | |
| 10572 ImplementsClause toNode = this._toNode as ImplementsClause; | |
| 10573 return _and( | |
| 10574 _isEqualTokens(node.implementsKeyword, toNode.implementsKeyword), | |
| 10575 _isEqualNodeLists(node.interfaces, toNode.interfaces)); | |
| 10576 } | |
| 10577 | |
| 10578 @override | |
| 10579 bool visitImportDirective(ImportDirective node) { | |
| 10580 ImportDirective toNode = this._toNode as ImportDirective; | |
| 10581 if (_and( | |
| 10582 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10583 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10584 _isEqualTokens(node.keyword, toNode.keyword), | |
| 10585 _isEqualNodes(node.uri, toNode.uri), | |
| 10586 _isEqualTokens(node.asKeyword, toNode.asKeyword), | |
| 10587 _isEqualNodes(node.prefix, toNode.prefix), | |
| 10588 _isEqualNodeLists(node.combinators, toNode.combinators), | |
| 10589 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10590 toNode.element = node.element; | |
| 10591 return true; | |
| 10592 } | |
| 10593 return false; | |
| 10594 } | |
| 10595 | |
| 10596 @override | |
| 10597 bool visitIndexExpression(IndexExpression node) { | |
| 10598 IndexExpression toNode = this._toNode as IndexExpression; | |
| 10599 if (_and( | |
| 10600 _isEqualNodes(node.target, toNode.target), | |
| 10601 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10602 _isEqualNodes(node.index, toNode.index), | |
| 10603 _isEqualTokens(node.rightBracket, toNode.rightBracket))) { | |
| 10604 toNode.auxiliaryElements = node.auxiliaryElements; | |
| 10605 toNode.propagatedElement = node.propagatedElement; | |
| 10606 toNode.propagatedType = node.propagatedType; | |
| 10607 toNode.staticElement = node.staticElement; | |
| 10608 toNode.staticType = node.staticType; | |
| 10609 return true; | |
| 10610 } | |
| 10611 return false; | |
| 10612 } | |
| 10613 | |
| 10614 @override | |
| 10615 bool visitInstanceCreationExpression(InstanceCreationExpression node) { | |
| 10616 InstanceCreationExpression toNode = | |
| 10617 this._toNode as InstanceCreationExpression; | |
| 10618 if (_and( | |
| 10619 _isEqualTokens(node.keyword, toNode.keyword), | |
| 10620 _isEqualNodes(node.constructorName, toNode.constructorName), | |
| 10621 _isEqualNodes(node.argumentList, toNode.argumentList))) { | |
| 10622 toNode.propagatedType = node.propagatedType; | |
| 10623 toNode.staticElement = node.staticElement; | |
| 10624 toNode.staticType = node.staticType; | |
| 10625 return true; | |
| 10626 } | |
| 10627 return false; | |
| 10628 } | |
| 10629 | |
| 10630 @override | |
| 10631 bool visitIntegerLiteral(IntegerLiteral node) { | |
| 10632 IntegerLiteral toNode = this._toNode as IntegerLiteral; | |
| 10633 if (_and(_isEqualTokens(node.literal, toNode.literal), | |
| 10634 node.value == toNode.value)) { | |
| 10635 toNode.propagatedType = node.propagatedType; | |
| 10636 toNode.staticType = node.staticType; | |
| 10637 return true; | |
| 10638 } | |
| 10639 return false; | |
| 10640 } | |
| 10641 | |
| 10642 @override | |
| 10643 bool visitInterpolationExpression(InterpolationExpression node) { | |
| 10644 InterpolationExpression toNode = this._toNode as InterpolationExpression; | |
| 10645 return _and( | |
| 10646 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10647 _isEqualNodes(node.expression, toNode.expression), | |
| 10648 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 10649 } | |
| 10650 | |
| 10651 @override | |
| 10652 bool visitInterpolationString(InterpolationString node) { | |
| 10653 InterpolationString toNode = this._toNode as InterpolationString; | |
| 10654 return _and(_isEqualTokens(node.contents, toNode.contents), | |
| 10655 node.value == toNode.value); | |
| 10656 } | |
| 10657 | |
| 10658 @override | |
| 10659 bool visitIsExpression(IsExpression node) { | |
| 10660 IsExpression toNode = this._toNode as IsExpression; | |
| 10661 if (_and( | |
| 10662 _isEqualNodes(node.expression, toNode.expression), | |
| 10663 _isEqualTokens(node.isOperator, toNode.isOperator), | |
| 10664 _isEqualTokens(node.notOperator, toNode.notOperator), | |
| 10665 _isEqualNodes(node.type, toNode.type))) { | |
| 10666 toNode.propagatedType = node.propagatedType; | |
| 10667 toNode.staticType = node.staticType; | |
| 10668 return true; | |
| 10669 } | |
| 10670 return false; | |
| 10671 } | |
| 10672 | |
| 10673 @override | |
| 10674 bool visitLabel(Label node) { | |
| 10675 Label toNode = this._toNode as Label; | |
| 10676 return _and(_isEqualNodes(node.label, toNode.label), | |
| 10677 _isEqualTokens(node.colon, toNode.colon)); | |
| 10678 } | |
| 10679 | |
| 10680 @override | |
| 10681 bool visitLabeledStatement(LabeledStatement node) { | |
| 10682 LabeledStatement toNode = this._toNode as LabeledStatement; | |
| 10683 return _and(_isEqualNodeLists(node.labels, toNode.labels), | |
| 10684 _isEqualNodes(node.statement, toNode.statement)); | |
| 10685 } | |
| 10686 | |
| 10687 @override | |
| 10688 bool visitLibraryDirective(LibraryDirective node) { | |
| 10689 LibraryDirective toNode = this._toNode as LibraryDirective; | |
| 10690 if (_and( | |
| 10691 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10692 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10693 _isEqualTokens(node.libraryKeyword, toNode.libraryKeyword), | |
| 10694 _isEqualNodes(node.name, toNode.name), | |
| 10695 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10696 toNode.element = node.element; | |
| 10697 return true; | |
| 10698 } | |
| 10699 return false; | |
| 10700 } | |
| 10701 | |
| 10702 @override | |
| 10703 bool visitLibraryIdentifier(LibraryIdentifier node) { | |
| 10704 LibraryIdentifier toNode = this._toNode as LibraryIdentifier; | |
| 10705 if (_isEqualNodeLists(node.components, toNode.components)) { | |
| 10706 toNode.propagatedType = node.propagatedType; | |
| 10707 toNode.staticType = node.staticType; | |
| 10708 return true; | |
| 10709 } | |
| 10710 return false; | |
| 10711 } | |
| 10712 | |
| 10713 @override | |
| 10714 bool visitListLiteral(ListLiteral node) { | |
| 10715 ListLiteral toNode = this._toNode as ListLiteral; | |
| 10716 if (_and( | |
| 10717 _isEqualTokens(node.constKeyword, toNode.constKeyword), | |
| 10718 _isEqualNodes(node.typeArguments, toNode.typeArguments), | |
| 10719 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10720 _isEqualNodeLists(node.elements, toNode.elements), | |
| 10721 _isEqualTokens(node.rightBracket, toNode.rightBracket))) { | |
| 10722 toNode.propagatedType = node.propagatedType; | |
| 10723 toNode.staticType = node.staticType; | |
| 10724 return true; | |
| 10725 } | |
| 10726 return false; | |
| 10727 } | |
| 10728 | |
| 10729 @override | |
| 10730 bool visitMapLiteral(MapLiteral node) { | |
| 10731 MapLiteral toNode = this._toNode as MapLiteral; | |
| 10732 if (_and( | |
| 10733 _isEqualTokens(node.constKeyword, toNode.constKeyword), | |
| 10734 _isEqualNodes(node.typeArguments, toNode.typeArguments), | |
| 10735 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 10736 _isEqualNodeLists(node.entries, toNode.entries), | |
| 10737 _isEqualTokens(node.rightBracket, toNode.rightBracket))) { | |
| 10738 toNode.propagatedType = node.propagatedType; | |
| 10739 toNode.staticType = node.staticType; | |
| 10740 return true; | |
| 10741 } | |
| 10742 return false; | |
| 10743 } | |
| 10744 | |
| 10745 @override | |
| 10746 bool visitMapLiteralEntry(MapLiteralEntry node) { | |
| 10747 MapLiteralEntry toNode = this._toNode as MapLiteralEntry; | |
| 10748 return _and( | |
| 10749 _isEqualNodes(node.key, toNode.key), | |
| 10750 _isEqualTokens(node.separator, toNode.separator), | |
| 10751 _isEqualNodes(node.value, toNode.value)); | |
| 10752 } | |
| 10753 | |
| 10754 @override | |
| 10755 bool visitMethodDeclaration(MethodDeclaration node) { | |
| 10756 MethodDeclaration toNode = this._toNode as MethodDeclaration; | |
| 10757 return _and( | |
| 10758 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10759 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10760 _isEqualTokens(node.externalKeyword, toNode.externalKeyword), | |
| 10761 _isEqualTokens(node.modifierKeyword, toNode.modifierKeyword), | |
| 10762 _isEqualNodes(node.returnType, toNode.returnType), | |
| 10763 _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword), | |
| 10764 _isEqualTokens(node.propertyKeyword, toNode.propertyKeyword), | |
| 10765 _isEqualNodes(node.name, toNode.name), | |
| 10766 _isEqualNodes(node.parameters, toNode.parameters), | |
| 10767 _isEqualNodes(node.body, toNode.body)); | |
| 10768 } | |
| 10769 | |
| 10770 @override | |
| 10771 bool visitMethodInvocation(MethodInvocation node) { | |
| 10772 MethodInvocation toNode = this._toNode as MethodInvocation; | |
| 10773 if (_and( | |
| 10774 _isEqualNodes(node.target, toNode.target), | |
| 10775 _isEqualTokens(node.operator, toNode.operator), | |
| 10776 _isEqualNodes(node.methodName, toNode.methodName), | |
| 10777 _isEqualNodes(node.argumentList, toNode.argumentList))) { | |
| 10778 toNode.propagatedInvokeType = node.propagatedInvokeType; | |
| 10779 toNode.propagatedType = node.propagatedType; | |
| 10780 toNode.staticInvokeType = node.staticInvokeType; | |
| 10781 toNode.staticType = node.staticType; | |
| 10782 return true; | |
| 10783 } | |
| 10784 return false; | |
| 10785 } | |
| 10786 | |
| 10787 @override | |
| 10788 bool visitNamedExpression(NamedExpression node) { | |
| 10789 NamedExpression toNode = this._toNode as NamedExpression; | |
| 10790 if (_and(_isEqualNodes(node.name, toNode.name), | |
| 10791 _isEqualNodes(node.expression, toNode.expression))) { | |
| 10792 toNode.propagatedType = node.propagatedType; | |
| 10793 toNode.staticType = node.staticType; | |
| 10794 return true; | |
| 10795 } | |
| 10796 return false; | |
| 10797 } | |
| 10798 | |
| 10799 @override | |
| 10800 bool visitNativeClause(NativeClause node) { | |
| 10801 NativeClause toNode = this._toNode as NativeClause; | |
| 10802 return _and(_isEqualTokens(node.nativeKeyword, toNode.nativeKeyword), | |
| 10803 _isEqualNodes(node.name, toNode.name)); | |
| 10804 } | |
| 10805 | |
| 10806 @override | |
| 10807 bool visitNativeFunctionBody(NativeFunctionBody node) { | |
| 10808 NativeFunctionBody toNode = this._toNode as NativeFunctionBody; | |
| 10809 return _and( | |
| 10810 _isEqualTokens(node.nativeKeyword, toNode.nativeKeyword), | |
| 10811 _isEqualNodes(node.stringLiteral, toNode.stringLiteral), | |
| 10812 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10813 } | |
| 10814 | |
| 10815 @override | |
| 10816 bool visitNullLiteral(NullLiteral node) { | |
| 10817 NullLiteral toNode = this._toNode as NullLiteral; | |
| 10818 if (_isEqualTokens(node.literal, toNode.literal)) { | |
| 10819 toNode.propagatedType = node.propagatedType; | |
| 10820 toNode.staticType = node.staticType; | |
| 10821 return true; | |
| 10822 } | |
| 10823 return false; | |
| 10824 } | |
| 10825 | |
| 10826 @override | |
| 10827 bool visitParenthesizedExpression(ParenthesizedExpression node) { | |
| 10828 ParenthesizedExpression toNode = this._toNode as ParenthesizedExpression; | |
| 10829 if (_and( | |
| 10830 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 10831 _isEqualNodes(node.expression, toNode.expression), | |
| 10832 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis))) { | |
| 10833 toNode.propagatedType = node.propagatedType; | |
| 10834 toNode.staticType = node.staticType; | |
| 10835 return true; | |
| 10836 } | |
| 10837 return false; | |
| 10838 } | |
| 10839 | |
| 10840 @override | |
| 10841 bool visitPartDirective(PartDirective node) { | |
| 10842 PartDirective toNode = this._toNode as PartDirective; | |
| 10843 if (_and( | |
| 10844 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10845 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10846 _isEqualTokens(node.partKeyword, toNode.partKeyword), | |
| 10847 _isEqualNodes(node.uri, toNode.uri), | |
| 10848 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10849 toNode.element = node.element; | |
| 10850 return true; | |
| 10851 } | |
| 10852 return false; | |
| 10853 } | |
| 10854 | |
| 10855 @override | |
| 10856 bool visitPartOfDirective(PartOfDirective node) { | |
| 10857 PartOfDirective toNode = this._toNode as PartOfDirective; | |
| 10858 if (_and( | |
| 10859 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10860 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10861 _isEqualTokens(node.partKeyword, toNode.partKeyword), | |
| 10862 _isEqualTokens(node.ofKeyword, toNode.ofKeyword), | |
| 10863 _isEqualNodes(node.libraryName, toNode.libraryName), | |
| 10864 _isEqualTokens(node.semicolon, toNode.semicolon))) { | |
| 10865 toNode.element = node.element; | |
| 10866 return true; | |
| 10867 } | |
| 10868 return false; | |
| 10869 } | |
| 10870 | |
| 10871 @override | |
| 10872 bool visitPostfixExpression(PostfixExpression node) { | |
| 10873 PostfixExpression toNode = this._toNode as PostfixExpression; | |
| 10874 if (_and(_isEqualNodes(node.operand, toNode.operand), | |
| 10875 _isEqualTokens(node.operator, toNode.operator))) { | |
| 10876 toNode.propagatedElement = node.propagatedElement; | |
| 10877 toNode.propagatedType = node.propagatedType; | |
| 10878 toNode.staticElement = node.staticElement; | |
| 10879 toNode.staticType = node.staticType; | |
| 10880 return true; | |
| 10881 } | |
| 10882 return false; | |
| 10883 } | |
| 10884 | |
| 10885 @override | |
| 10886 bool visitPrefixedIdentifier(PrefixedIdentifier node) { | |
| 10887 PrefixedIdentifier toNode = this._toNode as PrefixedIdentifier; | |
| 10888 if (_and( | |
| 10889 _isEqualNodes(node.prefix, toNode.prefix), | |
| 10890 _isEqualTokens(node.period, toNode.period), | |
| 10891 _isEqualNodes(node.identifier, toNode.identifier))) { | |
| 10892 toNode.propagatedType = node.propagatedType; | |
| 10893 toNode.staticType = node.staticType; | |
| 10894 return true; | |
| 10895 } | |
| 10896 return false; | |
| 10897 } | |
| 10898 | |
| 10899 @override | |
| 10900 bool visitPrefixExpression(PrefixExpression node) { | |
| 10901 PrefixExpression toNode = this._toNode as PrefixExpression; | |
| 10902 if (_and(_isEqualTokens(node.operator, toNode.operator), | |
| 10903 _isEqualNodes(node.operand, toNode.operand))) { | |
| 10904 toNode.propagatedElement = node.propagatedElement; | |
| 10905 toNode.propagatedType = node.propagatedType; | |
| 10906 toNode.staticElement = node.staticElement; | |
| 10907 toNode.staticType = node.staticType; | |
| 10908 return true; | |
| 10909 } | |
| 10910 return false; | |
| 10911 } | |
| 10912 | |
| 10913 @override | |
| 10914 bool visitPropertyAccess(PropertyAccess node) { | |
| 10915 PropertyAccess toNode = this._toNode as PropertyAccess; | |
| 10916 if (_and( | |
| 10917 _isEqualNodes(node.target, toNode.target), | |
| 10918 _isEqualTokens(node.operator, toNode.operator), | |
| 10919 _isEqualNodes(node.propertyName, toNode.propertyName))) { | |
| 10920 toNode.propagatedType = node.propagatedType; | |
| 10921 toNode.staticType = node.staticType; | |
| 10922 return true; | |
| 10923 } | |
| 10924 return false; | |
| 10925 } | |
| 10926 | |
| 10927 @override | |
| 10928 bool visitRedirectingConstructorInvocation( | |
| 10929 RedirectingConstructorInvocation node) { | |
| 10930 RedirectingConstructorInvocation toNode = | |
| 10931 this._toNode as RedirectingConstructorInvocation; | |
| 10932 if (_and( | |
| 10933 _isEqualTokens(node.thisKeyword, toNode.thisKeyword), | |
| 10934 _isEqualTokens(node.period, toNode.period), | |
| 10935 _isEqualNodes(node.constructorName, toNode.constructorName), | |
| 10936 _isEqualNodes(node.argumentList, toNode.argumentList))) { | |
| 10937 toNode.staticElement = node.staticElement; | |
| 10938 return true; | |
| 10939 } | |
| 10940 return false; | |
| 10941 } | |
| 10942 | |
| 10943 @override | |
| 10944 bool visitRethrowExpression(RethrowExpression node) { | |
| 10945 RethrowExpression toNode = this._toNode as RethrowExpression; | |
| 10946 if (_isEqualTokens(node.rethrowKeyword, toNode.rethrowKeyword)) { | |
| 10947 toNode.propagatedType = node.propagatedType; | |
| 10948 toNode.staticType = node.staticType; | |
| 10949 return true; | |
| 10950 } | |
| 10951 return false; | |
| 10952 } | |
| 10953 | |
| 10954 @override | |
| 10955 bool visitReturnStatement(ReturnStatement node) { | |
| 10956 ReturnStatement toNode = this._toNode as ReturnStatement; | |
| 10957 return _and( | |
| 10958 _isEqualTokens(node.returnKeyword, toNode.returnKeyword), | |
| 10959 _isEqualNodes(node.expression, toNode.expression), | |
| 10960 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 10961 } | |
| 10962 | |
| 10963 @override | |
| 10964 bool visitScriptTag(ScriptTag node) { | |
| 10965 ScriptTag toNode = this._toNode as ScriptTag; | |
| 10966 return _isEqualTokens(node.scriptTag, toNode.scriptTag); | |
| 10967 } | |
| 10968 | |
| 10969 @override | |
| 10970 bool visitShowCombinator(ShowCombinator node) { | |
| 10971 ShowCombinator toNode = this._toNode as ShowCombinator; | |
| 10972 return _and(_isEqualTokens(node.keyword, toNode.keyword), | |
| 10973 _isEqualNodeLists(node.shownNames, toNode.shownNames)); | |
| 10974 } | |
| 10975 | |
| 10976 @override | |
| 10977 bool visitSimpleFormalParameter(SimpleFormalParameter node) { | |
| 10978 SimpleFormalParameter toNode = this._toNode as SimpleFormalParameter; | |
| 10979 return _and( | |
| 10980 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 10981 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 10982 _isEqualTokens(node.keyword, toNode.keyword), | |
| 10983 _isEqualNodes(node.type, toNode.type), | |
| 10984 _isEqualNodes(node.identifier, toNode.identifier)); | |
| 10985 } | |
| 10986 | |
| 10987 @override | |
| 10988 bool visitSimpleIdentifier(SimpleIdentifier node) { | |
| 10989 SimpleIdentifier toNode = this._toNode as SimpleIdentifier; | |
| 10990 if (_isEqualTokens(node.token, toNode.token)) { | |
| 10991 toNode.staticElement = node.staticElement; | |
| 10992 toNode.staticType = node.staticType; | |
| 10993 toNode.propagatedElement = node.propagatedElement; | |
| 10994 toNode.propagatedType = node.propagatedType; | |
| 10995 toNode.auxiliaryElements = node.auxiliaryElements; | |
| 10996 return true; | |
| 10997 } | |
| 10998 return false; | |
| 10999 } | |
| 11000 | |
| 11001 @override | |
| 11002 bool visitSimpleStringLiteral(SimpleStringLiteral node) { | |
| 11003 SimpleStringLiteral toNode = this._toNode as SimpleStringLiteral; | |
| 11004 if (_and(_isEqualTokens(node.literal, toNode.literal), | |
| 11005 node.value == toNode.value)) { | |
| 11006 toNode.propagatedType = node.propagatedType; | |
| 11007 toNode.staticType = node.staticType; | |
| 11008 return true; | |
| 11009 } | |
| 11010 return false; | |
| 11011 } | |
| 11012 | |
| 11013 @override | |
| 11014 bool visitStringInterpolation(StringInterpolation node) { | |
| 11015 StringInterpolation toNode = this._toNode as StringInterpolation; | |
| 11016 if (_isEqualNodeLists(node.elements, toNode.elements)) { | |
| 11017 toNode.propagatedType = node.propagatedType; | |
| 11018 toNode.staticType = node.staticType; | |
| 11019 return true; | |
| 11020 } | |
| 11021 return false; | |
| 11022 } | |
| 11023 | |
| 11024 @override | |
| 11025 bool visitSuperConstructorInvocation(SuperConstructorInvocation node) { | |
| 11026 SuperConstructorInvocation toNode = | |
| 11027 this._toNode as SuperConstructorInvocation; | |
| 11028 if (_and( | |
| 11029 _isEqualTokens(node.superKeyword, toNode.superKeyword), | |
| 11030 _isEqualTokens(node.period, toNode.period), | |
| 11031 _isEqualNodes(node.constructorName, toNode.constructorName), | |
| 11032 _isEqualNodes(node.argumentList, toNode.argumentList))) { | |
| 11033 toNode.staticElement = node.staticElement; | |
| 11034 return true; | |
| 11035 } | |
| 11036 return false; | |
| 11037 } | |
| 11038 | |
| 11039 @override | |
| 11040 bool visitSuperExpression(SuperExpression node) { | |
| 11041 SuperExpression toNode = this._toNode as SuperExpression; | |
| 11042 if (_isEqualTokens(node.superKeyword, toNode.superKeyword)) { | |
| 11043 toNode.propagatedType = node.propagatedType; | |
| 11044 toNode.staticType = node.staticType; | |
| 11045 return true; | |
| 11046 } | |
| 11047 return false; | |
| 11048 } | |
| 11049 | |
| 11050 @override | |
| 11051 bool visitSwitchCase(SwitchCase node) { | |
| 11052 SwitchCase toNode = this._toNode as SwitchCase; | |
| 11053 return _and( | |
| 11054 _isEqualNodeLists(node.labels, toNode.labels), | |
| 11055 _isEqualTokens(node.keyword, toNode.keyword), | |
| 11056 _isEqualNodes(node.expression, toNode.expression), | |
| 11057 _isEqualTokens(node.colon, toNode.colon), | |
| 11058 _isEqualNodeLists(node.statements, toNode.statements)); | |
| 11059 } | |
| 11060 | |
| 11061 @override | |
| 11062 bool visitSwitchDefault(SwitchDefault node) { | |
| 11063 SwitchDefault toNode = this._toNode as SwitchDefault; | |
| 11064 return _and( | |
| 11065 _isEqualNodeLists(node.labels, toNode.labels), | |
| 11066 _isEqualTokens(node.keyword, toNode.keyword), | |
| 11067 _isEqualTokens(node.colon, toNode.colon), | |
| 11068 _isEqualNodeLists(node.statements, toNode.statements)); | |
| 11069 } | |
| 11070 | |
| 11071 @override | |
| 11072 bool visitSwitchStatement(SwitchStatement node) { | |
| 11073 SwitchStatement toNode = this._toNode as SwitchStatement; | |
| 11074 return _and( | |
| 11075 _isEqualTokens(node.switchKeyword, toNode.switchKeyword), | |
| 11076 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 11077 _isEqualNodes(node.expression, toNode.expression), | |
| 11078 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 11079 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 11080 _isEqualNodeLists(node.members, toNode.members), | |
| 11081 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 11082 } | |
| 11083 | |
| 11084 @override | |
| 11085 bool visitSymbolLiteral(SymbolLiteral node) { | |
| 11086 SymbolLiteral toNode = this._toNode as SymbolLiteral; | |
| 11087 if (_and(_isEqualTokens(node.poundSign, toNode.poundSign), | |
| 11088 _isEqualTokenLists(node.components, toNode.components))) { | |
| 11089 toNode.propagatedType = node.propagatedType; | |
| 11090 toNode.staticType = node.staticType; | |
| 11091 return true; | |
| 11092 } | |
| 11093 return false; | |
| 11094 } | |
| 11095 | |
| 11096 @override | |
| 11097 bool visitThisExpression(ThisExpression node) { | |
| 11098 ThisExpression toNode = this._toNode as ThisExpression; | |
| 11099 if (_isEqualTokens(node.thisKeyword, toNode.thisKeyword)) { | |
| 11100 toNode.propagatedType = node.propagatedType; | |
| 11101 toNode.staticType = node.staticType; | |
| 11102 return true; | |
| 11103 } | |
| 11104 return false; | |
| 11105 } | |
| 11106 | |
| 11107 @override | |
| 11108 bool visitThrowExpression(ThrowExpression node) { | |
| 11109 ThrowExpression toNode = this._toNode as ThrowExpression; | |
| 11110 if (_and(_isEqualTokens(node.throwKeyword, toNode.throwKeyword), | |
| 11111 _isEqualNodes(node.expression, toNode.expression))) { | |
| 11112 toNode.propagatedType = node.propagatedType; | |
| 11113 toNode.staticType = node.staticType; | |
| 11114 return true; | |
| 11115 } | |
| 11116 return false; | |
| 11117 } | |
| 11118 | |
| 11119 @override | |
| 11120 bool visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) { | |
| 11121 TopLevelVariableDeclaration toNode = | |
| 11122 this._toNode as TopLevelVariableDeclaration; | |
| 11123 return _and( | |
| 11124 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 11125 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 11126 _isEqualNodes(node.variables, toNode.variables), | |
| 11127 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 11128 } | |
| 11129 | |
| 11130 @override | |
| 11131 bool visitTryStatement(TryStatement node) { | |
| 11132 TryStatement toNode = this._toNode as TryStatement; | |
| 11133 return _and( | |
| 11134 _isEqualTokens(node.tryKeyword, toNode.tryKeyword), | |
| 11135 _isEqualNodes(node.body, toNode.body), | |
| 11136 _isEqualNodeLists(node.catchClauses, toNode.catchClauses), | |
| 11137 _isEqualTokens(node.finallyKeyword, toNode.finallyKeyword), | |
| 11138 _isEqualNodes(node.finallyBlock, toNode.finallyBlock)); | |
| 11139 } | |
| 11140 | |
| 11141 @override | |
| 11142 bool visitTypeArgumentList(TypeArgumentList node) { | |
| 11143 TypeArgumentList toNode = this._toNode as TypeArgumentList; | |
| 11144 return _and( | |
| 11145 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 11146 _isEqualNodeLists(node.arguments, toNode.arguments), | |
| 11147 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 11148 } | |
| 11149 | |
| 11150 @override | |
| 11151 bool visitTypeName(TypeName node) { | |
| 11152 TypeName toNode = this._toNode as TypeName; | |
| 11153 if (_and(_isEqualNodes(node.name, toNode.name), | |
| 11154 _isEqualNodes(node.typeArguments, toNode.typeArguments))) { | |
| 11155 toNode.type = node.type; | |
| 11156 return true; | |
| 11157 } | |
| 11158 return false; | |
| 11159 } | |
| 11160 | |
| 11161 @override | |
| 11162 bool visitTypeParameter(TypeParameter node) { | |
| 11163 TypeParameter toNode = this._toNode as TypeParameter; | |
| 11164 return _and( | |
| 11165 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 11166 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 11167 _isEqualNodes(node.name, toNode.name), | |
| 11168 _isEqualTokens(node.extendsKeyword, toNode.extendsKeyword), | |
| 11169 _isEqualNodes(node.bound, toNode.bound)); | |
| 11170 } | |
| 11171 | |
| 11172 @override | |
| 11173 bool visitTypeParameterList(TypeParameterList node) { | |
| 11174 TypeParameterList toNode = this._toNode as TypeParameterList; | |
| 11175 return _and( | |
| 11176 _isEqualTokens(node.leftBracket, toNode.leftBracket), | |
| 11177 _isEqualNodeLists(node.typeParameters, toNode.typeParameters), | |
| 11178 _isEqualTokens(node.rightBracket, toNode.rightBracket)); | |
| 11179 } | |
| 11180 | |
| 11181 @override | |
| 11182 bool visitVariableDeclaration(VariableDeclaration node) { | |
| 11183 VariableDeclaration toNode = this._toNode as VariableDeclaration; | |
| 11184 return _and( | |
| 11185 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 11186 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 11187 _isEqualNodes(node.name, toNode.name), | |
| 11188 _isEqualTokens(node.equals, toNode.equals), | |
| 11189 _isEqualNodes(node.initializer, toNode.initializer)); | |
| 11190 } | |
| 11191 | |
| 11192 @override | |
| 11193 bool visitVariableDeclarationList(VariableDeclarationList node) { | |
| 11194 VariableDeclarationList toNode = this._toNode as VariableDeclarationList; | |
| 11195 return _and( | |
| 11196 _isEqualNodes(node.documentationComment, toNode.documentationComment), | |
| 11197 _isEqualNodeLists(node.metadata, toNode.metadata), | |
| 11198 _isEqualTokens(node.keyword, toNode.keyword), | |
| 11199 _isEqualNodes(node.type, toNode.type), | |
| 11200 _isEqualNodeLists(node.variables, toNode.variables)); | |
| 11201 } | |
| 11202 | |
| 11203 @override | |
| 11204 bool visitVariableDeclarationStatement(VariableDeclarationStatement node) { | |
| 11205 VariableDeclarationStatement toNode = | |
| 11206 this._toNode as VariableDeclarationStatement; | |
| 11207 return _and(_isEqualNodes(node.variables, toNode.variables), | |
| 11208 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 11209 } | |
| 11210 | |
| 11211 @override | |
| 11212 bool visitWhileStatement(WhileStatement node) { | |
| 11213 WhileStatement toNode = this._toNode as WhileStatement; | |
| 11214 return _and( | |
| 11215 _isEqualTokens(node.whileKeyword, toNode.whileKeyword), | |
| 11216 _isEqualTokens(node.leftParenthesis, toNode.leftParenthesis), | |
| 11217 _isEqualNodes(node.condition, toNode.condition), | |
| 11218 _isEqualTokens(node.rightParenthesis, toNode.rightParenthesis), | |
| 11219 _isEqualNodes(node.body, toNode.body)); | |
| 11220 } | |
| 11221 | |
| 11222 @override | |
| 11223 bool visitWithClause(WithClause node) { | |
| 11224 WithClause toNode = this._toNode as WithClause; | |
| 11225 return _and(_isEqualTokens(node.withKeyword, toNode.withKeyword), | |
| 11226 _isEqualNodeLists(node.mixinTypes, toNode.mixinTypes)); | |
| 11227 } | |
| 11228 | |
| 11229 @override | |
| 11230 bool visitYieldStatement(YieldStatement node) { | |
| 11231 YieldStatement toNode = this._toNode as YieldStatement; | |
| 11232 return _and( | |
| 11233 _isEqualTokens(node.yieldKeyword, toNode.yieldKeyword), | |
| 11234 _isEqualNodes(node.expression, toNode.expression), | |
| 11235 _isEqualTokens(node.semicolon, toNode.semicolon)); | |
| 11236 } | |
| 11237 | |
| 11238 /** | |
| 11239 * Return `true` if all of the parameters are `true`. | |
| 11240 */ | |
| 11241 bool _and(bool b1, bool b2, | |
| 11242 [bool b3 = true, | |
| 11243 bool b4 = true, | |
| 11244 bool b5 = true, | |
| 11245 bool b6 = true, | |
| 11246 bool b7 = true, | |
| 11247 bool b8 = true, | |
| 11248 bool b9 = true, | |
| 11249 bool b10 = true, | |
| 11250 bool b11 = true, | |
| 11251 bool b12 = true, | |
| 11252 bool b13 = true]) { | |
| 11253 // TODO(brianwilkerson) Inline this method. | |
| 11254 return b1 && | |
| 11255 b2 && | |
| 11256 b3 && | |
| 11257 b4 && | |
| 11258 b5 && | |
| 11259 b6 && | |
| 11260 b7 && | |
| 11261 b8 && | |
| 11262 b9 && | |
| 11263 b10 && | |
| 11264 b11 && | |
| 11265 b12 && | |
| 11266 b13; | |
| 11267 } | |
| 11268 | |
| 11269 /** | |
| 11270 * Return `true` if the [first] and [second] lists of AST nodes have the same | |
| 11271 * size and corresponding elements are equal. | |
| 11272 */ | |
| 11273 bool _isEqualNodeLists(NodeList first, NodeList second) { | |
| 11274 if (first == null) { | |
| 11275 return second == null; | |
| 11276 } else if (second == null) { | |
| 11277 return false; | |
| 11278 } | |
| 11279 int size = first.length; | |
| 11280 if (second.length != size) { | |
| 11281 return false; | |
| 11282 } | |
| 11283 bool equal = true; | |
| 11284 for (int i = 0; i < size; i++) { | |
| 11285 if (!_isEqualNodes(first[i], second[i])) { | |
| 11286 equal = false; | |
| 11287 } | |
| 11288 } | |
| 11289 return equal; | |
| 11290 } | |
| 11291 | |
| 11292 /** | |
| 11293 * Return `true` if the [fromNode] and [toNode] have the same structure. As a | |
| 11294 * side-effect, if the nodes do have the same structure, any resolution data | |
| 11295 * from the first node will be copied to the second node. | |
| 11296 */ | |
| 11297 bool _isEqualNodes(AstNode fromNode, AstNode toNode) { | |
| 11298 if (fromNode == null) { | |
| 11299 return toNode == null; | |
| 11300 } else if (toNode == null) { | |
| 11301 return false; | |
| 11302 } else if (fromNode.runtimeType == toNode.runtimeType) { | |
| 11303 this._toNode = toNode; | |
| 11304 return fromNode.accept(this); | |
| 11305 } | |
| 11306 // | |
| 11307 // Check for a simple transformation caused by entering a period. | |
| 11308 // | |
| 11309 if (toNode is PrefixedIdentifier) { | |
| 11310 SimpleIdentifier prefix = toNode.prefix; | |
| 11311 if (fromNode.runtimeType == prefix.runtimeType) { | |
| 11312 this._toNode = prefix; | |
| 11313 return fromNode.accept(this); | |
| 11314 } | |
| 11315 } else if (toNode is PropertyAccess) { | |
| 11316 Expression target = toNode.target; | |
| 11317 if (fromNode.runtimeType == target.runtimeType) { | |
| 11318 this._toNode = target; | |
| 11319 return fromNode.accept(this); | |
| 11320 } | |
| 11321 } | |
| 11322 return false; | |
| 11323 } | |
| 11324 | |
| 11325 /** | |
| 11326 * Return `true` if the [first] and [second] arrays of tokens have the same | |
| 11327 * length and corresponding elements are equal. | |
| 11328 */ | |
| 11329 bool _isEqualTokenLists(List<Token> first, List<Token> second) { | |
| 11330 int length = first.length; | |
| 11331 if (second.length != length) { | |
| 11332 return false; | |
| 11333 } | |
| 11334 for (int i = 0; i < length; i++) { | |
| 11335 if (!_isEqualTokens(first[i], second[i])) { | |
| 11336 return false; | |
| 11337 } | |
| 11338 } | |
| 11339 return true; | |
| 11340 } | |
| 11341 | |
| 11342 /** | |
| 11343 * Return `true` if the [first] and [second] tokens have the same structure. | |
| 11344 */ | |
| 11345 bool _isEqualTokens(Token first, Token second) { | |
| 11346 if (first == null) { | |
| 11347 return second == null; | |
| 11348 } else if (second == null) { | |
| 11349 return false; | |
| 11350 } | |
| 11351 return first.lexeme == second.lexeme; | |
| 11352 } | |
| 11353 | |
| 11354 /** | |
| 11355 * Copy resolution data from the [fromNode] to the [toNode]. | |
| 11356 */ | |
| 11357 static void copyResolutionData(AstNode fromNode, AstNode toNode) { | |
| 11358 ResolutionCopier copier = new ResolutionCopier(); | |
| 11359 copier._isEqualNodes(fromNode, toNode); | |
| 11360 } | |
| 11361 } | |
| OLD | NEW |