| 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 engine.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/src/context/context.dart'; | 9 import 'package:analyzer/src/context/context.dart'; |
| 10 import 'package:analyzer/src/generated/ast.dart'; | 10 import 'package:analyzer/src/generated/ast.dart'; |
| 11 import 'package:analyzer/src/generated/element.dart'; | 11 import 'package:analyzer/src/generated/element.dart'; |
| 12 import 'package:analyzer/src/generated/element_resolver.dart'; | 12 import 'package:analyzer/src/generated/element_resolver.dart'; |
| 13 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
| 14 import 'package:analyzer/src/generated/error.dart'; | 14 import 'package:analyzer/src/generated/error.dart'; |
| 15 import 'package:analyzer/src/generated/java_core.dart'; | 15 import 'package:analyzer/src/generated/java_core.dart'; |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 futureElement.constructors = <ConstructorElement>[futureConstructor]; | 186 futureElement.constructors = <ConstructorElement>[futureConstructor]; |
| 187 // Future then(onValue(T value), { Function onError }); | 187 // Future then(onValue(T value), { Function onError }); |
| 188 TypeDefiningElement futureThenR = DynamicElementImpl.instance; | 188 TypeDefiningElement futureThenR = DynamicElementImpl.instance; |
| 189 if (context.analysisOptions.strongMode) { | 189 if (context.analysisOptions.strongMode) { |
| 190 futureThenR = ElementFactory.typeParameterWithType('R'); | 190 futureThenR = ElementFactory.typeParameterWithType('R'); |
| 191 } | 191 } |
| 192 FunctionElementImpl thenOnValue = ElementFactory.functionElement3( | 192 FunctionElementImpl thenOnValue = ElementFactory.functionElement3( |
| 193 'onValue', futureThenR, [futureElement.typeParameters[0]], null); | 193 'onValue', futureThenR, [futureElement.typeParameters[0]], null); |
| 194 | 194 |
| 195 DartType futureRType = futureElement.type.substitute4([futureThenR.type]); | 195 DartType futureRType = futureElement.type.substitute4([futureThenR.type]); |
| 196 MethodElementImpl thenMethod = ElementFactory.methodElementWithParameters( | 196 MethodElementImpl thenMethod = ElementFactory |
| 197 futureElement, "then", futureRType, [ | 197 .methodElementWithParameters(futureElement, "then", futureRType, [ |
| 198 ElementFactory.requiredParameter2("onValue", thenOnValue.type), | 198 ElementFactory.requiredParameter2("onValue", thenOnValue.type), |
| 199 ElementFactory.namedParameter2("onError", provider.functionType) | 199 ElementFactory.namedParameter2("onError", provider.functionType) |
| 200 ]); | 200 ]); |
| 201 if (!futureThenR.type.isDynamic) { | 201 if (!futureThenR.type.isDynamic) { |
| 202 thenMethod.typeParameters = [futureThenR]; | 202 thenMethod.typeParameters = [futureThenR]; |
| 203 } | 203 } |
| 204 thenOnValue.enclosingElement = thenMethod; | 204 thenOnValue.enclosingElement = thenMethod; |
| 205 thenOnValue.type = new FunctionTypeImpl(thenOnValue); | 205 thenOnValue.type = new FunctionTypeImpl(thenOnValue); |
| 206 (thenMethod.parameters[0] as ParameterElementImpl).type = thenOnValue.type; | 206 (thenMethod.parameters[0] as ParameterElementImpl).type = thenOnValue.type; |
| 207 thenMethod.type = new FunctionTypeImpl(thenMethod); | 207 thenMethod.type = new FunctionTypeImpl(thenMethod); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 ElementFactory.getterElement("context2D", false, context2dElement.type) | 275 ElementFactory.getterElement("context2D", false, context2dElement.type) |
| 276 ]; | 276 ]; |
| 277 canvasElement.fields = canvasElement.accessors | 277 canvasElement.fields = canvasElement.accessors |
| 278 .map((PropertyAccessorElement accessor) => accessor.variable) | 278 .map((PropertyAccessorElement accessor) => accessor.variable) |
| 279 .toList(); | 279 .toList(); |
| 280 ClassElementImpl documentElement = | 280 ClassElementImpl documentElement = |
| 281 ElementFactory.classElement("Document", elementType); | 281 ElementFactory.classElement("Document", elementType); |
| 282 ClassElementImpl htmlDocumentElement = | 282 ClassElementImpl htmlDocumentElement = |
| 283 ElementFactory.classElement("HtmlDocument", documentElement.type); | 283 ElementFactory.classElement("HtmlDocument", documentElement.type); |
| 284 htmlDocumentElement.methods = <MethodElement>[ | 284 htmlDocumentElement.methods = <MethodElement>[ |
| 285 ElementFactory.methodElement( | 285 ElementFactory |
| 286 "query", elementType, <DartType>[provider.stringType]) | 286 .methodElement("query", elementType, <DartType>[provider.stringType]) |
| 287 ]; | 287 ]; |
| 288 htmlUnit.types = <ClassElement>[ | 288 htmlUnit.types = <ClassElement>[ |
| 289 ElementFactory.classElement("AnchorElement", elementType), | 289 ElementFactory.classElement("AnchorElement", elementType), |
| 290 ElementFactory.classElement("BodyElement", elementType), | 290 ElementFactory.classElement("BodyElement", elementType), |
| 291 ElementFactory.classElement("ButtonElement", elementType), | 291 ElementFactory.classElement("ButtonElement", elementType), |
| 292 canvasElement, | 292 canvasElement, |
| 293 contextElement, | 293 contextElement, |
| 294 context2dElement, | 294 context2dElement, |
| 295 ElementFactory.classElement("DivElement", elementType), | 295 ElementFactory.classElement("DivElement", elementType), |
| 296 documentElement, | 296 documentElement, |
| 297 elementElement, | 297 elementElement, |
| 298 htmlDocumentElement, | 298 htmlDocumentElement, |
| 299 ElementFactory.classElement("InputElement", elementType), | 299 ElementFactory.classElement("InputElement", elementType), |
| 300 ElementFactory.classElement("SelectElement", elementType) | 300 ElementFactory.classElement("SelectElement", elementType) |
| 301 ]; | 301 ]; |
| 302 htmlUnit.functions = <FunctionElement>[ | 302 htmlUnit.functions = <FunctionElement>[ |
| 303 ElementFactory.functionElement3("query", elementElement, | 303 ElementFactory.functionElement3("query", elementElement, |
| 304 <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST) | 304 <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST) |
| 305 ]; | 305 ]; |
| 306 TopLevelVariableElementImpl document = ElementFactory | 306 TopLevelVariableElementImpl document = |
| 307 .topLevelVariableElement3( | 307 ElementFactory.topLevelVariableElement3( |
| 308 "document", false, true, htmlDocumentElement.type); | 308 "document", false, true, htmlDocumentElement.type); |
| 309 htmlUnit.topLevelVariables = <TopLevelVariableElement>[document]; | 309 htmlUnit.topLevelVariables = <TopLevelVariableElement>[document]; |
| 310 htmlUnit.accessors = <PropertyAccessorElement>[document.getter]; | 310 htmlUnit.accessors = <PropertyAccessorElement>[document.getter]; |
| 311 LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode( | 311 LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode( |
| 312 coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); | 312 coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); |
| 313 htmlLibrary.definingCompilationUnit = htmlUnit; | 313 htmlLibrary.definingCompilationUnit = htmlUnit; |
| 314 // | 314 // |
| 315 // dart:math | 315 // dart:math |
| 316 // | 316 // |
| 317 CompilationUnitElementImpl mathUnit = | 317 CompilationUnitElementImpl mathUnit = |
| (...skipping 4762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5080 | 5080 |
| 5081 void test_getMapOfMembersInheritedFromInterfaces_implicitExtends() { | 5081 void test_getMapOfMembersInheritedFromInterfaces_implicitExtends() { |
| 5082 // class A {} | 5082 // class A {} |
| 5083 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5083 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5084 MemberMap mapA = | 5084 MemberMap mapA = |
| 5085 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5085 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5086 expect(mapA.size, _numOfMembersInObject); | 5086 expect(mapA.size, _numOfMembersInObject); |
| 5087 _assertNoErrors(classA); | 5087 _assertNoErrors(classA); |
| 5088 } | 5088 } |
| 5089 | 5089 |
| 5090 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_getter_method() { | 5090 void |
| 5091 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
getter_method() { |
| 5091 // class I1 { int m(); } | 5092 // class I1 { int m(); } |
| 5092 // class I2 { int get m; } | 5093 // class I2 { int get m; } |
| 5093 // class A implements I2, I1 {} | 5094 // class A implements I2, I1 {} |
| 5094 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5095 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5095 String methodName = "m"; | 5096 String methodName = "m"; |
| 5096 MethodElement methodM = | 5097 MethodElement methodM = |
| 5097 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5098 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5098 classI1.methods = <MethodElement>[methodM]; | 5099 classI1.methods = <MethodElement>[methodM]; |
| 5099 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5100 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5100 PropertyAccessorElement getter = | 5101 PropertyAccessorElement getter = |
| 5101 ElementFactory.getterElement(methodName, false, _typeProvider.intType); | 5102 ElementFactory.getterElement(methodName, false, _typeProvider.intType); |
| 5102 classI2.accessors = <PropertyAccessorElement>[getter]; | 5103 classI2.accessors = <PropertyAccessorElement>[getter]; |
| 5103 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5104 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5104 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; | 5105 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; |
| 5105 MemberMap mapA = | 5106 MemberMap mapA = |
| 5106 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5107 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5107 expect(mapA.size, _numOfMembersInObject); | 5108 expect(mapA.size, _numOfMembersInObject); |
| 5108 expect(mapA.get(methodName), isNull); | 5109 expect(mapA.get(methodName), isNull); |
| 5109 _assertErrors(classA, | 5110 _assertErrors(classA, |
| 5110 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); | 5111 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); |
| 5111 } | 5112 } |
| 5112 | 5113 |
| 5113 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_int_str() { | 5114 void |
| 5115 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
int_str() { |
| 5114 // class I1 { int m(); } | 5116 // class I1 { int m(); } |
| 5115 // class I2 { String m(); } | 5117 // class I2 { String m(); } |
| 5116 // class A implements I1, I2 {} | 5118 // class A implements I1, I2 {} |
| 5117 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5119 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5118 String methodName = "m"; | 5120 String methodName = "m"; |
| 5119 MethodElement methodM1 = | 5121 MethodElement methodM1 = |
| 5120 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); | 5122 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); |
| 5121 classI1.methods = <MethodElement>[methodM1]; | 5123 classI1.methods = <MethodElement>[methodM1]; |
| 5122 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5124 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5123 MethodElement methodM2 = ElementFactory.methodElement( | 5125 MethodElement methodM2 = ElementFactory |
| 5124 methodName, null, [_typeProvider.stringType]); | 5126 .methodElement(methodName, null, [_typeProvider.stringType]); |
| 5125 classI2.methods = <MethodElement>[methodM2]; | 5127 classI2.methods = <MethodElement>[methodM2]; |
| 5126 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5128 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5127 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5129 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5128 MemberMap mapA = | 5130 MemberMap mapA = |
| 5129 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5131 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5130 expect(mapA.size, _numOfMembersInObject); | 5132 expect(mapA.size, _numOfMembersInObject); |
| 5131 expect(mapA.get(methodName), isNull); | 5133 expect(mapA.get(methodName), isNull); |
| 5132 _assertErrors( | 5134 _assertErrors( |
| 5133 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); | 5135 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
| 5134 } | 5136 } |
| 5135 | 5137 |
| 5136 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_method_getter() { | 5138 void |
| 5139 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
method_getter() { |
| 5137 // class I1 { int m(); } | 5140 // class I1 { int m(); } |
| 5138 // class I2 { int get m; } | 5141 // class I2 { int get m; } |
| 5139 // class A implements I1, I2 {} | 5142 // class A implements I1, I2 {} |
| 5140 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5143 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5141 String methodName = "m"; | 5144 String methodName = "m"; |
| 5142 MethodElement methodM = | 5145 MethodElement methodM = |
| 5143 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5146 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5144 classI1.methods = <MethodElement>[methodM]; | 5147 classI1.methods = <MethodElement>[methodM]; |
| 5145 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5148 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5146 PropertyAccessorElement getter = | 5149 PropertyAccessorElement getter = |
| 5147 ElementFactory.getterElement(methodName, false, _typeProvider.intType); | 5150 ElementFactory.getterElement(methodName, false, _typeProvider.intType); |
| 5148 classI2.accessors = <PropertyAccessorElement>[getter]; | 5151 classI2.accessors = <PropertyAccessorElement>[getter]; |
| 5149 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5152 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5150 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5153 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5151 MemberMap mapA = | 5154 MemberMap mapA = |
| 5152 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5155 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5153 expect(mapA.size, _numOfMembersInObject); | 5156 expect(mapA.size, _numOfMembersInObject); |
| 5154 expect(mapA.get(methodName), isNull); | 5157 expect(mapA.get(methodName), isNull); |
| 5155 _assertErrors(classA, | 5158 _assertErrors(classA, |
| 5156 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); | 5159 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); |
| 5157 } | 5160 } |
| 5158 | 5161 |
| 5159 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_numOfRequiredParams() { | 5162 void |
| 5163 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
numOfRequiredParams() { |
| 5160 // class I1 { dynamic m(int, [int]); } | 5164 // class I1 { dynamic m(int, [int]); } |
| 5161 // class I2 { dynamic m(int, int, int); } | 5165 // class I2 { dynamic m(int, int, int); } |
| 5162 // class A implements I1, I2 {} | 5166 // class A implements I1, I2 {} |
| 5163 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5167 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5164 String methodName = "m"; | 5168 String methodName = "m"; |
| 5165 MethodElementImpl methodM1 = | 5169 MethodElementImpl methodM1 = |
| 5166 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); | 5170 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); |
| 5167 ParameterElementImpl parameter1 = | 5171 ParameterElementImpl parameter1 = |
| 5168 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); | 5172 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); |
| 5169 parameter1.type = _typeProvider.intType; | 5173 parameter1.type = _typeProvider.intType; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 5198 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5202 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5199 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5203 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5200 MemberMap mapA = | 5204 MemberMap mapA = |
| 5201 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5205 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5202 expect(mapA.size, _numOfMembersInObject); | 5206 expect(mapA.size, _numOfMembersInObject); |
| 5203 expect(mapA.get(methodName), isNull); | 5207 expect(mapA.get(methodName), isNull); |
| 5204 _assertErrors( | 5208 _assertErrors( |
| 5205 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); | 5209 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); |
| 5206 } | 5210 } |
| 5207 | 5211 |
| 5208 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance
_str_int() { | 5212 void |
| 5213 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_
str_int() { |
| 5209 // class I1 { int m(); } | 5214 // class I1 { int m(); } |
| 5210 // class I2 { String m(); } | 5215 // class I2 { String m(); } |
| 5211 // class A implements I2, I1 {} | 5216 // class A implements I2, I1 {} |
| 5212 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5217 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5213 String methodName = "m"; | 5218 String methodName = "m"; |
| 5214 MethodElement methodM1 = ElementFactory.methodElement( | 5219 MethodElement methodM1 = ElementFactory |
| 5215 methodName, null, [_typeProvider.stringType]); | 5220 .methodElement(methodName, null, [_typeProvider.stringType]); |
| 5216 classI1.methods = <MethodElement>[methodM1]; | 5221 classI1.methods = <MethodElement>[methodM1]; |
| 5217 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5222 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5218 MethodElement methodM2 = | 5223 MethodElement methodM2 = |
| 5219 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); | 5224 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); |
| 5220 classI2.methods = <MethodElement>[methodM2]; | 5225 classI2.methods = <MethodElement>[methodM2]; |
| 5221 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5226 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5222 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; | 5227 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; |
| 5223 MemberMap mapA = | 5228 MemberMap mapA = |
| 5224 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5229 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5225 expect(mapA.size, _numOfMembersInObject); | 5230 expect(mapA.size, _numOfMembersInObject); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5307 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5312 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5308 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5313 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5309 MemberMap mapA = | 5314 MemberMap mapA = |
| 5310 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5315 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5311 expect(mapA.size, _numOfMembersInObject + 2); | 5316 expect(mapA.size, _numOfMembersInObject + 2); |
| 5312 expect(mapA.get(methodName1), same(methodM1)); | 5317 expect(mapA.get(methodName1), same(methodM1)); |
| 5313 expect(mapA.get(methodName2), same(methodM2)); | 5318 expect(mapA.get(methodName2), same(methodM2)); |
| 5314 _assertNoErrors(classA); | 5319 _assertNoErrors(classA); |
| 5315 } | 5320 } |
| 5316 | 5321 |
| 5317 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_gett
ers() { | 5322 void |
| 5323 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_gette
rs() { |
| 5318 // class I1 { int get g; } | 5324 // class I1 { int get g; } |
| 5319 // class I2 { num get g; } | 5325 // class I2 { num get g; } |
| 5320 // class A implements I1, I2 {} | 5326 // class A implements I1, I2 {} |
| 5321 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5327 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5322 String accessorName = "g"; | 5328 String accessorName = "g"; |
| 5323 PropertyAccessorElement getter1 = ElementFactory.getterElement( | 5329 PropertyAccessorElement getter1 = ElementFactory.getterElement( |
| 5324 accessorName, false, _typeProvider.intType); | 5330 accessorName, false, _typeProvider.intType); |
| 5325 classI1.accessors = <PropertyAccessorElement>[getter1]; | 5331 classI1.accessors = <PropertyAccessorElement>[getter1]; |
| 5326 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5332 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5327 PropertyAccessorElement getter2 = ElementFactory.getterElement( | 5333 PropertyAccessorElement getter2 = ElementFactory.getterElement( |
| 5328 accessorName, false, _typeProvider.numType); | 5334 accessorName, false, _typeProvider.numType); |
| 5329 classI2.accessors = <PropertyAccessorElement>[getter2]; | 5335 classI2.accessors = <PropertyAccessorElement>[getter2]; |
| 5330 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5336 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5331 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5337 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5332 MemberMap mapA = | 5338 MemberMap mapA = |
| 5333 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5339 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5334 expect(mapA.size, _numOfMembersInObject + 1); | 5340 expect(mapA.size, _numOfMembersInObject + 1); |
| 5335 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( | 5341 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( |
| 5336 accessorName, false, _typeProvider.dynamicType); | 5342 accessorName, false, _typeProvider.dynamicType); |
| 5337 expect(mapA.get(accessorName).type, syntheticAccessor.type); | 5343 expect(mapA.get(accessorName).type, syntheticAccessor.type); |
| 5338 _assertNoErrors(classA); | 5344 _assertNoErrors(classA); |
| 5339 } | 5345 } |
| 5340 | 5346 |
| 5341 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_meth
ods() { | 5347 void |
| 5348 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_metho
ds() { |
| 5342 // class I1 { dynamic m(int); } | 5349 // class I1 { dynamic m(int); } |
| 5343 // class I2 { dynamic m(num); } | 5350 // class I2 { dynamic m(num); } |
| 5344 // class A implements I1, I2 {} | 5351 // class A implements I1, I2 {} |
| 5345 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5352 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5346 String methodName = "m"; | 5353 String methodName = "m"; |
| 5347 MethodElementImpl methodM1 = | 5354 MethodElementImpl methodM1 = |
| 5348 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); | 5355 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); |
| 5349 ParameterElementImpl parameter1 = | 5356 ParameterElementImpl parameter1 = |
| 5350 new ParameterElementImpl.forNode(AstFactory.identifier3("a0")); | 5357 new ParameterElementImpl.forNode(AstFactory.identifier3("a0")); |
| 5351 parameter1.type = _typeProvider.intType; | 5358 parameter1.type = _typeProvider.intType; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 5365 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5372 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5366 MemberMap mapA = | 5373 MemberMap mapA = |
| 5367 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5374 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5368 expect(mapA.size, _numOfMembersInObject + 1); | 5375 expect(mapA.size, _numOfMembersInObject + 1); |
| 5369 MethodElement syntheticMethod = ElementFactory.methodElement( | 5376 MethodElement syntheticMethod = ElementFactory.methodElement( |
| 5370 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); | 5377 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); |
| 5371 expect(mapA.get(methodName).type, syntheticMethod.type); | 5378 expect(mapA.get(methodName).type, syntheticMethod.type); |
| 5372 _assertNoErrors(classA); | 5379 _assertNoErrors(classA); |
| 5373 } | 5380 } |
| 5374 | 5381 |
| 5375 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_sett
ers() { | 5382 void |
| 5383 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_sette
rs() { |
| 5376 // class I1 { set s(int); } | 5384 // class I1 { set s(int); } |
| 5377 // class I2 { set s(num); } | 5385 // class I2 { set s(num); } |
| 5378 // class A implements I1, I2 {} | 5386 // class A implements I1, I2 {} |
| 5379 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5387 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5380 String accessorName = "s"; | 5388 String accessorName = "s"; |
| 5381 PropertyAccessorElement setter1 = ElementFactory.setterElement( | 5389 PropertyAccessorElement setter1 = ElementFactory.setterElement( |
| 5382 accessorName, false, _typeProvider.intType); | 5390 accessorName, false, _typeProvider.intType); |
| 5383 classI1.accessors = <PropertyAccessorElement>[setter1]; | 5391 classI1.accessors = <PropertyAccessorElement>[setter1]; |
| 5384 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5392 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5385 PropertyAccessorElement setter2 = ElementFactory.setterElement( | 5393 PropertyAccessorElement setter2 = ElementFactory.setterElement( |
| 5386 accessorName, false, _typeProvider.numType); | 5394 accessorName, false, _typeProvider.numType); |
| 5387 classI2.accessors = <PropertyAccessorElement>[setter2]; | 5395 classI2.accessors = <PropertyAccessorElement>[setter2]; |
| 5388 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5396 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5389 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5397 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5390 MemberMap mapA = | 5398 MemberMap mapA = |
| 5391 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5399 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5392 expect(mapA.size, _numOfMembersInObject + 1); | 5400 expect(mapA.size, _numOfMembersInObject + 1); |
| 5393 PropertyAccessorElementImpl syntheticAccessor = ElementFactory | 5401 PropertyAccessorElementImpl syntheticAccessor = ElementFactory |
| 5394 .setterElement(accessorName, false, _typeProvider.dynamicType); | 5402 .setterElement(accessorName, false, _typeProvider.dynamicType); |
| 5395 syntheticAccessor.returnType = _typeProvider.dynamicType; | 5403 syntheticAccessor.returnType = _typeProvider.dynamicType; |
| 5396 expect(mapA.get("$accessorName=").type, syntheticAccessor.type); | 5404 expect(mapA.get("$accessorName=").type, syntheticAccessor.type); |
| 5397 _assertNoErrors(classA); | 5405 _assertNoErrors(classA); |
| 5398 } | 5406 } |
| 5399 | 5407 |
| 5400 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_gett
ers() { | 5408 void |
| 5409 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_gette
rs() { |
| 5401 // class A {} | 5410 // class A {} |
| 5402 // class B extends A {} | 5411 // class B extends A {} |
| 5403 // class C extends B {} | 5412 // class C extends B {} |
| 5404 // class I1 { A get g; } | 5413 // class I1 { A get g; } |
| 5405 // class I2 { B get g; } | 5414 // class I2 { B get g; } |
| 5406 // class I3 { C get g; } | 5415 // class I3 { C get g; } |
| 5407 // class D implements I1, I2, I3 {} | 5416 // class D implements I1, I2, I3 {} |
| 5408 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5417 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5409 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | 5418 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); |
| 5410 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | 5419 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 5429 ]; | 5438 ]; |
| 5430 MemberMap mapD = | 5439 MemberMap mapD = |
| 5431 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); | 5440 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); |
| 5432 expect(mapD.size, _numOfMembersInObject + 1); | 5441 expect(mapD.size, _numOfMembersInObject + 1); |
| 5433 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( | 5442 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( |
| 5434 accessorName, false, _typeProvider.dynamicType); | 5443 accessorName, false, _typeProvider.dynamicType); |
| 5435 expect(mapD.get(accessorName).type, syntheticAccessor.type); | 5444 expect(mapD.get(accessorName).type, syntheticAccessor.type); |
| 5436 _assertNoErrors(classD); | 5445 _assertNoErrors(classD); |
| 5437 } | 5446 } |
| 5438 | 5447 |
| 5439 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_meth
ods() { | 5448 void |
| 5449 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_metho
ds() { |
| 5440 // class A {} | 5450 // class A {} |
| 5441 // class B extends A {} | 5451 // class B extends A {} |
| 5442 // class C extends B {} | 5452 // class C extends B {} |
| 5443 // class I1 { dynamic m(A a); } | 5453 // class I1 { dynamic m(A a); } |
| 5444 // class I2 { dynamic m(B b); } | 5454 // class I2 { dynamic m(B b); } |
| 5445 // class I3 { dynamic m(C c); } | 5455 // class I3 { dynamic m(C c); } |
| 5446 // class D implements I1, I2, I3 {} | 5456 // class D implements I1, I2, I3 {} |
| 5447 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5457 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5448 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | 5458 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); |
| 5449 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | 5459 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5483 ]; | 5493 ]; |
| 5484 MemberMap mapD = | 5494 MemberMap mapD = |
| 5485 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); | 5495 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); |
| 5486 expect(mapD.size, _numOfMembersInObject + 1); | 5496 expect(mapD.size, _numOfMembersInObject + 1); |
| 5487 MethodElement syntheticMethod = ElementFactory.methodElement( | 5497 MethodElement syntheticMethod = ElementFactory.methodElement( |
| 5488 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); | 5498 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); |
| 5489 expect(mapD.get(methodName).type, syntheticMethod.type); | 5499 expect(mapD.get(methodName).type, syntheticMethod.type); |
| 5490 _assertNoErrors(classD); | 5500 _assertNoErrors(classD); |
| 5491 } | 5501 } |
| 5492 | 5502 |
| 5493 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_sett
ers() { | 5503 void |
| 5504 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_sette
rs() { |
| 5494 // class A {} | 5505 // class A {} |
| 5495 // class B extends A {} | 5506 // class B extends A {} |
| 5496 // class C extends B {} | 5507 // class C extends B {} |
| 5497 // class I1 { set s(A); } | 5508 // class I1 { set s(A); } |
| 5498 // class I2 { set s(B); } | 5509 // class I2 { set s(B); } |
| 5499 // class I3 { set s(C); } | 5510 // class I3 { set s(C); } |
| 5500 // class D implements I1, I2, I3 {} | 5511 // class D implements I1, I2, I3 {} |
| 5501 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5512 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5502 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); | 5513 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); |
| 5503 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); | 5514 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 5523 MemberMap mapD = | 5534 MemberMap mapD = |
| 5524 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); | 5535 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); |
| 5525 expect(mapD.size, _numOfMembersInObject + 1); | 5536 expect(mapD.size, _numOfMembersInObject + 1); |
| 5526 PropertyAccessorElementImpl syntheticAccessor = ElementFactory | 5537 PropertyAccessorElementImpl syntheticAccessor = ElementFactory |
| 5527 .setterElement(accessorName, false, _typeProvider.dynamicType); | 5538 .setterElement(accessorName, false, _typeProvider.dynamicType); |
| 5528 syntheticAccessor.returnType = _typeProvider.dynamicType; | 5539 syntheticAccessor.returnType = _typeProvider.dynamicType; |
| 5529 expect(mapD.get("$accessorName=").type, syntheticAccessor.type); | 5540 expect(mapD.get("$accessorName=").type, syntheticAccessor.type); |
| 5530 _assertNoErrors(classD); | 5541 _assertNoErrors(classD); |
| 5531 } | 5542 } |
| 5532 | 5543 |
| 5533 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods()
{ | 5544 void |
| 5545 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() { |
| 5534 // class I1 { int m(); } | 5546 // class I1 { int m(); } |
| 5535 // class I2 { int m([int]); } | 5547 // class I2 { int m([int]); } |
| 5536 // class A implements I1, I2 {} | 5548 // class A implements I1, I2 {} |
| 5537 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5549 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5538 String methodName = "m"; | 5550 String methodName = "m"; |
| 5539 MethodElement methodM1 = | 5551 MethodElement methodM1 = |
| 5540 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5552 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5541 classI1.methods = <MethodElement>[methodM1]; | 5553 classI1.methods = <MethodElement>[methodM1]; |
| 5542 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5554 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| 5543 MethodElementImpl methodM2 = | 5555 MethodElementImpl methodM2 = |
| 5544 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5556 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5545 ParameterElementImpl parameter1 = | 5557 ParameterElementImpl parameter1 = |
| 5546 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); | 5558 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); |
| 5547 parameter1.type = _typeProvider.intType; | 5559 parameter1.type = _typeProvider.intType; |
| 5548 parameter1.parameterKind = ParameterKind.POSITIONAL; | 5560 parameter1.parameterKind = ParameterKind.POSITIONAL; |
| 5549 methodM2.parameters = <ParameterElement>[parameter1]; | 5561 methodM2.parameters = <ParameterElement>[parameter1]; |
| 5550 classI2.methods = <MethodElement>[methodM2]; | 5562 classI2.methods = <MethodElement>[methodM2]; |
| 5551 ClassElementImpl classA = ElementFactory.classElement2("A"); | 5563 ClassElementImpl classA = ElementFactory.classElement2("A"); |
| 5552 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; | 5564 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; |
| 5553 MemberMap mapA = | 5565 MemberMap mapA = |
| 5554 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5566 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5555 expect(mapA.size, _numOfMembersInObject + 1); | 5567 expect(mapA.size, _numOfMembersInObject + 1); |
| 5556 expect(mapA.get(methodName), same(methodM2)); | 5568 expect(mapA.get(methodName), same(methodM2)); |
| 5557 _assertNoErrors(classA); | 5569 _assertNoErrors(classA); |
| 5558 } | 5570 } |
| 5559 | 5571 |
| 5560 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods()
{ | 5572 void |
| 5573 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() { |
| 5561 // class I1 { int m(); } | 5574 // class I1 { int m(); } |
| 5562 // class I2 { int m([int]); } | 5575 // class I2 { int m([int]); } |
| 5563 // class I3 { int m([int, int]); } | 5576 // class I3 { int m([int, int]); } |
| 5564 // class A implements I1, I2, I3 {} | 5577 // class A implements I1, I2, I3 {} |
| 5565 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5578 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5566 String methodName = "m"; | 5579 String methodName = "m"; |
| 5567 MethodElementImpl methodM1 = | 5580 MethodElementImpl methodM1 = |
| 5568 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5581 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5569 classI1.methods = <MethodElement>[methodM1]; | 5582 classI1.methods = <MethodElement>[methodM1]; |
| 5570 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); | 5583 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5595 classI2.type, | 5608 classI2.type, |
| 5596 classI3.type | 5609 classI3.type |
| 5597 ]; | 5610 ]; |
| 5598 MemberMap mapA = | 5611 MemberMap mapA = |
| 5599 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); | 5612 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); |
| 5600 expect(mapA.size, _numOfMembersInObject + 1); | 5613 expect(mapA.size, _numOfMembersInObject + 1); |
| 5601 expect(mapA.get(methodName), same(methodM3)); | 5614 expect(mapA.get(methodName), same(methodM3)); |
| 5602 _assertNoErrors(classA); | 5615 _assertNoErrors(classA); |
| 5603 } | 5616 } |
| 5604 | 5617 |
| 5605 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods()
{ | 5618 void |
| 5619 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() { |
| 5606 // class I1 { int m(); } | 5620 // class I1 { int m(); } |
| 5607 // class I2 { int m(); } | 5621 // class I2 { int m(); } |
| 5608 // class I3 { int m([int]); } | 5622 // class I3 { int m([int]); } |
| 5609 // class I4 { int m([int, int]); } | 5623 // class I4 { int m([int, int]); } |
| 5610 // class A implements I1, I2, I3, I4 {} | 5624 // class A implements I1, I2, I3, I4 {} |
| 5611 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); | 5625 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); |
| 5612 String methodName = "m"; | 5626 String methodName = "m"; |
| 5613 MethodElement methodM1 = | 5627 MethodElement methodM1 = |
| 5614 ElementFactory.methodElement(methodName, _typeProvider.intType); | 5628 ElementFactory.methodElement(methodName, _typeProvider.intType); |
| 5615 classI1.methods = <MethodElement>[methodM1]; | 5629 classI1.methods = <MethodElement>[methodM1]; |
| (...skipping 3681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9297 expect(classes, hasLength(1)); | 9311 expect(classes, hasLength(1)); |
| 9298 List<ElementAnnotation> annotations = classes[0].metadata; | 9312 List<ElementAnnotation> annotations = classes[0].metadata; |
| 9299 expect(annotations, hasLength(1)); | 9313 expect(annotations, hasLength(1)); |
| 9300 assertNoErrors(source); | 9314 assertNoErrors(source); |
| 9301 verify([source]); | 9315 verify([source]); |
| 9302 CompilationUnit unit = resolveCompilationUnit(source, library); | 9316 CompilationUnit unit = resolveCompilationUnit(source, library); |
| 9303 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9317 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9304 expect(declarations, hasLength(2)); | 9318 expect(declarations, hasLength(2)); |
| 9305 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) | 9319 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) |
| 9306 .variables | 9320 .variables |
| 9307 .variables[0].name.staticElement; | 9321 .variables[0] |
| 9322 .name |
| 9323 .staticElement; |
| 9308 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, | 9324 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, |
| 9309 PropertyInducingElement, expectedElement); | 9325 PropertyInducingElement, expectedElement); |
| 9310 expectedElement = (expectedElement as PropertyInducingElement).getter; | 9326 expectedElement = (expectedElement as PropertyInducingElement).getter; |
| 9311 Element actualElement = | 9327 Element actualElement = |
| 9312 (declarations[1] as ClassDeclaration).metadata[0].name.staticElement; | 9328 (declarations[1] as ClassDeclaration).metadata[0].name.staticElement; |
| 9313 expect(actualElement, same(expectedElement)); | 9329 expect(actualElement, same(expectedElement)); |
| 9314 } | 9330 } |
| 9315 | 9331 |
| 9316 void test_metadata_field() { | 9332 void test_metadata_field() { |
| 9317 Source source = addSource(r''' | 9333 Source source = addSource(r''' |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9488 expect(aliases, hasLength(1)); | 9504 expect(aliases, hasLength(1)); |
| 9489 List<ElementAnnotation> annotations = aliases[0].metadata; | 9505 List<ElementAnnotation> annotations = aliases[0].metadata; |
| 9490 expect(annotations, hasLength(1)); | 9506 expect(annotations, hasLength(1)); |
| 9491 assertNoErrors(source); | 9507 assertNoErrors(source); |
| 9492 verify([source]); | 9508 verify([source]); |
| 9493 CompilationUnit unit = resolveCompilationUnit(source, library); | 9509 CompilationUnit unit = resolveCompilationUnit(source, library); |
| 9494 NodeList<CompilationUnitMember> declarations = unit.declarations; | 9510 NodeList<CompilationUnitMember> declarations = unit.declarations; |
| 9495 expect(declarations, hasLength(2)); | 9511 expect(declarations, hasLength(2)); |
| 9496 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) | 9512 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) |
| 9497 .variables | 9513 .variables |
| 9498 .variables[0].name.staticElement; | 9514 .variables[0] |
| 9515 .name |
| 9516 .staticElement; |
| 9499 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, | 9517 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, |
| 9500 PropertyInducingElement, expectedElement); | 9518 PropertyInducingElement, expectedElement); |
| 9501 expectedElement = (expectedElement as PropertyInducingElement).getter; | 9519 expectedElement = (expectedElement as PropertyInducingElement).getter; |
| 9502 Element actualElement = | 9520 Element actualElement = |
| 9503 (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement; | 9521 (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement; |
| 9504 expect(actualElement, same(expectedElement)); | 9522 expect(actualElement, same(expectedElement)); |
| 9505 } | 9523 } |
| 9506 | 9524 |
| 9507 void test_method_fromMixin() { | 9525 void test_method_fromMixin() { |
| 9508 Source source = addSource(r''' | 9526 Source source = addSource(r''' |
| (...skipping 2202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11711 } | 11729 } |
| 11712 | 11730 |
| 11713 /** | 11731 /** |
| 11714 * Strong mode static analyzer downwards inference tests | 11732 * Strong mode static analyzer downwards inference tests |
| 11715 */ | 11733 */ |
| 11716 @reflectiveTest | 11734 @reflectiveTest |
| 11717 class StrongModeDownwardsInferenceTest extends ResolverTestCase { | 11735 class StrongModeDownwardsInferenceTest extends ResolverTestCase { |
| 11718 TypeAssertions _assertions; | 11736 TypeAssertions _assertions; |
| 11719 AsserterBuilder<Element, DartType> _hasElement; | 11737 AsserterBuilder<Element, DartType> _hasElement; |
| 11720 AsserterBuilder<DartType, DartType> _isType; | 11738 AsserterBuilder<DartType, DartType> _isType; |
| 11721 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, | 11739 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType> |
| 11722 DartType> _isFunction2Of; | 11740 _isFunction2Of; |
| 11723 AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, | 11741 AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, DartType> |
| 11724 DartType> _isInstantiationOf; | 11742 _isInstantiationOf; |
| 11725 Asserter<DartType> _isInt; | 11743 Asserter<DartType> _isInt; |
| 11726 Asserter<DartType> _isNum; | 11744 Asserter<DartType> _isNum; |
| 11727 Asserter<DartType> _isString; | 11745 Asserter<DartType> _isString; |
| 11728 Asserter<DartType> _isDynamic; | 11746 Asserter<DartType> _isDynamic; |
| 11729 AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf; | 11747 AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf; |
| 11730 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, | 11748 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, InterfaceType> |
| 11731 InterfaceType> _isMapOf; | 11749 _isMapOf; |
| 11732 | 11750 |
| 11733 @override | 11751 @override |
| 11734 void setUp() { | 11752 void setUp() { |
| 11735 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); | 11753 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); |
| 11736 options.strongMode = true; | 11754 options.strongMode = true; |
| 11737 resetWithOptions(options); | 11755 resetWithOptions(options); |
| 11738 _assertions = new TypeAssertions(typeProvider); | 11756 _assertions = new TypeAssertions(typeProvider); |
| 11739 _isType = _assertions.isType; | 11757 _isType = _assertions.isType; |
| 11740 _hasElement = _assertions.hasElement; | 11758 _hasElement = _assertions.hasElement; |
| 11741 _isInstantiationOf = _assertions.isInstantiationOf; | 11759 _isInstantiationOf = _assertions.isInstantiationOf; |
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12165 expect(functionReturnValue(4).staticType, typeProvider.stringType); | 12183 expect(functionReturnValue(4).staticType, typeProvider.stringType); |
| 12166 } | 12184 } |
| 12167 | 12185 |
| 12168 void test_inference_hints() { | 12186 void test_inference_hints() { |
| 12169 Source source = addSource(r''' | 12187 Source source = addSource(r''' |
| 12170 void main () { | 12188 void main () { |
| 12171 var x = 3; | 12189 var x = 3; |
| 12172 List<int> l0 = []; | 12190 List<int> l0 = []; |
| 12173 } | 12191 } |
| 12174 '''); | 12192 '''); |
| 12175 LibraryElement library = resolve2(source); | 12193 resolve2(source); |
| 12176 assertNoErrors(source); | 12194 assertNoErrors(source); |
| 12177 verify([source]); | 12195 verify([source]); |
| 12178 } | 12196 } |
| 12179 | 12197 |
| 12180 void test_instanceCreation() { | 12198 void test_instanceCreation() { |
| 12181 String code = r''' | 12199 String code = r''' |
| 12182 class A<S, T> { | 12200 class A<S, T> { |
| 12183 S x; | 12201 S x; |
| 12184 T y; | 12202 T y; |
| 12185 A(this.x, this.y); | 12203 A(this.x, this.y); |
| (...skipping 1766 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13952 import 'lib.dart'; | 13970 import 'lib.dart'; |
| 13953 class B extends A { | 13971 class B extends A { |
| 13954 m() { | 13972 m() { |
| 13955 return v; // marker | 13973 return v; // marker |
| 13956 } | 13974 } |
| 13957 }'''; | 13975 }'''; |
| 13958 _assertTypeOfMarkedExpression( | 13976 _assertTypeOfMarkedExpression( |
| 13959 code, typeProvider.dynamicType, typeProvider.intType); | 13977 code, typeProvider.dynamicType, typeProvider.intType); |
| 13960 } | 13978 } |
| 13961 | 13979 |
| 13962 void test_finalPropertyInducingVariable_classMember_instance_propagatedTarget(
) { | 13980 void |
| 13981 test_finalPropertyInducingVariable_classMember_instance_propagatedTarget()
{ |
| 13963 addNamedSource( | 13982 addNamedSource( |
| 13964 "/lib.dart", | 13983 "/lib.dart", |
| 13965 r''' | 13984 r''' |
| 13966 class A { | 13985 class A { |
| 13967 final v = 0; | 13986 final v = 0; |
| 13968 }'''); | 13987 }'''); |
| 13969 String code = r''' | 13988 String code = r''' |
| 13970 import 'lib.dart'; | 13989 import 'lib.dart'; |
| 13971 f(p) { | 13990 f(p) { |
| 13972 if (p is A) { | 13991 if (p is A) { |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14171 FormalParameter kParameter = EngineTestCase.findNode( | 14190 FormalParameter kParameter = EngineTestCase.findNode( |
| 14172 unit, code, "k, ", (node) => node is SimpleFormalParameter); | 14191 unit, code, "k, ", (node) => node is SimpleFormalParameter); |
| 14173 expect(kParameter.identifier.propagatedType, same(intType)); | 14192 expect(kParameter.identifier.propagatedType, same(intType)); |
| 14174 // v | 14193 // v |
| 14175 DartType stringType = typeProvider.stringType; | 14194 DartType stringType = typeProvider.stringType; |
| 14176 FormalParameter vParameter = EngineTestCase.findNode( | 14195 FormalParameter vParameter = EngineTestCase.findNode( |
| 14177 unit, code, "v)", (node) => node is SimpleFormalParameter); | 14196 unit, code, "v)", (node) => node is SimpleFormalParameter); |
| 14178 expect(vParameter.identifier.propagatedType, same(stringType)); | 14197 expect(vParameter.identifier.propagatedType, same(stringType)); |
| 14179 } | 14198 } |
| 14180 | 14199 |
| 14181 void test_functionExpression_asInvocationArgument_functionExpressionInvocation
() { | 14200 void |
| 14201 test_functionExpression_asInvocationArgument_functionExpressionInvocation(
) { |
| 14182 String code = r''' | 14202 String code = r''' |
| 14183 main() { | 14203 main() { |
| 14184 (f(String value)) {} ((v) { | 14204 (f(String value)) {} ((v) { |
| 14185 v; | 14205 v; |
| 14186 }); | 14206 }); |
| 14187 }'''; | 14207 }'''; |
| 14188 Source source = addSource(code); | 14208 Source source = addSource(code); |
| 14189 LibraryElement library = resolve2(source); | 14209 LibraryElement library = resolve2(source); |
| 14190 assertNoErrors(source); | 14210 assertNoErrors(source); |
| 14191 verify([source]); | 14211 verify([source]); |
| (...skipping 1857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16049 | 16069 |
| 16050 void _resolveTestUnit(String code) { | 16070 void _resolveTestUnit(String code) { |
| 16051 testCode = code; | 16071 testCode = code; |
| 16052 testSource = addSource(testCode); | 16072 testSource = addSource(testCode); |
| 16053 LibraryElement library = resolve2(testSource); | 16073 LibraryElement library = resolve2(testSource); |
| 16054 assertNoErrors(testSource); | 16074 assertNoErrors(testSource); |
| 16055 verify([testSource]); | 16075 verify([testSource]); |
| 16056 testUnit = resolveCompilationUnit(testSource, library); | 16076 testUnit = resolveCompilationUnit(testSource, library); |
| 16057 } | 16077 } |
| 16058 } | 16078 } |
| OLD | NEW |