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

Side by Side Diff: pkg/analyzer/test/generated/resolver_test.dart

Issue 1526243002: Introduce code to resynthesize element models from summaries. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 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 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 futureElement.constructors = <ConstructorElement>[futureConstructor]; 190 futureElement.constructors = <ConstructorElement>[futureConstructor];
191 // Future then(onValue(T value), { Function onError }); 191 // Future then(onValue(T value), { Function onError });
192 TypeDefiningElement futureThenR = DynamicElementImpl.instance; 192 TypeDefiningElement futureThenR = DynamicElementImpl.instance;
193 if (context.analysisOptions.strongMode) { 193 if (context.analysisOptions.strongMode) {
194 futureThenR = ElementFactory.typeParameterWithType('R'); 194 futureThenR = ElementFactory.typeParameterWithType('R');
195 } 195 }
196 FunctionElementImpl thenOnValue = ElementFactory.functionElement3( 196 FunctionElementImpl thenOnValue = ElementFactory.functionElement3(
197 'onValue', futureThenR, [futureElement.typeParameters[0]], null); 197 'onValue', futureThenR, [futureElement.typeParameters[0]], null);
198 198
199 DartType futureRType = futureElement.type.substitute4([futureThenR.type]); 199 DartType futureRType = futureElement.type.substitute4([futureThenR.type]);
200 MethodElementImpl thenMethod = ElementFactory 200 MethodElementImpl thenMethod = ElementFactory.methodElementWithParameters(
201 .methodElementWithParameters(futureElement, "then", futureRType, [ 201 futureElement, "then", futureRType, [
202 ElementFactory.requiredParameter2("onValue", thenOnValue.type), 202 ElementFactory.requiredParameter2("onValue", thenOnValue.type),
203 ElementFactory.namedParameter2("onError", provider.functionType) 203 ElementFactory.namedParameter2("onError", provider.functionType)
204 ]); 204 ]);
205 if (!futureThenR.type.isDynamic) { 205 if (!futureThenR.type.isDynamic) {
206 thenMethod.typeParameters = [futureThenR]; 206 thenMethod.typeParameters = [futureThenR];
207 } 207 }
208 thenOnValue.enclosingElement = thenMethod; 208 thenOnValue.enclosingElement = thenMethod;
209 thenOnValue.type = new FunctionTypeImpl(thenOnValue); 209 thenOnValue.type = new FunctionTypeImpl(thenOnValue);
210 (thenMethod.parameters[0] as ParameterElementImpl).type = thenOnValue.type; 210 (thenMethod.parameters[0] as ParameterElementImpl).type = thenOnValue.type;
211 thenMethod.type = new FunctionTypeImpl(thenMethod); 211 thenMethod.type = new FunctionTypeImpl(thenMethod);
(...skipping 30 matching lines...) Expand all
242 242
243 FunctionElementImpl listenParamFunction = parameterTypes[0].element; 243 FunctionElementImpl listenParamFunction = parameterTypes[0].element;
244 listenParamFunction.enclosingElement = listenMethod; 244 listenParamFunction.enclosingElement = listenMethod;
245 listenParamFunction.type = new FunctionTypeImpl(listenParamFunction); 245 listenParamFunction.type = new FunctionTypeImpl(listenParamFunction);
246 ParameterElementImpl listenParam = listenMethod.parameters[0]; 246 ParameterElementImpl listenParam = listenMethod.parameters[0];
247 listenParam.type = listenParamFunction.type; 247 listenParam.type = listenParamFunction.type;
248 248
249 asyncUnit.types = <ClassElement>[ 249 asyncUnit.types = <ClassElement>[
250 completerElement, 250 completerElement,
251 futureElement, 251 futureElement,
252 streamElement 252 streamElement,
253 streamSubscriptionElement
253 ]; 254 ];
254 LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode( 255 LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode(
255 coreContext, AstFactory.libraryIdentifier2(["dart", "async"])); 256 coreContext, AstFactory.libraryIdentifier2(["dart", "async"]));
256 asyncLibrary.definingCompilationUnit = asyncUnit; 257 asyncLibrary.definingCompilationUnit = asyncUnit;
257 // 258 //
258 // dart:html 259 // dart:html
259 // 260 //
260 CompilationUnitElementImpl htmlUnit = 261 CompilationUnitElementImpl htmlUnit =
261 new CompilationUnitElementImpl("html_dartium.dart"); 262 new CompilationUnitElementImpl("html_dartium.dart");
262 Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML); 263 Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML);
(...skipping 16 matching lines...) Expand all
279 ElementFactory.getterElement("context2D", false, context2dElement.type) 280 ElementFactory.getterElement("context2D", false, context2dElement.type)
280 ]; 281 ];
281 canvasElement.fields = canvasElement.accessors 282 canvasElement.fields = canvasElement.accessors
282 .map((PropertyAccessorElement accessor) => accessor.variable) 283 .map((PropertyAccessorElement accessor) => accessor.variable)
283 .toList(); 284 .toList();
284 ClassElementImpl documentElement = 285 ClassElementImpl documentElement =
285 ElementFactory.classElement("Document", elementType); 286 ElementFactory.classElement("Document", elementType);
286 ClassElementImpl htmlDocumentElement = 287 ClassElementImpl htmlDocumentElement =
287 ElementFactory.classElement("HtmlDocument", documentElement.type); 288 ElementFactory.classElement("HtmlDocument", documentElement.type);
288 htmlDocumentElement.methods = <MethodElement>[ 289 htmlDocumentElement.methods = <MethodElement>[
289 ElementFactory 290 ElementFactory.methodElement(
290 .methodElement("query", elementType, <DartType>[provider.stringType]) 291 "query", elementType, <DartType>[provider.stringType])
291 ]; 292 ];
292 htmlUnit.types = <ClassElement>[ 293 htmlUnit.types = <ClassElement>[
293 ElementFactory.classElement("AnchorElement", elementType), 294 ElementFactory.classElement("AnchorElement", elementType),
294 ElementFactory.classElement("BodyElement", elementType), 295 ElementFactory.classElement("BodyElement", elementType),
295 ElementFactory.classElement("ButtonElement", elementType), 296 ElementFactory.classElement("ButtonElement", elementType),
296 canvasElement, 297 canvasElement,
297 contextElement, 298 contextElement,
298 context2dElement, 299 context2dElement,
299 ElementFactory.classElement("DivElement", elementType), 300 ElementFactory.classElement("DivElement", elementType),
300 documentElement, 301 documentElement,
301 elementElement, 302 elementElement,
302 htmlDocumentElement, 303 htmlDocumentElement,
303 ElementFactory.classElement("InputElement", elementType), 304 ElementFactory.classElement("InputElement", elementType),
304 ElementFactory.classElement("SelectElement", elementType) 305 ElementFactory.classElement("SelectElement", elementType)
305 ]; 306 ];
306 htmlUnit.functions = <FunctionElement>[ 307 htmlUnit.functions = <FunctionElement>[
307 ElementFactory.functionElement3("query", elementElement, 308 ElementFactory.functionElement3("query", elementElement,
308 <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST) 309 <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST)
309 ]; 310 ];
310 TopLevelVariableElementImpl document = 311 TopLevelVariableElementImpl document = ElementFactory
311 ElementFactory.topLevelVariableElement3( 312 .topLevelVariableElement3(
312 "document", false, true, htmlDocumentElement.type); 313 "document", false, true, htmlDocumentElement.type);
313 htmlUnit.topLevelVariables = <TopLevelVariableElement>[document]; 314 htmlUnit.topLevelVariables = <TopLevelVariableElement>[document];
314 htmlUnit.accessors = <PropertyAccessorElement>[document.getter]; 315 htmlUnit.accessors = <PropertyAccessorElement>[document.getter];
315 LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode( 316 LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode(
316 coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); 317 coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"]));
317 htmlLibrary.definingCompilationUnit = htmlUnit; 318 htmlLibrary.definingCompilationUnit = htmlUnit;
318 // 319 //
319 // dart:math 320 // dart:math
320 // 321 //
321 CompilationUnitElementImpl mathUnit = 322 CompilationUnitElementImpl mathUnit =
(...skipping 4778 matching lines...) Expand 10 before | Expand all | Expand 10 after
5100 5101
5101 void test_getMapOfMembersInheritedFromInterfaces_implicitExtends() { 5102 void test_getMapOfMembersInheritedFromInterfaces_implicitExtends() {
5102 // class A {} 5103 // class A {}
5103 ClassElementImpl classA = ElementFactory.classElement2("A"); 5104 ClassElementImpl classA = ElementFactory.classElement2("A");
5104 MemberMap mapA = 5105 MemberMap mapA =
5105 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5106 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5106 expect(mapA.size, _numOfMembersInObject); 5107 expect(mapA.size, _numOfMembersInObject);
5107 _assertNoErrors(classA); 5108 _assertNoErrors(classA);
5108 } 5109 }
5109 5110
5110 void 5111 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance _getter_method() {
5111 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_ getter_method() {
5112 // class I1 { int m(); } 5112 // class I1 { int m(); }
5113 // class I2 { int get m; } 5113 // class I2 { int get m; }
5114 // class A implements I2, I1 {} 5114 // class A implements I2, I1 {}
5115 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5115 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5116 String methodName = "m"; 5116 String methodName = "m";
5117 MethodElement methodM = 5117 MethodElement methodM =
5118 ElementFactory.methodElement(methodName, _typeProvider.intType); 5118 ElementFactory.methodElement(methodName, _typeProvider.intType);
5119 classI1.methods = <MethodElement>[methodM]; 5119 classI1.methods = <MethodElement>[methodM];
5120 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5120 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5121 PropertyAccessorElement getter = 5121 PropertyAccessorElement getter =
5122 ElementFactory.getterElement(methodName, false, _typeProvider.intType); 5122 ElementFactory.getterElement(methodName, false, _typeProvider.intType);
5123 classI2.accessors = <PropertyAccessorElement>[getter]; 5123 classI2.accessors = <PropertyAccessorElement>[getter];
5124 ClassElementImpl classA = ElementFactory.classElement2("A"); 5124 ClassElementImpl classA = ElementFactory.classElement2("A");
5125 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; 5125 classA.interfaces = <InterfaceType>[classI2.type, classI1.type];
5126 MemberMap mapA = 5126 MemberMap mapA =
5127 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5127 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5128 expect(mapA.size, _numOfMembersInObject); 5128 expect(mapA.size, _numOfMembersInObject);
5129 expect(mapA.get(methodName), isNull); 5129 expect(mapA.get(methodName), isNull);
5130 _assertErrors(classA, 5130 _assertErrors(classA,
5131 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); 5131 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
5132 } 5132 }
5133 5133
5134 void 5134 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance _int_str() {
5135 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_ int_str() {
5136 // class I1 { int m(); } 5135 // class I1 { int m(); }
5137 // class I2 { String m(); } 5136 // class I2 { String m(); }
5138 // class A implements I1, I2 {} 5137 // class A implements I1, I2 {}
5139 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5138 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5140 String methodName = "m"; 5139 String methodName = "m";
5141 MethodElement methodM1 = 5140 MethodElement methodM1 =
5142 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); 5141 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
5143 classI1.methods = <MethodElement>[methodM1]; 5142 classI1.methods = <MethodElement>[methodM1];
5144 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5143 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5145 MethodElement methodM2 = ElementFactory 5144 MethodElement methodM2 = ElementFactory.methodElement(
5146 .methodElement(methodName, null, [_typeProvider.stringType]); 5145 methodName, null, [_typeProvider.stringType]);
5147 classI2.methods = <MethodElement>[methodM2]; 5146 classI2.methods = <MethodElement>[methodM2];
5148 ClassElementImpl classA = ElementFactory.classElement2("A"); 5147 ClassElementImpl classA = ElementFactory.classElement2("A");
5149 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5148 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5150 MemberMap mapA = 5149 MemberMap mapA =
5151 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5150 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5152 expect(mapA.size, _numOfMembersInObject); 5151 expect(mapA.size, _numOfMembersInObject);
5153 expect(mapA.get(methodName), isNull); 5152 expect(mapA.get(methodName), isNull);
5154 _assertErrors( 5153 _assertErrors(
5155 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); 5154 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
5156 } 5155 }
5157 5156
5158 void 5157 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance _method_getter() {
5159 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_ method_getter() {
5160 // class I1 { int m(); } 5158 // class I1 { int m(); }
5161 // class I2 { int get m; } 5159 // class I2 { int get m; }
5162 // class A implements I1, I2 {} 5160 // class A implements I1, I2 {}
5163 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5161 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5164 String methodName = "m"; 5162 String methodName = "m";
5165 MethodElement methodM = 5163 MethodElement methodM =
5166 ElementFactory.methodElement(methodName, _typeProvider.intType); 5164 ElementFactory.methodElement(methodName, _typeProvider.intType);
5167 classI1.methods = <MethodElement>[methodM]; 5165 classI1.methods = <MethodElement>[methodM];
5168 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5166 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5169 PropertyAccessorElement getter = 5167 PropertyAccessorElement getter =
5170 ElementFactory.getterElement(methodName, false, _typeProvider.intType); 5168 ElementFactory.getterElement(methodName, false, _typeProvider.intType);
5171 classI2.accessors = <PropertyAccessorElement>[getter]; 5169 classI2.accessors = <PropertyAccessorElement>[getter];
5172 ClassElementImpl classA = ElementFactory.classElement2("A"); 5170 ClassElementImpl classA = ElementFactory.classElement2("A");
5173 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5171 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5174 MemberMap mapA = 5172 MemberMap mapA =
5175 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5173 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5176 expect(mapA.size, _numOfMembersInObject); 5174 expect(mapA.size, _numOfMembersInObject);
5177 expect(mapA.get(methodName), isNull); 5175 expect(mapA.get(methodName), isNull);
5178 _assertErrors(classA, 5176 _assertErrors(classA,
5179 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); 5177 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
5180 } 5178 }
5181 5179
5182 void 5180 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance _numOfRequiredParams() {
5183 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_ numOfRequiredParams() {
5184 // class I1 { dynamic m(int, [int]); } 5181 // class I1 { dynamic m(int, [int]); }
5185 // class I2 { dynamic m(int, int, int); } 5182 // class I2 { dynamic m(int, int, int); }
5186 // class A implements I1, I2 {} 5183 // class A implements I1, I2 {}
5187 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5184 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5188 String methodName = "m"; 5185 String methodName = "m";
5189 MethodElementImpl methodM1 = 5186 MethodElementImpl methodM1 =
5190 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); 5187 ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
5191 ParameterElementImpl parameter1 = 5188 ParameterElementImpl parameter1 =
5192 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); 5189 new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
5193 parameter1.type = _typeProvider.intType; 5190 parameter1.type = _typeProvider.intType;
(...skipping 28 matching lines...) Expand all
5222 ClassElementImpl classA = ElementFactory.classElement2("A"); 5219 ClassElementImpl classA = ElementFactory.classElement2("A");
5223 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5220 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5224 MemberMap mapA = 5221 MemberMap mapA =
5225 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5222 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5226 expect(mapA.size, _numOfMembersInObject); 5223 expect(mapA.size, _numOfMembersInObject);
5227 expect(mapA.get(methodName), isNull); 5224 expect(mapA.get(methodName), isNull);
5228 _assertErrors( 5225 _assertErrors(
5229 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]); 5226 classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
5230 } 5227 }
5231 5228
5232 void 5229 void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance _str_int() {
5233 test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_ str_int() {
5234 // class I1 { int m(); } 5230 // class I1 { int m(); }
5235 // class I2 { String m(); } 5231 // class I2 { String m(); }
5236 // class A implements I2, I1 {} 5232 // class A implements I2, I1 {}
5237 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5233 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5238 String methodName = "m"; 5234 String methodName = "m";
5239 MethodElement methodM1 = ElementFactory 5235 MethodElement methodM1 = ElementFactory.methodElement(
5240 .methodElement(methodName, null, [_typeProvider.stringType]); 5236 methodName, null, [_typeProvider.stringType]);
5241 classI1.methods = <MethodElement>[methodM1]; 5237 classI1.methods = <MethodElement>[methodM1];
5242 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5238 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5243 MethodElement methodM2 = 5239 MethodElement methodM2 =
5244 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]); 5240 ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
5245 classI2.methods = <MethodElement>[methodM2]; 5241 classI2.methods = <MethodElement>[methodM2];
5246 ClassElementImpl classA = ElementFactory.classElement2("A"); 5242 ClassElementImpl classA = ElementFactory.classElement2("A");
5247 classA.interfaces = <InterfaceType>[classI2.type, classI1.type]; 5243 classA.interfaces = <InterfaceType>[classI2.type, classI1.type];
5248 MemberMap mapA = 5244 MemberMap mapA =
5249 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5245 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5250 expect(mapA.size, _numOfMembersInObject); 5246 expect(mapA.size, _numOfMembersInObject);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
5332 ClassElementImpl classA = ElementFactory.classElement2("A"); 5328 ClassElementImpl classA = ElementFactory.classElement2("A");
5333 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5329 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5334 MemberMap mapA = 5330 MemberMap mapA =
5335 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5331 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5336 expect(mapA.size, _numOfMembersInObject + 2); 5332 expect(mapA.size, _numOfMembersInObject + 2);
5337 expect(mapA.get(methodName1), same(methodM1)); 5333 expect(mapA.get(methodName1), same(methodM1));
5338 expect(mapA.get(methodName2), same(methodM2)); 5334 expect(mapA.get(methodName2), same(methodM2));
5339 _assertNoErrors(classA); 5335 _assertNoErrors(classA);
5340 } 5336 }
5341 5337
5342 void 5338 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_gett ers() {
5343 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_gette rs() {
5344 // class I1 { int get g; } 5339 // class I1 { int get g; }
5345 // class I2 { num get g; } 5340 // class I2 { num get g; }
5346 // class A implements I1, I2 {} 5341 // class A implements I1, I2 {}
5347 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5342 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5348 String accessorName = "g"; 5343 String accessorName = "g";
5349 PropertyAccessorElement getter1 = ElementFactory.getterElement( 5344 PropertyAccessorElement getter1 = ElementFactory.getterElement(
5350 accessorName, false, _typeProvider.intType); 5345 accessorName, false, _typeProvider.intType);
5351 classI1.accessors = <PropertyAccessorElement>[getter1]; 5346 classI1.accessors = <PropertyAccessorElement>[getter1];
5352 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5347 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5353 PropertyAccessorElement getter2 = ElementFactory.getterElement( 5348 PropertyAccessorElement getter2 = ElementFactory.getterElement(
5354 accessorName, false, _typeProvider.numType); 5349 accessorName, false, _typeProvider.numType);
5355 classI2.accessors = <PropertyAccessorElement>[getter2]; 5350 classI2.accessors = <PropertyAccessorElement>[getter2];
5356 ClassElementImpl classA = ElementFactory.classElement2("A"); 5351 ClassElementImpl classA = ElementFactory.classElement2("A");
5357 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5352 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5358 MemberMap mapA = 5353 MemberMap mapA =
5359 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5354 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5360 expect(mapA.size, _numOfMembersInObject + 1); 5355 expect(mapA.size, _numOfMembersInObject + 1);
5361 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( 5356 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement(
5362 accessorName, false, _typeProvider.dynamicType); 5357 accessorName, false, _typeProvider.dynamicType);
5363 expect(mapA.get(accessorName).type, syntheticAccessor.type); 5358 expect(mapA.get(accessorName).type, syntheticAccessor.type);
5364 _assertNoErrors(classA); 5359 _assertNoErrors(classA);
5365 } 5360 }
5366 5361
5367 void 5362 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_meth ods() {
5368 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_metho ds() {
5369 // class I1 { dynamic m(int); } 5363 // class I1 { dynamic m(int); }
5370 // class I2 { dynamic m(num); } 5364 // class I2 { dynamic m(num); }
5371 // class A implements I1, I2 {} 5365 // class A implements I1, I2 {}
5372 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5366 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5373 String methodName = "m"; 5367 String methodName = "m";
5374 MethodElementImpl methodM1 = 5368 MethodElementImpl methodM1 =
5375 ElementFactory.methodElement(methodName, _typeProvider.dynamicType); 5369 ElementFactory.methodElement(methodName, _typeProvider.dynamicType);
5376 ParameterElementImpl parameter1 = 5370 ParameterElementImpl parameter1 =
5377 new ParameterElementImpl.forNode(AstFactory.identifier3("a0")); 5371 new ParameterElementImpl.forNode(AstFactory.identifier3("a0"));
5378 parameter1.type = _typeProvider.intType; 5372 parameter1.type = _typeProvider.intType;
(...skipping 13 matching lines...) Expand all
5392 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5386 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5393 MemberMap mapA = 5387 MemberMap mapA =
5394 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5388 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5395 expect(mapA.size, _numOfMembersInObject + 1); 5389 expect(mapA.size, _numOfMembersInObject + 1);
5396 MethodElement syntheticMethod = ElementFactory.methodElement( 5390 MethodElement syntheticMethod = ElementFactory.methodElement(
5397 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); 5391 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
5398 expect(mapA.get(methodName).type, syntheticMethod.type); 5392 expect(mapA.get(methodName).type, syntheticMethod.type);
5399 _assertNoErrors(classA); 5393 _assertNoErrors(classA);
5400 } 5394 }
5401 5395
5402 void 5396 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_sett ers() {
5403 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_sette rs() {
5404 // class I1 { set s(int); } 5397 // class I1 { set s(int); }
5405 // class I2 { set s(num); } 5398 // class I2 { set s(num); }
5406 // class A implements I1, I2 {} 5399 // class A implements I1, I2 {}
5407 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5400 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5408 String accessorName = "s"; 5401 String accessorName = "s";
5409 PropertyAccessorElement setter1 = ElementFactory.setterElement( 5402 PropertyAccessorElement setter1 = ElementFactory.setterElement(
5410 accessorName, false, _typeProvider.intType); 5403 accessorName, false, _typeProvider.intType);
5411 classI1.accessors = <PropertyAccessorElement>[setter1]; 5404 classI1.accessors = <PropertyAccessorElement>[setter1];
5412 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5405 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5413 PropertyAccessorElement setter2 = ElementFactory.setterElement( 5406 PropertyAccessorElement setter2 = ElementFactory.setterElement(
5414 accessorName, false, _typeProvider.numType); 5407 accessorName, false, _typeProvider.numType);
5415 classI2.accessors = <PropertyAccessorElement>[setter2]; 5408 classI2.accessors = <PropertyAccessorElement>[setter2];
5416 ClassElementImpl classA = ElementFactory.classElement2("A"); 5409 ClassElementImpl classA = ElementFactory.classElement2("A");
5417 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5410 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5418 MemberMap mapA = 5411 MemberMap mapA =
5419 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5412 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5420 expect(mapA.size, _numOfMembersInObject + 1); 5413 expect(mapA.size, _numOfMembersInObject + 1);
5421 PropertyAccessorElementImpl syntheticAccessor = ElementFactory 5414 PropertyAccessorElementImpl syntheticAccessor = ElementFactory
5422 .setterElement(accessorName, false, _typeProvider.dynamicType); 5415 .setterElement(accessorName, false, _typeProvider.dynamicType);
5423 syntheticAccessor.returnType = _typeProvider.dynamicType; 5416 syntheticAccessor.returnType = _typeProvider.dynamicType;
5424 expect(mapA.get("$accessorName=").type, syntheticAccessor.type); 5417 expect(mapA.get("$accessorName=").type, syntheticAccessor.type);
5425 _assertNoErrors(classA); 5418 _assertNoErrors(classA);
5426 } 5419 }
5427 5420
5428 void 5421 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_gett ers() {
5429 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_gette rs() {
5430 // class A {} 5422 // class A {}
5431 // class B extends A {} 5423 // class B extends A {}
5432 // class C extends B {} 5424 // class C extends B {}
5433 // class I1 { A get g; } 5425 // class I1 { A get g; }
5434 // class I2 { B get g; } 5426 // class I2 { B get g; }
5435 // class I3 { C get g; } 5427 // class I3 { C get g; }
5436 // class D implements I1, I2, I3 {} 5428 // class D implements I1, I2, I3 {}
5437 ClassElementImpl classA = ElementFactory.classElement2("A"); 5429 ClassElementImpl classA = ElementFactory.classElement2("A");
5438 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); 5430 ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
5439 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); 5431 ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
(...skipping 18 matching lines...) Expand all
5458 ]; 5450 ];
5459 MemberMap mapD = 5451 MemberMap mapD =
5460 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); 5452 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
5461 expect(mapD.size, _numOfMembersInObject + 1); 5453 expect(mapD.size, _numOfMembersInObject + 1);
5462 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement( 5454 PropertyAccessorElement syntheticAccessor = ElementFactory.getterElement(
5463 accessorName, false, _typeProvider.dynamicType); 5455 accessorName, false, _typeProvider.dynamicType);
5464 expect(mapD.get(accessorName).type, syntheticAccessor.type); 5456 expect(mapD.get(accessorName).type, syntheticAccessor.type);
5465 _assertNoErrors(classD); 5457 _assertNoErrors(classD);
5466 } 5458 }
5467 5459
5468 void 5460 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_meth ods() {
5469 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_metho ds() {
5470 // class A {} 5461 // class A {}
5471 // class B extends A {} 5462 // class B extends A {}
5472 // class C extends B {} 5463 // class C extends B {}
5473 // class I1 { dynamic m(A a); } 5464 // class I1 { dynamic m(A a); }
5474 // class I2 { dynamic m(B b); } 5465 // class I2 { dynamic m(B b); }
5475 // class I3 { dynamic m(C c); } 5466 // class I3 { dynamic m(C c); }
5476 // class D implements I1, I2, I3 {} 5467 // class D implements I1, I2, I3 {}
5477 ClassElementImpl classA = ElementFactory.classElement2("A"); 5468 ClassElementImpl classA = ElementFactory.classElement2("A");
5478 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); 5469 ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
5479 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); 5470 ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
5513 ]; 5504 ];
5514 MemberMap mapD = 5505 MemberMap mapD =
5515 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); 5506 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
5516 expect(mapD.size, _numOfMembersInObject + 1); 5507 expect(mapD.size, _numOfMembersInObject + 1);
5517 MethodElement syntheticMethod = ElementFactory.methodElement( 5508 MethodElement syntheticMethod = ElementFactory.methodElement(
5518 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]); 5509 methodName, _typeProvider.dynamicType, [_typeProvider.dynamicType]);
5519 expect(mapD.get(methodName).type, syntheticMethod.type); 5510 expect(mapD.get(methodName).type, syntheticMethod.type);
5520 _assertNoErrors(classD); 5511 _assertNoErrors(classD);
5521 } 5512 }
5522 5513
5523 void 5514 void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_sett ers() {
5524 test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_sette rs() {
5525 // class A {} 5515 // class A {}
5526 // class B extends A {} 5516 // class B extends A {}
5527 // class C extends B {} 5517 // class C extends B {}
5528 // class I1 { set s(A); } 5518 // class I1 { set s(A); }
5529 // class I2 { set s(B); } 5519 // class I2 { set s(B); }
5530 // class I3 { set s(C); } 5520 // class I3 { set s(C); }
5531 // class D implements I1, I2, I3 {} 5521 // class D implements I1, I2, I3 {}
5532 ClassElementImpl classA = ElementFactory.classElement2("A"); 5522 ClassElementImpl classA = ElementFactory.classElement2("A");
5533 ClassElementImpl classB = ElementFactory.classElement("B", classA.type); 5523 ClassElementImpl classB = ElementFactory.classElement("B", classA.type);
5534 ClassElementImpl classC = ElementFactory.classElement("C", classB.type); 5524 ClassElementImpl classC = ElementFactory.classElement("C", classB.type);
(...skipping 19 matching lines...) Expand all
5554 MemberMap mapD = 5544 MemberMap mapD =
5555 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD); 5545 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classD);
5556 expect(mapD.size, _numOfMembersInObject + 1); 5546 expect(mapD.size, _numOfMembersInObject + 1);
5557 PropertyAccessorElementImpl syntheticAccessor = ElementFactory 5547 PropertyAccessorElementImpl syntheticAccessor = ElementFactory
5558 .setterElement(accessorName, false, _typeProvider.dynamicType); 5548 .setterElement(accessorName, false, _typeProvider.dynamicType);
5559 syntheticAccessor.returnType = _typeProvider.dynamicType; 5549 syntheticAccessor.returnType = _typeProvider.dynamicType;
5560 expect(mapD.get("$accessorName=").type, syntheticAccessor.type); 5550 expect(mapD.get("$accessorName=").type, syntheticAccessor.type);
5561 _assertNoErrors(classD); 5551 _assertNoErrors(classD);
5562 } 5552 }
5563 5553
5564 void 5554 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() {
5565 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() {
5566 // class I1 { int m(); } 5555 // class I1 { int m(); }
5567 // class I2 { int m([int]); } 5556 // class I2 { int m([int]); }
5568 // class A implements I1, I2 {} 5557 // class A implements I1, I2 {}
5569 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5558 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5570 String methodName = "m"; 5559 String methodName = "m";
5571 MethodElement methodM1 = 5560 MethodElement methodM1 =
5572 ElementFactory.methodElement(methodName, _typeProvider.intType); 5561 ElementFactory.methodElement(methodName, _typeProvider.intType);
5573 classI1.methods = <MethodElement>[methodM1]; 5562 classI1.methods = <MethodElement>[methodM1];
5574 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5563 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
5575 MethodElementImpl methodM2 = 5564 MethodElementImpl methodM2 =
5576 ElementFactory.methodElement(methodName, _typeProvider.intType); 5565 ElementFactory.methodElement(methodName, _typeProvider.intType);
5577 ParameterElementImpl parameter1 = 5566 ParameterElementImpl parameter1 =
5578 new ParameterElementImpl.forNode(AstFactory.identifier3("a1")); 5567 new ParameterElementImpl.forNode(AstFactory.identifier3("a1"));
5579 parameter1.type = _typeProvider.intType; 5568 parameter1.type = _typeProvider.intType;
5580 parameter1.parameterKind = ParameterKind.POSITIONAL; 5569 parameter1.parameterKind = ParameterKind.POSITIONAL;
5581 methodM2.parameters = <ParameterElement>[parameter1]; 5570 methodM2.parameters = <ParameterElement>[parameter1];
5582 classI2.methods = <MethodElement>[methodM2]; 5571 classI2.methods = <MethodElement>[methodM2];
5583 ClassElementImpl classA = ElementFactory.classElement2("A"); 5572 ClassElementImpl classA = ElementFactory.classElement2("A");
5584 classA.interfaces = <InterfaceType>[classI1.type, classI2.type]; 5573 classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
5585 MemberMap mapA = 5574 MemberMap mapA =
5586 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5575 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5587 expect(mapA.size, _numOfMembersInObject + 1); 5576 expect(mapA.size, _numOfMembersInObject + 1);
5588 expect(mapA.get(methodName), same(methodM2)); 5577 expect(mapA.get(methodName), same(methodM2));
5589 _assertNoErrors(classA); 5578 _assertNoErrors(classA);
5590 } 5579 }
5591 5580
5592 void 5581 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() {
5593 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() {
5594 // class I1 { int m(); } 5582 // class I1 { int m(); }
5595 // class I2 { int m([int]); } 5583 // class I2 { int m([int]); }
5596 // class I3 { int m([int, int]); } 5584 // class I3 { int m([int, int]); }
5597 // class A implements I1, I2, I3 {} 5585 // class A implements I1, I2, I3 {}
5598 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5586 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5599 String methodName = "m"; 5587 String methodName = "m";
5600 MethodElementImpl methodM1 = 5588 MethodElementImpl methodM1 =
5601 ElementFactory.methodElement(methodName, _typeProvider.intType); 5589 ElementFactory.methodElement(methodName, _typeProvider.intType);
5602 classI1.methods = <MethodElement>[methodM1]; 5590 classI1.methods = <MethodElement>[methodM1];
5603 ClassElementImpl classI2 = ElementFactory.classElement2("I2"); 5591 ClassElementImpl classI2 = ElementFactory.classElement2("I2");
(...skipping 24 matching lines...) Expand all
5628 classI2.type, 5616 classI2.type,
5629 classI3.type 5617 classI3.type
5630 ]; 5618 ];
5631 MemberMap mapA = 5619 MemberMap mapA =
5632 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA); 5620 _inheritanceManager.getMapOfMembersInheritedFromInterfaces(classA);
5633 expect(mapA.size, _numOfMembersInObject + 1); 5621 expect(mapA.size, _numOfMembersInObject + 1);
5634 expect(mapA.get(methodName), same(methodM3)); 5622 expect(mapA.get(methodName), same(methodM3));
5635 _assertNoErrors(classA); 5623 _assertNoErrors(classA);
5636 } 5624 }
5637 5625
5638 void 5626 void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() {
5639 test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() {
5640 // class I1 { int m(); } 5627 // class I1 { int m(); }
5641 // class I2 { int m(); } 5628 // class I2 { int m(); }
5642 // class I3 { int m([int]); } 5629 // class I3 { int m([int]); }
5643 // class I4 { int m([int, int]); } 5630 // class I4 { int m([int, int]); }
5644 // class A implements I1, I2, I3, I4 {} 5631 // class A implements I1, I2, I3, I4 {}
5645 ClassElementImpl classI1 = ElementFactory.classElement2("I1"); 5632 ClassElementImpl classI1 = ElementFactory.classElement2("I1");
5646 String methodName = "m"; 5633 String methodName = "m";
5647 MethodElement methodM1 = 5634 MethodElement methodM1 =
5648 ElementFactory.methodElement(methodName, _typeProvider.intType); 5635 ElementFactory.methodElement(methodName, _typeProvider.intType);
5649 classI1.methods = <MethodElement>[methodM1]; 5636 classI1.methods = <MethodElement>[methodM1];
(...skipping 3681 matching lines...) Expand 10 before | Expand all | Expand 10 after
9331 expect(classes, hasLength(1)); 9318 expect(classes, hasLength(1));
9332 List<ElementAnnotation> annotations = classes[0].metadata; 9319 List<ElementAnnotation> annotations = classes[0].metadata;
9333 expect(annotations, hasLength(1)); 9320 expect(annotations, hasLength(1));
9334 assertNoErrors(source); 9321 assertNoErrors(source);
9335 verify([source]); 9322 verify([source]);
9336 CompilationUnit unit = resolveCompilationUnit(source, library); 9323 CompilationUnit unit = resolveCompilationUnit(source, library);
9337 NodeList<CompilationUnitMember> declarations = unit.declarations; 9324 NodeList<CompilationUnitMember> declarations = unit.declarations;
9338 expect(declarations, hasLength(2)); 9325 expect(declarations, hasLength(2));
9339 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) 9326 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration)
9340 .variables 9327 .variables
9341 .variables[0] 9328 .variables[0].name.staticElement;
9342 .name
9343 .staticElement;
9344 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, 9329 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement,
9345 PropertyInducingElement, expectedElement); 9330 PropertyInducingElement, expectedElement);
9346 expectedElement = (expectedElement as PropertyInducingElement).getter; 9331 expectedElement = (expectedElement as PropertyInducingElement).getter;
9347 Element actualElement = 9332 Element actualElement =
9348 (declarations[1] as ClassDeclaration).metadata[0].name.staticElement; 9333 (declarations[1] as ClassDeclaration).metadata[0].name.staticElement;
9349 expect(actualElement, same(expectedElement)); 9334 expect(actualElement, same(expectedElement));
9350 } 9335 }
9351 9336
9352 void test_metadata_field() { 9337 void test_metadata_field() {
9353 Source source = addSource(r''' 9338 Source source = addSource(r'''
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
9524 expect(aliases, hasLength(1)); 9509 expect(aliases, hasLength(1));
9525 List<ElementAnnotation> annotations = aliases[0].metadata; 9510 List<ElementAnnotation> annotations = aliases[0].metadata;
9526 expect(annotations, hasLength(1)); 9511 expect(annotations, hasLength(1));
9527 assertNoErrors(source); 9512 assertNoErrors(source);
9528 verify([source]); 9513 verify([source]);
9529 CompilationUnit unit = resolveCompilationUnit(source, library); 9514 CompilationUnit unit = resolveCompilationUnit(source, library);
9530 NodeList<CompilationUnitMember> declarations = unit.declarations; 9515 NodeList<CompilationUnitMember> declarations = unit.declarations;
9531 expect(declarations, hasLength(2)); 9516 expect(declarations, hasLength(2));
9532 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration) 9517 Element expectedElement = (declarations[0] as TopLevelVariableDeclaration)
9533 .variables 9518 .variables
9534 .variables[0] 9519 .variables[0].name.staticElement;
9535 .name
9536 .staticElement;
9537 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement, 9520 EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement,
9538 PropertyInducingElement, expectedElement); 9521 PropertyInducingElement, expectedElement);
9539 expectedElement = (expectedElement as PropertyInducingElement).getter; 9522 expectedElement = (expectedElement as PropertyInducingElement).getter;
9540 Element actualElement = 9523 Element actualElement =
9541 (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement; 9524 (declarations[1] as FunctionTypeAlias).metadata[0].name.staticElement;
9542 expect(actualElement, same(expectedElement)); 9525 expect(actualElement, same(expectedElement));
9543 } 9526 }
9544 9527
9545 void test_method_fromMixin() { 9528 void test_method_fromMixin() {
9546 Source source = addSource(r''' 9529 Source source = addSource(r'''
(...skipping 2202 matching lines...) Expand 10 before | Expand all | Expand 10 after
11749 } 11732 }
11750 11733
11751 /** 11734 /**
11752 * Strong mode static analyzer downwards inference tests 11735 * Strong mode static analyzer downwards inference tests
11753 */ 11736 */
11754 @reflectiveTest 11737 @reflectiveTest
11755 class StrongModeDownwardsInferenceTest extends ResolverTestCase { 11738 class StrongModeDownwardsInferenceTest extends ResolverTestCase {
11756 TypeAssertions _assertions; 11739 TypeAssertions _assertions;
11757 AsserterBuilder<Element, DartType> _hasElement; 11740 AsserterBuilder<Element, DartType> _hasElement;
11758 AsserterBuilder<DartType, DartType> _isType; 11741 AsserterBuilder<DartType, DartType> _isType;
11759 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType> 11742 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>,
11760 _isFunction2Of; 11743 DartType> _isFunction2Of;
11761 AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, DartType> 11744 AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>,
11762 _isInstantiationOf; 11745 DartType> _isInstantiationOf;
11763 Asserter<DartType> _isInt; 11746 Asserter<DartType> _isInt;
11764 Asserter<DartType> _isNum; 11747 Asserter<DartType> _isNum;
11765 Asserter<DartType> _isString; 11748 Asserter<DartType> _isString;
11766 Asserter<DartType> _isDynamic; 11749 Asserter<DartType> _isDynamic;
11767 AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf; 11750 AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf;
11768 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, InterfaceType> 11751 AsserterBuilder2<Asserter<DartType>, Asserter<DartType>,
11769 _isMapOf; 11752 InterfaceType> _isMapOf;
11770 11753
11771 @override 11754 @override
11772 void setUp() { 11755 void setUp() {
11773 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); 11756 AnalysisOptionsImpl options = new AnalysisOptionsImpl();
11774 options.strongMode = true; 11757 options.strongMode = true;
11775 resetWithOptions(options); 11758 resetWithOptions(options);
11776 _assertions = new TypeAssertions(typeProvider); 11759 _assertions = new TypeAssertions(typeProvider);
11777 _isType = _assertions.isType; 11760 _isType = _assertions.isType;
11778 _hasElement = _assertions.hasElement; 11761 _hasElement = _assertions.hasElement;
11779 _isInstantiationOf = _assertions.isInstantiationOf; 11762 _isInstantiationOf = _assertions.isInstantiationOf;
(...skipping 2210 matching lines...) Expand 10 before | Expand all | Expand 10 after
13990 import 'lib.dart'; 13973 import 'lib.dart';
13991 class B extends A { 13974 class B extends A {
13992 m() { 13975 m() {
13993 return v; // marker 13976 return v; // marker
13994 } 13977 }
13995 }'''; 13978 }''';
13996 _assertTypeOfMarkedExpression( 13979 _assertTypeOfMarkedExpression(
13997 code, typeProvider.dynamicType, typeProvider.intType); 13980 code, typeProvider.dynamicType, typeProvider.intType);
13998 } 13981 }
13999 13982
14000 void 13983 void test_finalPropertyInducingVariable_classMember_instance_propagatedTarget( ) {
14001 test_finalPropertyInducingVariable_classMember_instance_propagatedTarget() {
14002 addNamedSource( 13984 addNamedSource(
14003 "/lib.dart", 13985 "/lib.dart",
14004 r''' 13986 r'''
14005 class A { 13987 class A {
14006 final v = 0; 13988 final v = 0;
14007 }'''); 13989 }''');
14008 String code = r''' 13990 String code = r'''
14009 import 'lib.dart'; 13991 import 'lib.dart';
14010 f(p) { 13992 f(p) {
14011 if (p is A) { 13993 if (p is A) {
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
14210 FormalParameter kParameter = EngineTestCase.findNode( 14192 FormalParameter kParameter = EngineTestCase.findNode(
14211 unit, code, "k, ", (node) => node is SimpleFormalParameter); 14193 unit, code, "k, ", (node) => node is SimpleFormalParameter);
14212 expect(kParameter.identifier.propagatedType, same(intType)); 14194 expect(kParameter.identifier.propagatedType, same(intType));
14213 // v 14195 // v
14214 DartType stringType = typeProvider.stringType; 14196 DartType stringType = typeProvider.stringType;
14215 FormalParameter vParameter = EngineTestCase.findNode( 14197 FormalParameter vParameter = EngineTestCase.findNode(
14216 unit, code, "v)", (node) => node is SimpleFormalParameter); 14198 unit, code, "v)", (node) => node is SimpleFormalParameter);
14217 expect(vParameter.identifier.propagatedType, same(stringType)); 14199 expect(vParameter.identifier.propagatedType, same(stringType));
14218 } 14200 }
14219 14201
14220 void 14202 void test_functionExpression_asInvocationArgument_functionExpressionInvocation () {
14221 test_functionExpression_asInvocationArgument_functionExpressionInvocation( ) {
14222 String code = r''' 14203 String code = r'''
14223 main() { 14204 main() {
14224 (f(String value)) {} ((v) { 14205 (f(String value)) {} ((v) {
14225 v; 14206 v;
14226 }); 14207 });
14227 }'''; 14208 }''';
14228 Source source = addSource(code); 14209 Source source = addSource(code);
14229 LibraryElement library = resolve2(source); 14210 LibraryElement library = resolve2(source);
14230 assertNoErrors(source); 14211 assertNoErrors(source);
14231 verify([source]); 14212 verify([source]);
(...skipping 1857 matching lines...) Expand 10 before | Expand all | Expand 10 after
16089 16070
16090 void _resolveTestUnit(String code) { 16071 void _resolveTestUnit(String code) {
16091 testCode = code; 16072 testCode = code;
16092 testSource = addSource(testCode); 16073 testSource = addSource(testCode);
16093 LibraryElement library = resolve2(testSource); 16074 LibraryElement library = resolve2(testSource);
16094 assertNoErrors(testSource); 16075 assertNoErrors(testSource);
16095 verify([testSource]); 16076 verify([testSource]);
16096 testUnit = resolveCompilationUnit(testSource, library); 16077 testUnit = resolveCompilationUnit(testSource, library);
16097 } 16078 }
16098 } 16079 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698