| 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.test.generated.resolver_test; | 5 library analyzer.test.generated.resolver_test; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
| 10 import 'package:analyzer/dart/element/type.dart'; | 10 import 'package:analyzer/dart/element/type.dart'; |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 futureElement.constructors = <ConstructorElement>[futureConstructor]; | 194 futureElement.constructors = <ConstructorElement>[futureConstructor]; |
| 195 // Future then(onValue(T value), { Function onError }); | 195 // Future then(onValue(T value), { Function onError }); |
| 196 TypeDefiningElement futureThenR = DynamicElementImpl.instance; | 196 TypeDefiningElement futureThenR = DynamicElementImpl.instance; |
| 197 if (context.analysisOptions.strongMode) { | 197 if (context.analysisOptions.strongMode) { |
| 198 futureThenR = ElementFactory.typeParameterWithType('R'); | 198 futureThenR = ElementFactory.typeParameterWithType('R'); |
| 199 } | 199 } |
| 200 FunctionElementImpl thenOnValue = ElementFactory.functionElement3( | 200 FunctionElementImpl thenOnValue = ElementFactory.functionElement3( |
| 201 'onValue', futureThenR, [futureElement.typeParameters[0]], null); | 201 'onValue', futureThenR, [futureElement.typeParameters[0]], null); |
| 202 | 202 |
| 203 DartType futureRType = futureElement.type.substitute4([futureThenR.type]); | 203 DartType futureRType = futureElement.type.substitute4([futureThenR.type]); |
| 204 MethodElementImpl thenMethod = ElementFactory.methodElementWithParameters( | 204 MethodElementImpl thenMethod = ElementFactory |
| 205 futureElement, "then", futureRType, [ | 205 .methodElementWithParameters(futureElement, "then", futureRType, [ |
| 206 ElementFactory.requiredParameter2("onValue", thenOnValue.type), | 206 ElementFactory.requiredParameter2("onValue", thenOnValue.type), |
| 207 ElementFactory.namedParameter2("onError", provider.functionType) | 207 ElementFactory.namedParameter2("onError", provider.functionType) |
| 208 ]); | 208 ]); |
| 209 if (!futureThenR.type.isDynamic) { | 209 if (!futureThenR.type.isDynamic) { |
| 210 thenMethod.typeParameters = [futureThenR]; | 210 thenMethod.typeParameters = [futureThenR]; |
| 211 } | 211 } |
| 212 thenOnValue.enclosingElement = thenMethod; | 212 thenOnValue.enclosingElement = thenMethod; |
| 213 thenOnValue.type = new FunctionTypeImpl(thenOnValue); | 213 thenOnValue.type = new FunctionTypeImpl(thenOnValue); |
| 214 (thenMethod.parameters[0] as ParameterElementImpl).type = thenOnValue.type; | 214 (thenMethod.parameters[0] as ParameterElementImpl).type = thenOnValue.type; |
| 215 thenMethod.type = new FunctionTypeImpl(thenMethod); | 215 thenMethod.type = new FunctionTypeImpl(thenMethod); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 ElementFactory.getterElement("context2D", false, context2dElement.type) | 284 ElementFactory.getterElement("context2D", false, context2dElement.type) |
| 285 ]; | 285 ]; |
| 286 canvasElement.fields = canvasElement.accessors | 286 canvasElement.fields = canvasElement.accessors |
| 287 .map((PropertyAccessorElement accessor) => accessor.variable) | 287 .map((PropertyAccessorElement accessor) => accessor.variable) |
| 288 .toList(); | 288 .toList(); |
| 289 ClassElementImpl documentElement = | 289 ClassElementImpl documentElement = |
| 290 ElementFactory.classElement("Document", elementType); | 290 ElementFactory.classElement("Document", elementType); |
| 291 ClassElementImpl htmlDocumentElement = | 291 ClassElementImpl htmlDocumentElement = |
| 292 ElementFactory.classElement("HtmlDocument", documentElement.type); | 292 ElementFactory.classElement("HtmlDocument", documentElement.type); |
| 293 htmlDocumentElement.methods = <MethodElement>[ | 293 htmlDocumentElement.methods = <MethodElement>[ |
| 294 ElementFactory.methodElement( | 294 ElementFactory |
| 295 "query", elementType, <DartType>[provider.stringType]) | 295 .methodElement("query", elementType, <DartType>[provider.stringType]) |
| 296 ]; | 296 ]; |
| 297 htmlUnit.types = <ClassElement>[ | 297 htmlUnit.types = <ClassElement>[ |
| 298 ElementFactory.classElement("AnchorElement", elementType), | 298 ElementFactory.classElement("AnchorElement", elementType), |
| 299 ElementFactory.classElement("BodyElement", elementType), | 299 ElementFactory.classElement("BodyElement", elementType), |
| 300 ElementFactory.classElement("ButtonElement", elementType), | 300 ElementFactory.classElement("ButtonElement", elementType), |
| 301 canvasElement, | 301 canvasElement, |
| 302 contextElement, | 302 contextElement, |
| 303 context2dElement, | 303 context2dElement, |
| 304 ElementFactory.classElement("DivElement", elementType), | 304 ElementFactory.classElement("DivElement", elementType), |
| 305 documentElement, | 305 documentElement, |
| 306 elementElement, | 306 elementElement, |
| 307 htmlDocumentElement, | 307 htmlDocumentElement, |
| 308 ElementFactory.classElement("InputElement", elementType), | 308 ElementFactory.classElement("InputElement", elementType), |
| 309 ElementFactory.classElement("SelectElement", elementType) | 309 ElementFactory.classElement("SelectElement", elementType) |
| 310 ]; | 310 ]; |
| 311 htmlUnit.functions = <FunctionElement>[ | 311 htmlUnit.functions = <FunctionElement>[ |
| 312 ElementFactory.functionElement3("query", elementElement, | 312 ElementFactory.functionElement3("query", elementElement, |
| 313 <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST) | 313 <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST) |
| 314 ]; | 314 ]; |
| 315 TopLevelVariableElementImpl document = ElementFactory | 315 TopLevelVariableElementImpl document = |
| 316 .topLevelVariableElement3( | 316 ElementFactory.topLevelVariableElement3( |
| 317 "document", false, true, htmlDocumentElement.type); | 317 "document", false, true, htmlDocumentElement.type); |
| 318 htmlUnit.topLevelVariables = <TopLevelVariableElement>[document]; | 318 htmlUnit.topLevelVariables = <TopLevelVariableElement>[document]; |
| 319 htmlUnit.accessors = <PropertyAccessorElement>[document.getter]; | 319 htmlUnit.accessors = <PropertyAccessorElement>[document.getter]; |
| 320 LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode( | 320 LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode( |
| 321 coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); | 321 coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); |
| 322 htmlLibrary.definingCompilationUnit = htmlUnit; | 322 htmlLibrary.definingCompilationUnit = htmlUnit; |
| 323 // | 323 // |
| 324 // dart:math | 324 // dart:math |
| 325 // | 325 // |
| 326 CompilationUnitElementImpl mathUnit = | 326 CompilationUnitElementImpl mathUnit = |
| (...skipping 4819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5146 | 5146 |
| 5147 void test_getMapOfMembersInheritedFromInterfaces_implicitExtends() { | 5147 void test_getMapOfMembersInheritedFromInterfaces_implicitExtends() { |
| 5148 // class A {} | 5148 // class A {} |
| 5149 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5149 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5150 MemberMap mapA = | 5150 MemberMap mapA = |
| 5151 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5151 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5152 expect(mapA.size, _numOfMembersInObject); | 5152 expect(mapA.size, _numOfMembersInObject); |
| 5153 _assertNoErrors(classA); | 5153 _assertNoErrors(classA); |
| 5154 } | 5154 } |
| 5155 | 5155 |
| 5156 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_getter_method() { | 5156 void |
| 5157 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
getter_method() { |
| 5157 // class I1 { int m(); } | 5158 // class I1 { int m(); } |
| 5158 // class I2 { int get m; } | 5159 // class I2 { int get m; } |
| 5159 // class A implements I2, I1 {} | 5160 // class A implements I2, I1 {} |
| 5160 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5161 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5161 String methodName = "m"; | 5162 String methodName = "m"; |
| 5162 MethodElement methodM = | 5163 MethodElement methodM = |
| 5163 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5164 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5164 classI1.methods = <MethodElement>[methodM]; | 5165 classI1.methods = <MethodElement>[methodM]; |
| 5165 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5166 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5166 PropertyAccessorElement getter = | 5167 PropertyAccessorElement getter = |
| 5167 ElementFactory.getterElement(methodName, false, _typeProvider.intType); | 5168 ElementFactory.getterElement(methodName, false, _typeProvider.intType); |
| 5168 classI2.accessors = <PropertyAccessorElement>[getter]; | 5169 classI2.accessors = <PropertyAccessorElement>[getter]; |
| 5169 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5170 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5170 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; | 5171 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; |
| 5171 MemberMap mapA = | 5172 MemberMap mapA = |
| 5172 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5173 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5173 expect(mapA.size, _numOfMembersInObject); | 5174 expect(mapA.size, _numOfMembersInObject); |
| 5174 expect(mapA.get(methodName), isNull); | 5175 expect(mapA.get(methodName), isNull); |
| 5175 _assertErrors(classA, | 5176 _assertErrors(classA, |
| 5176 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); | 5177 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); |
| 5177 } | 5178 } |
| 5178 | 5179 |
| 5179 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_int_str() { | 5180 void |
| 5181 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
int_str() { |
| 5180 // class I1 { int m(); } | 5182 // class I1 { int m(); } |
| 5181 // class I2 { String m(); } | 5183 // class I2 { String m(); } |
| 5182 // class A implements I1, I2 {} | 5184 // class A implements I1, I2 {} |
| 5183 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5185 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5184 String methodName = "m"; | 5186 String methodName = "m"; |
| 5185 MethodElement methodM1 = | 5187 MethodElement methodM1 = |
| 5186 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); | 5188 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); |
| 5187 classI1.methods = <MethodElement>[methodM1]; | 5189 classI1.methods = <MethodElement>[methodM1]; |
| 5188 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5190 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5189 MethodElement methodM2 = ElementFactory.methodElement( | 5191 MethodElement methodM2 = ElementFactory |
| 5190 methodName, null, [_typeProvider.stringType]); | 5192 .methodElement(methodName, null, [_typeProvider.stringType]); |
| 5191 classI2.methods = <MethodElement>[methodM2]; | 5193 classI2.methods = <MethodElement>[methodM2]; |
| 5192 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5194 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5193 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5195 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5194 MemberMap mapA = | 5196 MemberMap mapA = |
| 5195 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5197 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5196 expect(mapA.size, _numOfMembersInObject); | 5198 expect(mapA.size, _numOfMembersInObject); |
| 5197 expect(mapA.get(methodName), isNull); | 5199 expect(mapA.get(methodName), isNull); |
| 5198 _assertErrors( | 5200 _assertErrors( |
| 5199 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); | 5201 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
| 5200 } | 5202 } |
| 5201 | 5203 |
| 5202 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_method_getter() { | 5204 void |
| 5205 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
method_getter() { |
| 5203 // class I1 { int m(); } | 5206 // class I1 { int m(); } |
| 5204 // class I2 { int get m; } | 5207 // class I2 { int get m; } |
| 5205 // class A implements I1, I2 {} | 5208 // class A implements I1, I2 {} |
| 5206 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5209 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5207 String methodName = "m"; | 5210 String methodName = "m"; |
| 5208 MethodElement methodM = | 5211 MethodElement methodM = |
| 5209 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5212 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5210 classI1.methods = <MethodElement>[methodM]; | 5213 classI1.methods = <MethodElement>[methodM]; |
| 5211 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5214 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5212 PropertyAccessorElement getter = | 5215 PropertyAccessorElement getter = |
| 5213 ElementFactory.getterElement(methodName, false, _typeProvider.intType); | 5216 ElementFactory.getterElement(methodName, false, _typeProvider.intType); |
| 5214 classI2.accessors = <PropertyAccessorElement>[getter]; | 5217 classI2.accessors = <PropertyAccessorElement>[getter]; |
| 5215 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5218 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5216 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5219 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5217 MemberMap mapA = | 5220 MemberMap mapA = |
| 5218 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5221 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5219 expect(mapA.size, _numOfMembersInObject); | 5222 expect(mapA.size, _numOfMembersInObject); |
| 5220 expect(mapA.get(methodName), isNull); | 5223 expect(mapA.get(methodName), isNull); |
| 5221 _assertErrors(classA, | 5224 _assertErrors(classA, |
| 5222 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); | 5225 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); |
| 5223 } | 5226 } |
| 5224 | 5227 |
| 5225 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_numOfRequiredParams() { | 5228 void |
| 5229 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
numOfRequiredParams() { |
| 5226 // class I1 { dynamic m(int, [int]); } | 5230 // class I1 { dynamic m(int, [int]); } |
| 5227 // class I2 { dynamic m(int, int, int); } | 5231 // class I2 { dynamic m(int, int, int); } |
| 5228 // class A implements I1, I2 {} | 5232 // class A implements I1, I2 {} |
| 5229 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5233 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5230 String methodName = "m"; | 5234 String methodName = "m"; |
| 5231 MethodElementImpl methodM1 = | 5235 MethodElementImpl methodM1 = |
| 5232 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); | 5236 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); |
| 5233 ParameterElementImpl parameter1 = | 5237 ParameterElementImpl parameter1 = |
| 5234 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); | 5238 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); |
| 5235 parameter1.type = _typeProvider.intType; | 5239 parameter1.type = _typeProvider.intType; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 5264 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5268 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5265 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5269 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5266 MemberMap mapA = | 5270 MemberMap mapA = |
| 5267 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5271 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5268 expect(mapA.size, _numOfMembersInObject); | 5272 expect(mapA.size, _numOfMembersInObject); |
| 5269 expect(mapA.get(methodName), isNull); | 5273 expect(mapA.get(methodName), isNull); |
| 5270 _assertErrors( | 5274 _assertErrors( |
| 5271 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); | 5275 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
| 5272 } | 5276 } |
| 5273 | 5277 |
| 5274 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_str_int() { | 5278 void |
| 5279 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
str_int() { |
| 5275 // class I1 { int m(); } | 5280 // class I1 { int m(); } |
| 5276 // class I2 { String m(); } | 5281 // class I2 { String m(); } |
| 5277 // class A implements I2, I1 {} | 5282 // class A implements I2, I1 {} |
| 5278 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5283 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5279 String methodName = "m"; | 5284 String methodName = "m"; |
| 5280 MethodElement methodM1 = ElementFactory.methodElement( | 5285 MethodElement methodM1 = ElementFactory |
| 5281 methodName, null, [_typeProvider.stringType]); | 5286 .methodElement(methodName, null, [_typeProvider.stringType]); |
| 5282 classI1.methods = <MethodElement>[methodM1]; | 5287 classI1.methods = <MethodElement>[methodM1]; |
| 5283 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5288 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5284 MethodElement methodM2 = | 5289 MethodElement methodM2 = |
| 5285 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); | 5290 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); |
| 5286 classI2.methods = <MethodElement>[methodM2]; | 5291 classI2.methods = <MethodElement>[methodM2]; |
| 5287 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5292 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5288 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; | 5293 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; |
| 5289 MemberMap mapA = | 5294 MemberMap mapA = |
| 5290 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5295 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5291 expect(mapA.size, _numOfMembersInObject); | 5296 expect(mapA.size, _numOfMembersInObject); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5373 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5378 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5374 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5379 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5375 MemberMap mapA = | 5380 MemberMap mapA = |
| 5376 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5381 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5377 expect(mapA.size, _numOfMembersInObject + 2); | 5382 expect(mapA.size, _numOfMembersInObject + 2); |
| 5378 expect(mapA.get(methodName1), same(methodM1)); | 5383 expect(mapA.get(methodName1), same(methodM1)); |
| 5379 expect(mapA.get(methodName2), same(methodM2)); | 5384 expect(mapA.get(methodName2), same(methodM2)); |
| 5380 _assertNoErrors(classA); | 5385 _assertNoErrors(classA); |
| 5381 } | 5386 } |
| 5382 | 5387 |
| 5383 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_gett
ers() { | 5388 void |
| 5389 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_gette
rs() { |
| 5384 // class I1 { int get g; } | 5390 // class I1 { int get g; } |
| 5385 // class I2 { num get g; } | 5391 // class I2 { num get g; } |
| 5386 // class A implements I1, I2 {} | 5392 // class A implements I1, I2 {} |
| 5387 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5393 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5388 String accessorName = "g"; | 5394 String accessorName = "g"; |
| 5389 PropertyAccessorElement getter1 = ElementFactory.getterElement( | 5395 PropertyAccessorElement getter1 = ElementFactory.getterElement( |
| 5390 accessorName, false, _typeProvider.intType); | 5396 accessorName, false, _typeProvider.intType); |
| 5391 classI1.accessors = <PropertyAccessorElement>[getter1]; | 5397 classI1.accessors = <PropertyAccessorElement>[getter1]; |
| 5392 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5398 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5393 PropertyAccessorElement getter2 = ElementFactory.getterElement( | 5399 PropertyAccessorElement getter2 = ElementFactory.getterElement( |
| 5394 accessorName, false, _typeProvider.numType); | 5400 accessorName, false, _typeProvider.numType); |
| 5395 classI2.accessors = <PropertyAccessorElement>[getter2]; | 5401 classI2.accessors = <PropertyAccessorElement>[getter2]; |
| 5396 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5402 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5397 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5403 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5398 MemberMap mapA = | 5404 MemberMap mapA = |
| 5399 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5405 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5400 expect(mapA.size, _numOfMembersInObject + 1); | 5406 expect(mapA.size, _numOfMembersInObject + 1); |
| 5401 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( | 5407 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( |
| 5402 accessorName, false, _typeProvider.dynamicType); | 5408 accessorName, false, _typeProvider.dynamicType); |
| 5403 expect(mapA.get(accessorName).type, syntheticAccessor.type); | 5409 expect(mapA.get(accessorName).type, syntheticAccessor.type); |
| 5404 _assertNoErrors(classA); | 5410 _assertNoErrors(classA); |
| 5405 } | 5411 } |
| 5406 | 5412 |
| 5407 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_meth
ods() { | 5413 void |
| 5414 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_metho
ds() { |
| 5408 // class I1 { dynamic m(int); } | 5415 // class I1 { dynamic m(int); } |
| 5409 // class I2 { dynamic m(num); } | 5416 // class I2 { dynamic m(num); } |
| 5410 // class A implements I1, I2 {} | 5417 // class A implements I1, I2 {} |
| 5411 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5418 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5412 String methodName = "m"; | 5419 String methodName = "m"; |
| 5413 MethodElementImpl methodM1 = | 5420 MethodElementImpl methodM1 = |
| 5414 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); | 5421 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); |
| 5415 ParameterElementImpl parameter1 = | 5422 ParameterElementImpl parameter1 = |
| 5416 new ParameterElementImpl.forNode(AstFactory.identifier3("a0")); | 5423 new ParameterElementImpl.forNode(AstFactory.identifier3("a0")); |
| 5417 parameter1.type = _typeProvider.intType; | 5424 parameter1.type = _typeProvider.intType; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 5431 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5438 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5432 MemberMap mapA = | 5439 MemberMap mapA = |
| 5433 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5440 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5434 expect(mapA.size, _numOfMembersInObject + 1); | 5441 expect(mapA.size, _numOfMembersInObject + 1); |
| 5435 MethodElement syntheticMethod = ElementFactory.methodElement( | 5442 MethodElement syntheticMethod = ElementFactory.methodElement( |
| 5436 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); | 5443 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); |
| 5437 expect(mapA.get(methodName).type, syntheticMethod.type); | 5444 expect(mapA.get(methodName).type, syntheticMethod.type); |
| 5438 _assertNoErrors(classA); | 5445 _assertNoErrors(classA); |
| 5439 } | 5446 } |
| 5440 | 5447 |
| 5441 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_sett
ers() { | 5448 void |
| 5449 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_sette
rs() { |
| 5442 // class I1 { set s(int); } | 5450 // class I1 { set s(int); } |
| 5443 // class I2 { set s(num); } | 5451 // class I2 { set s(num); } |
| 5444 // class A implements I1, I2 {} | 5452 // class A implements I1, I2 {} |
| 5445 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5453 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5446 String accessorName = "s"; | 5454 String accessorName = "s"; |
| 5447 PropertyAccessorElement setter1 = ElementFactory.setterElement( | 5455 PropertyAccessorElement setter1 = ElementFactory.setterElement( |
| 5448 accessorName, false, _typeProvider.intType); | 5456 accessorName, false, _typeProvider.intType); |
| 5449 classI1.accessors = <PropertyAccessorElement>[setter1]; | 5457 classI1.accessors = <PropertyAccessorElement>[setter1]; |
| 5450 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5458 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5451 PropertyAccessorElement setter2 = ElementFactory.setterElement( | 5459 PropertyAccessorElement setter2 = ElementFactory.setterElement( |
| 5452 accessorName, false, _typeProvider.numType); | 5460 accessorName, false, _typeProvider.numType); |
| 5453 classI2.accessors = <PropertyAccessorElement>[setter2]; | 5461 classI2.accessors = <PropertyAccessorElement>[setter2]; |
| 5454 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5462 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5455 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5463 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5456 MemberMap mapA = | 5464 MemberMap mapA = |
| 5457 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5465 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5458 expect(mapA.size, _numOfMembersInObject + 1); | 5466 expect(mapA.size, _numOfMembersInObject + 1); |
| 5459 PropertyAccessorElementImpl syntheticAccessor = ElementFactory | 5467 PropertyAccessorElementImpl syntheticAccessor = ElementFactory |
| 5460 .setterElement(accessorName, false, _typeProvider.dynamicType); | 5468 .setterElement(accessorName, false, _typeProvider.dynamicType); |
| 5461 syntheticAccessor.returnType = _typeProvider.dynamicType; | 5469 syntheticAccessor.returnType = _typeProvider.dynamicType; |
| 5462 expect(mapA.get("$accessorName=").type, syntheticAccessor.type); | 5470 expect(mapA.get("$accessorName=").type, syntheticAccessor.type); |
| 5463 _assertNoErrors(classA); | 5471 _assertNoErrors(classA); |
| 5464 } | 5472 } |
| 5465 | 5473 |
| 5466 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_gett
ers() { | 5474 void |
| 5475 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_gette
rs() { |
| 5467 // class A {} | 5476 // class A {} |
| 5468 // class B extends A {} | 5477 // class B extends A {} |
| 5469 // class C extends B {} | 5478 // class C extends B {} |
| 5470 // class I1 { A get g; } | 5479 // class I1 { A get g; } |
| 5471 // class I2 { B get g; } | 5480 // class I2 { B get g; } |
| 5472 // class I3 { C get g; } | 5481 // class I3 { C get g; } |
| 5473 // class D implements I1, I2, I3 {} | 5482 // class D implements I1, I2, I3 {} |
| 5474 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5483 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5475 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | 5484 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); |
| 5476 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | 5485 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 5495 ]; | 5504 ]; |
| 5496 MemberMap mapD = | 5505 MemberMap mapD = |
| 5497 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); | 5506 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); |
| 5498 expect(mapD.size, _numOfMembersInObject + 1); | 5507 expect(mapD.size, _numOfMembersInObject + 1); |
| 5499 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( | 5508 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( |
| 5500 accessorName, false, _typeProvider.dynamicType); | 5509 accessorName, false, _typeProvider.dynamicType); |
| 5501 expect(mapD.get(accessorName).type, syntheticAccessor.type); | 5510 expect(mapD.get(accessorName).type, syntheticAccessor.type); |
| 5502 _assertNoErrors(classD); | 5511 _assertNoErrors(classD); |
| 5503 } | 5512 } |
| 5504 | 5513 |
| 5505 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_meth
ods() { | 5514 void |
| 5515 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_metho
ds() { |
| 5506 // class A {} | 5516 // class A {} |
| 5507 // class B extends A {} | 5517 // class B extends A {} |
| 5508 // class C extends B {} | 5518 // class C extends B {} |
| 5509 // class I1 { dynamic m(A a); } | 5519 // class I1 { dynamic m(A a); } |
| 5510 // class I2 { dynamic m(B b); } | 5520 // class I2 { dynamic m(B b); } |
| 5511 // class I3 { dynamic m(C c); } | 5521 // class I3 { dynamic m(C c); } |
| 5512 // class D implements I1, I2, I3 {} | 5522 // class D implements I1, I2, I3 {} |
| 5513 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5523 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5514 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | 5524 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); |
| 5515 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | 5525 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5549 ]; | 5559 ]; |
| 5550 MemberMap mapD = | 5560 MemberMap mapD = |
| 5551 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); | 5561 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); |
| 5552 expect(mapD.size, _numOfMembersInObject + 1); | 5562 expect(mapD.size, _numOfMembersInObject + 1); |
| 5553 MethodElement syntheticMethod = ElementFactory.methodElement( | 5563 MethodElement syntheticMethod = ElementFactory.methodElement( |
| 5554 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); | 5564 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); |
| 5555 expect(mapD.get(methodName).type, syntheticMethod.type); | 5565 expect(mapD.get(methodName).type, syntheticMethod.type); |
| 5556 _assertNoErrors(classD); | 5566 _assertNoErrors(classD); |
| 5557 } | 5567 } |
| 5558 | 5568 |
| 5559 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_sett
ers() { | 5569 void |
| 5570 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_sette
rs() { |
| 5560 // class A {} | 5571 // class A {} |
| 5561 // class B extends A {} | 5572 // class B extends A {} |
| 5562 // class C extends B {} | 5573 // class C extends B {} |
| 5563 // class I1 { set s(A); } | 5574 // class I1 { set s(A); } |
| 5564 // class I2 { set s(B); } | 5575 // class I2 { set s(B); } |
| 5565 // class I3 { set s(C); } | 5576 // class I3 { set s(C); } |
| 5566 // class D implements I1, I2, I3 {} | 5577 // class D implements I1, I2, I3 {} |
| 5567 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5578 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5568 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | 5579 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); |
| 5569 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | 5580 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 5589 MemberMap mapD = | 5600 MemberMap mapD = |
| 5590 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); | 5601 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); |
| 5591 expect(mapD.size, _numOfMembersInObject + 1); | 5602 expect(mapD.size, _numOfMembersInObject + 1); |
| 5592 PropertyAccessorElementImpl syntheticAccessor = ElementFactory | 5603 PropertyAccessorElementImpl syntheticAccessor = ElementFactory |
| 5593 .setterElement(accessorName, false, _typeProvider.dynamicType); | 5604 .setterElement(accessorName, false, _typeProvider.dynamicType); |
| 5594 syntheticAccessor.returnType = _typeProvider.dynamicType; | 5605 syntheticAccessor.returnType = _typeProvider.dynamicType; |
| 5595 expect(mapD.get("$accessorName=").type, syntheticAccessor.type); | 5606 expect(mapD.get("$accessorName=").type, syntheticAccessor.type); |
| 5596 _assertNoErrors(classD); | 5607 _assertNoErrors(classD); |
| 5597 } | 5608 } |
| 5598 | 5609 |
| 5599 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods()
{ | 5610 void |
| 5611 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() { |
| 5600 // class I1 { int m(); } | 5612 // class I1 { int m(); } |
| 5601 // class I2 { int m([int]); } | 5613 // class I2 { int m([int]); } |
| 5602 // class A implements I1, I2 {} | 5614 // class A implements I1, I2 {} |
| 5603 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5615 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5604 String methodName = "m"; | 5616 String methodName = "m"; |
| 5605 MethodElement methodM1 = | 5617 MethodElement methodM1 = |
| 5606 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5618 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5607 classI1.methods = <MethodElement>[methodM1]; | 5619 classI1.methods = <MethodElement>[methodM1]; |
| 5608 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5620 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5609 MethodElementImpl methodM2 = | 5621 MethodElementImpl methodM2 = |
| 5610 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5622 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5611 ParameterElementImpl parameter1 = | 5623 ParameterElementImpl parameter1 = |
| 5612 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); | 5624 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); |
| 5613 parameter1.type = _typeProvider.intType; | 5625 parameter1.type = _typeProvider.intType; |
| 5614 parameter1.parameterKind = ParameterKind.POSITIONAL; | 5626 parameter1.parameterKind = ParameterKind.POSITIONAL; |
| 5615 methodM2.parameters = <ParameterElement>[parameter1]; | 5627 methodM2.parameters = <ParameterElement>[parameter1]; |
| 5616 classI2.methods = <MethodElement>[methodM2]; | 5628 classI2.methods = <MethodElement>[methodM2]; |
| 5617 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5629 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5618 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5630 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5619 MemberMap mapA = | 5631 MemberMap mapA = |
| 5620 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5632 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5621 expect(mapA.size, _numOfMembersInObject + 1); | 5633 expect(mapA.size, _numOfMembersInObject + 1); |
| 5622 expect(mapA.get(methodName), same(methodM2)); | 5634 expect(mapA.get(methodName), same(methodM2)); |
| 5623 _assertNoErrors(classA); | 5635 _assertNoErrors(classA); |
| 5624 } | 5636 } |
| 5625 | 5637 |
| 5626 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods()
{ | 5638 void |
| 5639 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() { |
| 5627 // class I1 { int m(); } | 5640 // class I1 { int m(); } |
| 5628 // class I2 { int m([int]); } | 5641 // class I2 { int m([int]); } |
| 5629 // class I3 { int m([int, int]); } | 5642 // class I3 { int m([int, int]); } |
| 5630 // class A implements I1, I2, I3 {} | 5643 // class A implements I1, I2, I3 {} |
| 5631 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5644 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5632 String methodName = "m"; | 5645 String methodName = "m"; |
| 5633 MethodElementImpl methodM1 = | 5646 MethodElementImpl methodM1 = |
| 5634 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5647 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5635 classI1.methods = <MethodElement>[methodM1]; | 5648 classI1.methods = <MethodElement>[methodM1]; |
| 5636 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5649 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5661 classI2.type, | 5674 classI2.type, |
| 5662 classI3.type | 5675 classI3.type |
| 5663 ]; | 5676 ]; |
| 5664 MemberMap mapA = | 5677 MemberMap mapA = |
| 5665 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5678 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5666 expect(mapA.size, _numOfMembersInObject + 1); | 5679 expect(mapA.size, _numOfMembersInObject + 1); |
| 5667 expect(mapA.get(methodName), same(methodM3)); | 5680 expect(mapA.get(methodName), same(methodM3)); |
| 5668 _assertNoErrors(classA); | 5681 _assertNoErrors(classA); |
| 5669 } | 5682 } |
| 5670 | 5683 |
| 5671 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods()
{ | 5684 void |
| 5685 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() { |
| 5672 // class I1 { int m(); } | 5686 // class I1 { int m(); } |
| 5673 // class I2 { int m(); } | 5687 // class I2 { int m(); } |
| 5674 // class I3 { int m([int]); } | 5688 // class I3 { int m([int]); } |
| 5675 // class I4 { int m([int, int]); } | 5689 // class I4 { int m([int, int]); } |
| 5676 // class A implements I1, I2, I3, I4 {} | 5690 // class A implements I1, I2, I3, I4 {} |
| 5677 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5691 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5678 String methodName = "m"; | 5692 String methodName = "m"; |
| 5679 MethodElement methodM1 = | 5693 MethodElement methodM1 = |
| 5680 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5694 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5681 classI1.methods = <MethodElement>[methodM1]; | 5695 classI1.methods = <MethodElement>[methodM1]; |
| (...skipping 3681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9363 expect(classes, hasLength(1)); | 9377 expect(classes, hasLength(1)); |
| 9364 List<ElementAnnotation> annotations = classes[0].metadata; | 9378 List<ElementAnnotation> annotations = classes[0].metadata; |
| 9365 expect(annotations, hasLength(1)); | 9379 expect(annotations, hasLength(1)); |
| 9366 assertNoErrors(source); | 9380 assertNoErrors(source); |
| 9367 verify([source]); | 9381 verify([source]); |
| 9368 CompilationUnit unit = resolveCompilationUnit(source, library); | 9382 CompilationUnit unit = resolveCompilationUnit(source, library); |
| 9369 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9383 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9370 expect(declarations, hasLength(2)); | 9384 expect(declarations, hasLength(2)); |
| 9371 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) | 9385 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) |
| 9372 .variables | 9386 .variables |
| 9373 .variables[0].name.staticElement; | 9387 .variables[0] |
| 9388 .name |
| 9389 .staticElement; |
| 9374 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, | 9390 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, |
| 9375 PropertyInducingElement, expectedElement); | 9391 PropertyInducingElement, expectedElement); |
| 9376 expectedElement = (expectedElement as PropertyInducingElement).getter; | 9392 expectedElement = (expectedElement as PropertyInducingElement).getter; |
| 9377 Element actualElement = | 9393 Element actualElement = |
| 9378 (declarations[1] as ClassDeclaration).metadata[0].name.staticElement; | 9394 (declarations[1] as ClassDeclaration).metadata[0].name.staticElement; |
| 9379 expect(actualElement, same(expectedElement)); | 9395 expect(actualElement, same(expectedElement)); |
| 9380 } | 9396 } |
| 9381 | 9397 |
| 9382 void test_metadata_field() { | 9398 void test_metadata_field() { |
| 9383 Source source = addSource(r''' | 9399 Source source = addSource(r''' |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9554 expect(aliases, hasLength(1)); | 9570 expect(aliases, hasLength(1)); |
| 9555 List<ElementAnnotation> annotations = aliases[0].metadata; | 9571 List<ElementAnnotation> annotations = aliases[0].metadata; |
| 9556 expect(annotations, hasLength(1)); | 9572 expect(annotations, hasLength(1)); |
| 9557 assertNoErrors(source); | 9573 assertNoErrors(source); |
| 9558 verify([source]); | 9574 verify([source]); |
| 9559 CompilationUnit unit = resolveCompilationUnit(source, library); | 9575 CompilationUnit unit = resolveCompilationUnit(source, library); |
| 9560 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9576 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9561 expect(declarations, hasLength(2)); | 9577 expect(declarations, hasLength(2)); |
| 9562 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) | 9578 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) |
| 9563 .variables | 9579 .variables |
| 9564 .variables[0].name.staticElement; | 9580 .variables[0] |
| 9581 .name |
| 9582 .staticElement; |
| 9565 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, | 9583 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, |
| 9566 PropertyInducingElement, expectedElement); | 9584 PropertyInducingElement, expectedElement); |
| 9567 expectedElement = (expectedElement as PropertyInducingElement).getter; | 9585 expectedElement = (expectedElement as PropertyInducingElement).getter; |
| 9568 Element actualElement = | 9586 Element actualElement = |
| 9569 (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement; | 9587 (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement; |
| 9570 expect(actualElement, same(expectedElement)); | 9588 expect(actualElement, same(expectedElement)); |
| 9571 } | 9589 } |
| 9572 | 9590 |
| 9573 void test_method_fromMixin() { | 9591 void test_method_fromMixin() { |
| 9574 Source source = addSource(r''' | 9592 Source source = addSource(r''' |
| (...skipping 2200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11775 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | 11793 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); |
| 11776 } | 11794 } |
| 11777 } | 11795 } |
| 11778 | 11796 |
| 11779 /** | 11797 /** |
| 11780 * Strong mode static analyzer downwards inference tests | 11798 * Strong mode static analyzer downwards inference tests |
| 11781 */ | 11799 */ |
| 11782 @reflectiveTest | 11800 @reflectiveTest |
| 11783 class StrongModeDownwardsInferenceTest extends ResolverTestCase { | 11801 class StrongModeDownwardsInferenceTest extends ResolverTestCase { |
| 11784 TypeAssertions _assertions; | 11802 TypeAssertions _assertions; |
| 11785 AsserterBuilder<Element, DartType> _hasElement; | 11803 |
| 11786 AsserterBuilder<DartType, DartType> _isType; | 11804 Asserter<DartType> _isDynamic; |
| 11787 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, | 11805 Asserter<InterfaceType> _isFutureOfDynamic; |
| 11788 DartType> _isFunction2Of; | 11806 Asserter<InterfaceType> _isFutureOfInt; |
| 11789 AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, | |
| 11790 DartType> _isInstantiationOf; | |
| 11791 Asserter<DartType> _isInt; | 11807 Asserter<DartType> _isInt; |
| 11792 Asserter<DartType> _isNum; | 11808 Asserter<DartType> _isNum; |
| 11793 Asserter<DartType> _isString; | 11809 Asserter<DartType> _isString; |
| 11794 Asserter<DartType> _isDynamic; | 11810 |
| 11811 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType> |
| 11812 _isFunction2Of; |
| 11813 AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isFutureOf; |
| 11814 AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, DartType> |
| 11815 _isInstantiationOf; |
| 11795 AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf; | 11816 AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf; |
| 11796 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, | 11817 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, InterfaceType> |
| 11797 InterfaceType> _isMapOf; | 11818 _isMapOf; |
| 11819 AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isStreamOf; |
| 11820 AsserterBuilder<DartType, DartType> _isType; |
| 11821 |
| 11822 AsserterBuilder<Element, DartType> _hasElement; |
| 11823 AsserterBuilder<DartType, DartType> _sameElement; |
| 11798 | 11824 |
| 11799 @override | 11825 @override |
| 11800 void setUp() { | 11826 void setUp() { |
| 11801 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); | 11827 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
| 11802 options.strongMode = true; | 11828 options.strongMode = true; |
| 11803 resetWithOptions(options); | 11829 resetWithOptions(options); |
| 11804 _assertions = new TypeAssertions(typeProvider); | 11830 _assertions = new TypeAssertions(typeProvider); |
| 11805 _isType = _assertions.isType; | 11831 _isType = _assertions.isType; |
| 11806 _hasElement = _assertions.hasElement; | 11832 _hasElement = _assertions.hasElement; |
| 11807 _isInstantiationOf = _assertions.isInstantiationOf; | 11833 _isInstantiationOf = _assertions.isInstantiationOf; |
| 11808 _isInt = _assertions.isInt; | 11834 _isInt = _assertions.isInt; |
| 11809 _isNum = _assertions.isNum; | 11835 _isNum = _assertions.isNum; |
| 11810 _isString = _assertions.isString; | 11836 _isString = _assertions.isString; |
| 11811 _isDynamic = _assertions.isDynamic; | 11837 _isDynamic = _assertions.isDynamic; |
| 11812 _isListOf = _assertions.isListOf; | 11838 _isListOf = _assertions.isListOf; |
| 11813 _isMapOf = _assertions.isMapOf; | 11839 _isMapOf = _assertions.isMapOf; |
| 11814 _isFunction2Of = _assertions.isFunction2Of; | 11840 _isFunction2Of = _assertions.isFunction2Of; |
| 11841 _sameElement = _assertions.sameElement; |
| 11842 _isFutureOf = _isInstantiationOf(_sameElement(typeProvider.futureType)); |
| 11843 _isFutureOfDynamic = _isFutureOf([_isDynamic]); |
| 11844 _isFutureOfInt = _isFutureOf([_isInt]); |
| 11845 _isStreamOf = _isInstantiationOf(_sameElement(typeProvider.streamType)); |
| 11846 } |
| 11847 |
| 11848 void test_async_method_propagation() { |
| 11849 String code = r''' |
| 11850 import "dart:async"; |
| 11851 class A { |
| 11852 Future f0() => new Future.value(3); |
| 11853 Future f1() async => new Future.value(3); |
| 11854 Future f2() async => await new Future.value(3); |
| 11855 |
| 11856 Future<int> f3() => new Future.value(3); |
| 11857 Future<int> f4() async => new Future.value(3); |
| 11858 Future<int> f5() async => await new Future.value(3); |
| 11859 |
| 11860 Future g0() { return new Future.value(3); } |
| 11861 Future g1() async { return new Future.value(3); } |
| 11862 Future g2() async { return await new Future.value(3); } |
| 11863 |
| 11864 Future<int> g3() { return new Future.value(3); } |
| 11865 Future<int> g4() async { return new Future.value(3); } |
| 11866 Future<int> g5() async { return await new Future.value(3); } |
| 11867 } |
| 11868 '''; |
| 11869 CompilationUnit unit = resolveSource(code); |
| 11870 |
| 11871 void check(String name, Asserter<InterfaceType> typeTest) { |
| 11872 MethodDeclaration test = AstFinder.getMethodInClass(unit, "A", name); |
| 11873 FunctionBody body = test.body; |
| 11874 Expression returnExp; |
| 11875 if (body is ExpressionFunctionBody) { |
| 11876 returnExp = body.expression; |
| 11877 } else { |
| 11878 ReturnStatement stmt = (body as BlockFunctionBody).block.statements[0]; |
| 11879 returnExp = stmt.expression; |
| 11880 } |
| 11881 DartType type = returnExp.staticType; |
| 11882 if (returnExp is AwaitExpression) { |
| 11883 type = returnExp.expression.staticType; |
| 11884 } |
| 11885 typeTest(type); |
| 11886 } |
| 11887 |
| 11888 check("f0", _isFutureOfDynamic); |
| 11889 check("f1", _isFutureOfDynamic); |
| 11890 check("f2", _isFutureOfDynamic); |
| 11891 |
| 11892 check("f3", _isFutureOfInt); |
| 11893 // This should be int when we handle the implicit Future<T> | T union |
| 11894 // https://github.com/dart-lang/sdk/issues/25322 |
| 11895 check("f4", _isFutureOfDynamic); |
| 11896 check("f5", _isFutureOfInt); |
| 11897 |
| 11898 check("g0", _isFutureOfDynamic); |
| 11899 check("g1", _isFutureOfDynamic); |
| 11900 check("g2", _isFutureOfDynamic); |
| 11901 |
| 11902 check("g3", _isFutureOfInt); |
| 11903 // This should be int when we handle the implicit Future<T> | T union |
| 11904 // https://github.com/dart-lang/sdk/issues/25322 |
| 11905 check("g4", _isFutureOfDynamic); |
| 11906 check("g5", _isFutureOfInt); |
| 11907 } |
| 11908 |
| 11909 void test_async_propagation() { |
| 11910 String code = r''' |
| 11911 import "dart:async"; |
| 11912 |
| 11913 Future f0() => new Future.value(3); |
| 11914 Future f1() async => new Future.value(3); |
| 11915 Future f2() async => await new Future.value(3); |
| 11916 |
| 11917 Future<int> f3() => new Future.value(3); |
| 11918 Future<int> f4() async => new Future.value(3); |
| 11919 Future<int> f5() async => await new Future.value(3); |
| 11920 |
| 11921 Future g0() { return new Future.value(3); } |
| 11922 Future g1() async { return new Future.value(3); } |
| 11923 Future g2() async { return await new Future.value(3); } |
| 11924 |
| 11925 Future<int> g3() { return new Future.value(3); } |
| 11926 Future<int> g4() async { return new Future.value(3); } |
| 11927 Future<int> g5() async { return await new Future.value(3); } |
| 11928 '''; |
| 11929 CompilationUnit unit = resolveSource(code); |
| 11930 |
| 11931 void check(String name, Asserter<InterfaceType> typeTest) { |
| 11932 FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name); |
| 11933 FunctionBody body = test.functionExpression.body; |
| 11934 Expression returnExp; |
| 11935 if (body is ExpressionFunctionBody) { |
| 11936 returnExp = body.expression; |
| 11937 } else { |
| 11938 ReturnStatement stmt = (body as BlockFunctionBody).block.statements[0]; |
| 11939 returnExp = stmt.expression; |
| 11940 } |
| 11941 DartType type = returnExp.staticType; |
| 11942 if (returnExp is AwaitExpression) { |
| 11943 type = returnExp.expression.staticType; |
| 11944 } |
| 11945 typeTest(type); |
| 11946 } |
| 11947 |
| 11948 check("f0", _isFutureOfDynamic); |
| 11949 check("f1", _isFutureOfDynamic); |
| 11950 check("f2", _isFutureOfDynamic); |
| 11951 |
| 11952 check("f3", _isFutureOfInt); |
| 11953 // This should be int when we handle the implicit Future<T> | T union |
| 11954 // https://github.com/dart-lang/sdk/issues/25322 |
| 11955 check("f4", _isFutureOfDynamic); |
| 11956 check("f5", _isFutureOfInt); |
| 11957 |
| 11958 check("g0", _isFutureOfDynamic); |
| 11959 check("g1", _isFutureOfDynamic); |
| 11960 check("g2", _isFutureOfDynamic); |
| 11961 |
| 11962 check("g3", _isFutureOfInt); |
| 11963 // This should be int when we handle the implicit Future<T> | T union |
| 11964 // https://github.com/dart-lang/sdk/issues/25322 |
| 11965 check("g4", _isFutureOfDynamic); |
| 11966 check("g5", _isFutureOfInt); |
| 11967 } |
| 11968 |
| 11969 void test_async_star_method_propagation() { |
| 11970 String code = r''' |
| 11971 import "dart:async"; |
| 11972 class A { |
| 11973 Stream g0() async* { yield []; } |
| 11974 Stream g1() async* { yield* new Stream(); } |
| 11975 |
| 11976 Stream<List<int>> g2() async* { yield []; } |
| 11977 Stream<List<int>> g3() async* { yield* new Stream(); } |
| 11978 } |
| 11979 '''; |
| 11980 CompilationUnit unit = resolveSource(code); |
| 11981 |
| 11982 void check(String name, Asserter<InterfaceType> typeTest) { |
| 11983 MethodDeclaration test = AstFinder.getMethodInClass(unit, "A", name); |
| 11984 BlockFunctionBody body = test.body; |
| 11985 YieldStatement stmt = body.block.statements[0]; |
| 11986 Expression exp = stmt.expression; |
| 11987 typeTest(exp.staticType); |
| 11988 } |
| 11989 |
| 11990 check("g0", _isListOf(_isDynamic)); |
| 11991 check("g1", _isStreamOf([_isDynamic])); |
| 11992 |
| 11993 check("g2", _isListOf(_isInt)); |
| 11994 check("g3", _isStreamOf([_isListOf(_isInt)])); |
| 11995 } |
| 11996 |
| 11997 void test_async_star_propagation() { |
| 11998 String code = r''' |
| 11999 import "dart:async"; |
| 12000 |
| 12001 Stream g0() async* { yield []; } |
| 12002 Stream g1() async* { yield* new Stream(); } |
| 12003 |
| 12004 Stream<List<int>> g2() async* { yield []; } |
| 12005 Stream<List<int>> g3() async* { yield* new Stream(); } |
| 12006 '''; |
| 12007 CompilationUnit unit = resolveSource(code); |
| 12008 |
| 12009 void check(String name, Asserter<InterfaceType> typeTest) { |
| 12010 FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name); |
| 12011 BlockFunctionBody body = test.functionExpression.body; |
| 12012 YieldStatement stmt = body.block.statements[0]; |
| 12013 Expression exp = stmt.expression; |
| 12014 typeTest(exp.staticType); |
| 12015 } |
| 12016 |
| 12017 check("g0", _isListOf(_isDynamic)); |
| 12018 check("g1", _isStreamOf([_isDynamic])); |
| 12019 |
| 12020 check("g2", _isListOf(_isInt)); |
| 12021 check("g3", _isStreamOf([_isListOf(_isInt)])); |
| 11815 } | 12022 } |
| 11816 | 12023 |
| 11817 void test_cascadeExpression() { | 12024 void test_cascadeExpression() { |
| 11818 String code = r''' | 12025 String code = r''' |
| 11819 class A<T> { | 12026 class A<T> { |
| 11820 List<T> map(T a, List<T> mapper(T x)) => mapper(a); | 12027 List<T> map(T a, List<T> mapper(T x)) => mapper(a); |
| 11821 } | 12028 } |
| 11822 | 12029 |
| 11823 void main () { | 12030 void main () { |
| 11824 A<int> a = new A()..map(0, (x) => [x]); | 12031 A<int> a = new A()..map(0, (x) => [x]); |
| (...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12744 } | 12951 } |
| 12745 '''; | 12952 '''; |
| 12746 CompilationUnit unit = resolveSource(code); | 12953 CompilationUnit unit = resolveSource(code); |
| 12747 | 12954 |
| 12748 ConstructorDeclaration constructor = | 12955 ConstructorDeclaration constructor = |
| 12749 AstFinder.getConstructorInClass(unit, "A", null); | 12956 AstFinder.getConstructorInClass(unit, "A", null); |
| 12750 SuperConstructorInvocation invocation = constructor.initializers[0]; | 12957 SuperConstructorInvocation invocation = constructor.initializers[0]; |
| 12751 Expression exp = invocation.argumentList.arguments[0]; | 12958 Expression exp = invocation.argumentList.arguments[0]; |
| 12752 _isListOf(_isString)(exp.staticType); | 12959 _isListOf(_isString)(exp.staticType); |
| 12753 } | 12960 } |
| 12961 |
| 12962 void test_sync_star_method_propagation() { |
| 12963 String code = r''' |
| 12964 import "dart:async"; |
| 12965 class A { |
| 12966 Iterable f0() sync* { yield []; } |
| 12967 Iterable f1() sync* { yield* new List(); } |
| 12968 |
| 12969 Iterable<List<int>> f2() sync* { yield []; } |
| 12970 Iterable<List<int>> f3() sync* { yield* new List(); } |
| 12971 } |
| 12972 '''; |
| 12973 CompilationUnit unit = resolveSource(code); |
| 12974 |
| 12975 void check(String name, Asserter<InterfaceType> typeTest) { |
| 12976 MethodDeclaration test = AstFinder.getMethodInClass(unit, "A", name); |
| 12977 BlockFunctionBody body = test.body; |
| 12978 YieldStatement stmt = body.block.statements[0]; |
| 12979 Expression exp = stmt.expression; |
| 12980 typeTest(exp.staticType); |
| 12981 } |
| 12982 |
| 12983 check("f0", _isListOf(_isDynamic)); |
| 12984 check("f1", _isListOf(_isDynamic)); |
| 12985 |
| 12986 check("f2", _isListOf(_isInt)); |
| 12987 check("f3", _isListOf(_isListOf(_isInt))); |
| 12988 } |
| 12989 |
| 12990 void test_sync_star_propagation() { |
| 12991 String code = r''' |
| 12992 import "dart:async"; |
| 12993 |
| 12994 Iterable f0() sync* { yield []; } |
| 12995 Iterable f1() sync* { yield* new List(); } |
| 12996 |
| 12997 Iterable<List<int>> f2() sync* { yield []; } |
| 12998 Iterable<List<int>> f3() sync* { yield* new List(); } |
| 12999 '''; |
| 13000 CompilationUnit unit = resolveSource(code); |
| 13001 |
| 13002 void check(String name, Asserter<InterfaceType> typeTest) { |
| 13003 FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name); |
| 13004 BlockFunctionBody body = test.functionExpression.body; |
| 13005 YieldStatement stmt = body.block.statements[0]; |
| 13006 Expression exp = stmt.expression; |
| 13007 typeTest(exp.staticType); |
| 13008 } |
| 13009 |
| 13010 check("f0", _isListOf(_isDynamic)); |
| 13011 check("f1", _isListOf(_isDynamic)); |
| 13012 |
| 13013 check("f2", _isListOf(_isInt)); |
| 13014 check("f3", _isListOf(_isListOf(_isInt))); |
| 13015 } |
| 12754 } | 13016 } |
| 12755 | 13017 |
| 12756 /** | 13018 /** |
| 12757 * Strong mode static analyzer end to end tests | 13019 * Strong mode static analyzer end to end tests |
| 12758 */ | 13020 */ |
| 12759 @reflectiveTest | 13021 @reflectiveTest |
| 12760 class StrongModeStaticTypeAnalyzer2Test extends _StaticTypeAnalyzer2TestShared { | 13022 class StrongModeStaticTypeAnalyzer2Test extends _StaticTypeAnalyzer2TestShared { |
| 12761 void setUp() { | 13023 void setUp() { |
| 12762 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); | 13024 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
| 12763 options.strongMode = true; | 13025 options.strongMode = true; |
| (...skipping 1254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14018 import 'lib.dart'; | 14280 import 'lib.dart'; |
| 14019 class B extends A { | 14281 class B extends A { |
| 14020 m() { | 14282 m() { |
| 14021 return v; // marker | 14283 return v; // marker |
| 14022 } | 14284 } |
| 14023 }'''; | 14285 }'''; |
| 14024 _assertTypeOfMarkedExpression( | 14286 _assertTypeOfMarkedExpression( |
| 14025 code, typeProvider.dynamicType, typeProvider.intType); | 14287 code, typeProvider.dynamicType, typeProvider.intType); |
| 14026 } | 14288 } |
| 14027 | 14289 |
| 14028 void test_finalPropertyInducingVariable_classMember_instance_propagatedTarget(
) { | 14290 void |
| 14291 test_finalPropertyInducingVariable_classMember_instance_propagatedTarget()
{ |
| 14029 addNamedSource( | 14292 addNamedSource( |
| 14030 "/lib.dart", | 14293 "/lib.dart", |
| 14031 r''' | 14294 r''' |
| 14032 class A { | 14295 class A { |
| 14033 final v = 0; | 14296 final v = 0; |
| 14034 }'''); | 14297 }'''); |
| 14035 String code = r''' | 14298 String code = r''' |
| 14036 import 'lib.dart'; | 14299 import 'lib.dart'; |
| 14037 f(p) { | 14300 f(p) { |
| 14038 if (p is A) { | 14301 if (p is A) { |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14237 FormalParameter kParameter = EngineTestCase.findNode( | 14500 FormalParameter kParameter = EngineTestCase.findNode( |
| 14238 unit, code, "k, ", (node) => node is SimpleFormalParameter); | 14501 unit, code, "k, ", (node) => node is SimpleFormalParameter); |
| 14239 expect(kParameter.identifier.propagatedType, same(intType)); | 14502 expect(kParameter.identifier.propagatedType, same(intType)); |
| 14240 // v | 14503 // v |
| 14241 DartType stringType = typeProvider.stringType; | 14504 DartType stringType = typeProvider.stringType; |
| 14242 FormalParameter vParameter = EngineTestCase.findNode( | 14505 FormalParameter vParameter = EngineTestCase.findNode( |
| 14243 unit, code, "v)", (node) => node is SimpleFormalParameter); | 14506 unit, code, "v)", (node) => node is SimpleFormalParameter); |
| 14244 expect(vParameter.identifier.propagatedType, same(stringType)); | 14507 expect(vParameter.identifier.propagatedType, same(stringType)); |
| 14245 } | 14508 } |
| 14246 | 14509 |
| 14247 void test_functionExpression_asInvocationArgument_functionExpressionInvocation
() { | 14510 void |
| 14511 test_functionExpression_asInvocationArgument_functionExpressionInvocation(
) { |
| 14248 String code = r''' | 14512 String code = r''' |
| 14249 main() { | 14513 main() { |
| 14250 (f(String value)) {} ((v) { | 14514 (f(String value)) {} ((v) { |
| 14251 v; | 14515 v; |
| 14252 }); | 14516 }); |
| 14253 }'''; | 14517 }'''; |
| 14254 Source source = addSource(code); | 14518 Source source = addSource(code); |
| 14255 LibraryElement library = resolve2(source); | 14519 LibraryElement library = resolve2(source); |
| 14256 assertNoErrors(source); | 14520 assertNoErrors(source); |
| 14257 verify([source]); | 14521 verify([source]); |
| (...skipping 1857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16115 | 16379 |
| 16116 void _resolveTestUnit(String code) { | 16380 void _resolveTestUnit(String code) { |
| 16117 testCode = code; | 16381 testCode = code; |
| 16118 testSource = addSource(testCode); | 16382 testSource = addSource(testCode); |
| 16119 LibraryElement library = resolve2(testSource); | 16383 LibraryElement library = resolve2(testSource); |
| 16120 assertNoErrors(testSource); | 16384 assertNoErrors(testSource); |
| 16121 verify([testSource]); | 16385 verify([testSource]); |
| 16122 testUnit = resolveCompilationUnit(testSource, library); | 16386 testUnit = resolveCompilationUnit(testSource, library); |
| 16123 } | 16387 } |
| 16124 } | 16388 } |
| OLD | NEW |