OLD | NEW |
| (Empty) |
1 // This code was auto-generated, is not intended to be edited, and is subject to | |
2 // significant change. Please see the README file for more information. | |
3 library engine.element_test; | |
4 import 'package:analyzer_experimental/src/generated/java_core.dart'; | |
5 import 'package:analyzer_experimental/src/generated/java_engine_io.dart'; | |
6 import 'package:analyzer_experimental/src/generated/java_junit.dart'; | |
7 import 'package:analyzer_experimental/src/generated/source_io.dart'; | |
8 import 'package:analyzer_experimental/src/generated/utilities_dart.dart'; | |
9 import 'package:analyzer_experimental/src/generated/ast.dart'; | |
10 import 'package:analyzer_experimental/src/generated/element.dart'; | |
11 import 'package:analyzer_experimental/src/generated/engine.dart' show AnalysisCo
ntext, AnalysisContextImpl; | |
12 import 'package:unittest/unittest.dart' as _ut; | |
13 import 'test_support.dart'; | |
14 import 'ast_test.dart' show ASTFactory; | |
15 import 'resolver_test.dart' show TestTypeProvider; | |
16 class ElementLocationImplTest extends EngineTestCase { | |
17 void test_create_encoding() { | |
18 String encoding = "a;b;c"; | |
19 ElementLocationImpl location = new ElementLocationImpl.con2(encoding); | |
20 JUnitTestCase.assertEquals(encoding, location.encoding); | |
21 } | |
22 void test_equals_equal() { | |
23 String encoding = "a;b;c"; | |
24 ElementLocationImpl first = new ElementLocationImpl.con2(encoding); | |
25 ElementLocationImpl second = new ElementLocationImpl.con2(encoding); | |
26 JUnitTestCase.assertTrue(first == second); | |
27 } | |
28 void test_equals_equalWithDifferentUriKind() { | |
29 ElementLocationImpl first = new ElementLocationImpl.con2("fa;fb;c"); | |
30 ElementLocationImpl second = new ElementLocationImpl.con2("pa;pb;c"); | |
31 JUnitTestCase.assertTrue(first == second); | |
32 } | |
33 void test_equals_notEqual_differentLengths() { | |
34 ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c"); | |
35 ElementLocationImpl second = new ElementLocationImpl.con2("a;b;c;d"); | |
36 JUnitTestCase.assertFalse(first == second); | |
37 } | |
38 void test_equals_notEqual_notLocation() { | |
39 ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c"); | |
40 JUnitTestCase.assertFalse(first == "a;b;d"); | |
41 } | |
42 void test_equals_notEqual_sameLengths() { | |
43 ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c"); | |
44 ElementLocationImpl second = new ElementLocationImpl.con2("a;b;d"); | |
45 JUnitTestCase.assertFalse(first == second); | |
46 } | |
47 void test_getComponents() { | |
48 String encoding = "a;b;c"; | |
49 ElementLocationImpl location = new ElementLocationImpl.con2(encoding); | |
50 List<String> components = location.components; | |
51 EngineTestCase.assertLength(3, components); | |
52 JUnitTestCase.assertEquals("a", components[0]); | |
53 JUnitTestCase.assertEquals("b", components[1]); | |
54 JUnitTestCase.assertEquals("c", components[2]); | |
55 } | |
56 void test_getEncoding() { | |
57 String encoding = "a;b;c;;d"; | |
58 ElementLocationImpl location = new ElementLocationImpl.con2(encoding); | |
59 JUnitTestCase.assertEquals(encoding, location.encoding); | |
60 } | |
61 void test_hashCode_equal() { | |
62 String encoding = "a;b;c"; | |
63 ElementLocationImpl first = new ElementLocationImpl.con2(encoding); | |
64 ElementLocationImpl second = new ElementLocationImpl.con2(encoding); | |
65 JUnitTestCase.assertTrue(first.hashCode == second.hashCode); | |
66 } | |
67 void test_hashCode_equalWithDifferentUriKind() { | |
68 ElementLocationImpl first = new ElementLocationImpl.con2("fa;fb;c"); | |
69 ElementLocationImpl second = new ElementLocationImpl.con2("pa;pb;c"); | |
70 JUnitTestCase.assertTrue(first.hashCode == second.hashCode); | |
71 } | |
72 static dartSuite() { | |
73 _ut.group('ElementLocationImplTest', () { | |
74 _ut.test('test_create_encoding', () { | |
75 final __test = new ElementLocationImplTest(); | |
76 runJUnitTest(__test, __test.test_create_encoding); | |
77 }); | |
78 _ut.test('test_equals_equal', () { | |
79 final __test = new ElementLocationImplTest(); | |
80 runJUnitTest(__test, __test.test_equals_equal); | |
81 }); | |
82 _ut.test('test_equals_equalWithDifferentUriKind', () { | |
83 final __test = new ElementLocationImplTest(); | |
84 runJUnitTest(__test, __test.test_equals_equalWithDifferentUriKind); | |
85 }); | |
86 _ut.test('test_equals_notEqual_differentLengths', () { | |
87 final __test = new ElementLocationImplTest(); | |
88 runJUnitTest(__test, __test.test_equals_notEqual_differentLengths); | |
89 }); | |
90 _ut.test('test_equals_notEqual_notLocation', () { | |
91 final __test = new ElementLocationImplTest(); | |
92 runJUnitTest(__test, __test.test_equals_notEqual_notLocation); | |
93 }); | |
94 _ut.test('test_equals_notEqual_sameLengths', () { | |
95 final __test = new ElementLocationImplTest(); | |
96 runJUnitTest(__test, __test.test_equals_notEqual_sameLengths); | |
97 }); | |
98 _ut.test('test_getComponents', () { | |
99 final __test = new ElementLocationImplTest(); | |
100 runJUnitTest(__test, __test.test_getComponents); | |
101 }); | |
102 _ut.test('test_getEncoding', () { | |
103 final __test = new ElementLocationImplTest(); | |
104 runJUnitTest(__test, __test.test_getEncoding); | |
105 }); | |
106 _ut.test('test_hashCode_equal', () { | |
107 final __test = new ElementLocationImplTest(); | |
108 runJUnitTest(__test, __test.test_hashCode_equal); | |
109 }); | |
110 _ut.test('test_hashCode_equalWithDifferentUriKind', () { | |
111 final __test = new ElementLocationImplTest(); | |
112 runJUnitTest(__test, __test.test_hashCode_equalWithDifferentUriKind); | |
113 }); | |
114 }); | |
115 } | |
116 } | |
117 class MultiplyDefinedElementImplTest extends EngineTestCase { | |
118 void test_fromElements_conflicting() { | |
119 Element firstElement = ElementFactory.localVariableElement2("xx"); | |
120 Element secondElement = ElementFactory.localVariableElement2("yy"); | |
121 Element result = MultiplyDefinedElementImpl.fromElements(null, firstElement,
secondElement); | |
122 EngineTestCase.assertInstanceOf(MultiplyDefinedElement, result); | |
123 List<Element> elements = ((result as MultiplyDefinedElement)).conflictingEle
ments; | |
124 EngineTestCase.assertLength(2, elements); | |
125 for (int i = 0; i < elements.length; i++) { | |
126 EngineTestCase.assertInstanceOf(LocalVariableElement, elements[i]); | |
127 } | |
128 } | |
129 void test_fromElements_multiple() { | |
130 Element firstElement = ElementFactory.localVariableElement2("xx"); | |
131 Element secondElement = ElementFactory.localVariableElement2("yy"); | |
132 Element thirdElement = ElementFactory.localVariableElement2("zz"); | |
133 Element result = MultiplyDefinedElementImpl.fromElements(null, MultiplyDefin
edElementImpl.fromElements(null, firstElement, secondElement), thirdElement); | |
134 EngineTestCase.assertInstanceOf(MultiplyDefinedElement, result); | |
135 List<Element> elements = ((result as MultiplyDefinedElement)).conflictingEle
ments; | |
136 EngineTestCase.assertLength(3, elements); | |
137 for (int i = 0; i < elements.length; i++) { | |
138 EngineTestCase.assertInstanceOf(LocalVariableElement, elements[i]); | |
139 } | |
140 } | |
141 void test_fromElements_nonConflicting() { | |
142 Element element = ElementFactory.localVariableElement2("xx"); | |
143 JUnitTestCase.assertSame(element, MultiplyDefinedElementImpl.fromElements(nu
ll, element, element)); | |
144 } | |
145 static dartSuite() { | |
146 _ut.group('MultiplyDefinedElementImplTest', () { | |
147 _ut.test('test_fromElements_conflicting', () { | |
148 final __test = new MultiplyDefinedElementImplTest(); | |
149 runJUnitTest(__test, __test.test_fromElements_conflicting); | |
150 }); | |
151 _ut.test('test_fromElements_multiple', () { | |
152 final __test = new MultiplyDefinedElementImplTest(); | |
153 runJUnitTest(__test, __test.test_fromElements_multiple); | |
154 }); | |
155 _ut.test('test_fromElements_nonConflicting', () { | |
156 final __test = new MultiplyDefinedElementImplTest(); | |
157 runJUnitTest(__test, __test.test_fromElements_nonConflicting); | |
158 }); | |
159 }); | |
160 } | |
161 } | |
162 class LibraryElementImplTest extends EngineTestCase { | |
163 void test_creation() { | |
164 JUnitTestCase.assertNotNull(new LibraryElementImpl(createAnalysisContext(),
ASTFactory.libraryIdentifier2(["l"]))); | |
165 } | |
166 void test_getImportedLibraries() { | |
167 AnalysisContext context = createAnalysisContext(); | |
168 LibraryElementImpl library1 = ElementFactory.library(context, "l1"); | |
169 LibraryElementImpl library2 = ElementFactory.library(context, "l2"); | |
170 LibraryElementImpl library3 = ElementFactory.library(context, "l3"); | |
171 LibraryElementImpl library4 = ElementFactory.library(context, "l4"); | |
172 PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier3("a")); | |
173 PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier3("b")); | |
174 List<ImportElementImpl> imports = [ | |
175 ElementFactory.importFor(library2, null, []), | |
176 ElementFactory.importFor(library2, prefixB, []), | |
177 ElementFactory.importFor(library3, null, []), | |
178 ElementFactory.importFor(library3, prefixA, []), | |
179 ElementFactory.importFor(library3, prefixB, []), | |
180 ElementFactory.importFor(library4, prefixA, [])]; | |
181 library1.imports = imports; | |
182 List<LibraryElement> libraries = library1.importedLibraries; | |
183 EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library2, library3,
library4], libraries); | |
184 } | |
185 void test_getPrefixes() { | |
186 AnalysisContext context = createAnalysisContext(); | |
187 LibraryElementImpl library = ElementFactory.library(context, "l1"); | |
188 PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier3("a")); | |
189 PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier3("b")); | |
190 List<ImportElementImpl> imports = [ | |
191 ElementFactory.importFor(ElementFactory.library(context, "l2"), null, []
), | |
192 ElementFactory.importFor(ElementFactory.library(context, "l3"), null, []
), | |
193 ElementFactory.importFor(ElementFactory.library(context, "l4"), prefixA,
[]), | |
194 ElementFactory.importFor(ElementFactory.library(context, "l5"), prefixA,
[]), | |
195 ElementFactory.importFor(ElementFactory.library(context, "l6"), prefixB,
[])]; | |
196 library.imports = imports; | |
197 List<PrefixElement> prefixes = library.prefixes; | |
198 EngineTestCase.assertLength(2, prefixes); | |
199 if (identical(prefixA, prefixes[0])) { | |
200 JUnitTestCase.assertSame(prefixB, prefixes[1]); | |
201 } else { | |
202 JUnitTestCase.assertSame(prefixB, prefixes[0]); | |
203 JUnitTestCase.assertSame(prefixA, prefixes[1]); | |
204 } | |
205 } | |
206 void test_isUpToDate() { | |
207 AnalysisContext context = createAnalysisContext(); | |
208 context.sourceFactory = new SourceFactory.con2([]); | |
209 LibraryElement library = ElementFactory.library(context, "foo"); | |
210 context.sourceFactory.setContents(library.definingCompilationUnit.source, "s
dfsdff"); | |
211 JUnitTestCase.assertFalse(library.isUpToDate2(0)); | |
212 JUnitTestCase.assertTrue(library.isUpToDate2(JavaSystem.currentTimeMillis()
+ 1000)); | |
213 } | |
214 void test_setImports() { | |
215 AnalysisContext context = createAnalysisContext(); | |
216 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr
aryIdentifier2(["l1"])); | |
217 List<ImportElementImpl> expectedImports = [ | |
218 ElementFactory.importFor(ElementFactory.library(context, "l2"), null, []
), | |
219 ElementFactory.importFor(ElementFactory.library(context, "l3"), null, []
)]; | |
220 library.imports = expectedImports; | |
221 List<ImportElement> actualImports = library.imports; | |
222 EngineTestCase.assertLength(expectedImports.length, actualImports); | |
223 for (int i = 0; i < actualImports.length; i++) { | |
224 JUnitTestCase.assertSame(expectedImports[i], actualImports[i]); | |
225 } | |
226 } | |
227 static dartSuite() { | |
228 _ut.group('LibraryElementImplTest', () { | |
229 _ut.test('test_creation', () { | |
230 final __test = new LibraryElementImplTest(); | |
231 runJUnitTest(__test, __test.test_creation); | |
232 }); | |
233 _ut.test('test_getImportedLibraries', () { | |
234 final __test = new LibraryElementImplTest(); | |
235 runJUnitTest(__test, __test.test_getImportedLibraries); | |
236 }); | |
237 _ut.test('test_getPrefixes', () { | |
238 final __test = new LibraryElementImplTest(); | |
239 runJUnitTest(__test, __test.test_getPrefixes); | |
240 }); | |
241 _ut.test('test_isUpToDate', () { | |
242 final __test = new LibraryElementImplTest(); | |
243 runJUnitTest(__test, __test.test_isUpToDate); | |
244 }); | |
245 _ut.test('test_setImports', () { | |
246 final __test = new LibraryElementImplTest(); | |
247 runJUnitTest(__test, __test.test_setImports); | |
248 }); | |
249 }); | |
250 } | |
251 } | |
252 class TypeParameterTypeImplTest extends EngineTestCase { | |
253 void test_creation() { | |
254 JUnitTestCase.assertNotNull(new TypeParameterTypeImpl(new TypeParameterEleme
ntImpl(ASTFactory.identifier3("E")))); | |
255 } | |
256 void test_getElement() { | |
257 TypeParameterElementImpl element = new TypeParameterElementImpl(ASTFactory.i
dentifier3("E")); | |
258 TypeParameterTypeImpl type = new TypeParameterTypeImpl(element); | |
259 JUnitTestCase.assertEquals(element, type.element); | |
260 } | |
261 void test_isMoreSpecificThan_typeArguments_bottom() { | |
262 TypeParameterElementImpl element = new TypeParameterElementImpl(ASTFactory.i
dentifier3("E")); | |
263 TypeParameterTypeImpl type = new TypeParameterTypeImpl(element); | |
264 JUnitTestCase.assertTrue(type.isMoreSpecificThan(BottomTypeImpl.instance)); | |
265 } | |
266 void test_isMoreSpecificThan_typeArguments_dynamic() { | |
267 TypeParameterElementImpl element = new TypeParameterElementImpl(ASTFactory.i
dentifier3("E")); | |
268 TypeParameterTypeImpl type = new TypeParameterTypeImpl(element); | |
269 JUnitTestCase.assertTrue(type.isMoreSpecificThan(DynamicTypeImpl.instance)); | |
270 } | |
271 void test_isMoreSpecificThan_typeArguments_object() { | |
272 TypeParameterElementImpl element = new TypeParameterElementImpl(ASTFactory.i
dentifier3("E")); | |
273 TypeParameterTypeImpl type = new TypeParameterTypeImpl(element); | |
274 JUnitTestCase.assertTrue(type.isMoreSpecificThan(ElementFactory.object.type)
); | |
275 } | |
276 void test_isMoreSpecificThan_typeArguments_resursive() { | |
277 ClassElementImpl classS = ElementFactory.classElement2("A", []); | |
278 TypeParameterElementImpl typeParameterU = new TypeParameterElementImpl(ASTFa
ctory.identifier3("U")); | |
279 TypeParameterTypeImpl typeParameterTypeU = new TypeParameterTypeImpl(typePar
ameterU); | |
280 TypeParameterElementImpl typeParameterT = new TypeParameterElementImpl(ASTFa
ctory.identifier3("T")); | |
281 TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typePar
ameterT); | |
282 typeParameterT.bound = typeParameterTypeU; | |
283 typeParameterU.bound = typeParameterTypeU; | |
284 JUnitTestCase.assertFalse(typeParameterTypeT.isMoreSpecificThan(classS.type)
); | |
285 } | |
286 void test_isMoreSpecificThan_typeArguments_self() { | |
287 TypeParameterElementImpl element = new TypeParameterElementImpl(ASTFactory.i
dentifier3("E")); | |
288 TypeParameterTypeImpl type = new TypeParameterTypeImpl(element); | |
289 JUnitTestCase.assertTrue(type.isMoreSpecificThan(type)); | |
290 } | |
291 void test_isMoreSpecificThan_typeArguments_transitivity_interfaceTypes() { | |
292 ClassElement classA = ElementFactory.classElement2("A", []); | |
293 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
294 InterfaceType typeA = classA.type; | |
295 InterfaceType typeB = classB.type; | |
296 TypeParameterElementImpl typeParameterT = new TypeParameterElementImpl(ASTFa
ctory.identifier3("T")); | |
297 typeParameterT.bound = typeB; | |
298 TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typePar
ameterT); | |
299 JUnitTestCase.assertTrue(typeParameterTypeT.isMoreSpecificThan(typeA)); | |
300 } | |
301 void test_isMoreSpecificThan_typeArguments_transitivity_typeParameters() { | |
302 ClassElementImpl classS = ElementFactory.classElement2("A", []); | |
303 TypeParameterElementImpl typeParameterU = new TypeParameterElementImpl(ASTFa
ctory.identifier3("U")); | |
304 typeParameterU.bound = classS.type; | |
305 TypeParameterTypeImpl typeParameterTypeU = new TypeParameterTypeImpl(typePar
ameterU); | |
306 TypeParameterElementImpl typeParameterT = new TypeParameterElementImpl(ASTFa
ctory.identifier3("T")); | |
307 typeParameterT.bound = typeParameterTypeU; | |
308 TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typePar
ameterT); | |
309 JUnitTestCase.assertTrue(typeParameterTypeT.isMoreSpecificThan(classS.type))
; | |
310 } | |
311 void test_isMoreSpecificThan_typeArguments_upperBound() { | |
312 ClassElementImpl classS = ElementFactory.classElement2("A", []); | |
313 TypeParameterElementImpl typeParameterT = new TypeParameterElementImpl(ASTFa
ctory.identifier3("T")); | |
314 typeParameterT.bound = classS.type; | |
315 TypeParameterTypeImpl typeParameterTypeT = new TypeParameterTypeImpl(typePar
ameterT); | |
316 JUnitTestCase.assertTrue(typeParameterTypeT.isMoreSpecificThan(classS.type))
; | |
317 } | |
318 void test_substitute_equal() { | |
319 TypeParameterElementImpl element = new TypeParameterElementImpl(ASTFactory.i
dentifier3("E")); | |
320 TypeParameterTypeImpl type = new TypeParameterTypeImpl(element); | |
321 InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl
(ASTFactory.identifier3("A"))); | |
322 TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(element); | |
323 JUnitTestCase.assertSame(argument, type.substitute2(<Type2> [argument], <Typ
e2> [parameter])); | |
324 } | |
325 void test_substitute_notEqual() { | |
326 TypeParameterTypeImpl type = new TypeParameterTypeImpl(new TypeParameterElem
entImpl(ASTFactory.identifier3("E"))); | |
327 InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl
(ASTFactory.identifier3("A"))); | |
328 TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(new TypeParamete
rElementImpl(ASTFactory.identifier3("F"))); | |
329 JUnitTestCase.assertSame(type, type.substitute2(<Type2> [argument], <Type2>
[parameter])); | |
330 } | |
331 static dartSuite() { | |
332 _ut.group('TypeParameterTypeImplTest', () { | |
333 _ut.test('test_creation', () { | |
334 final __test = new TypeParameterTypeImplTest(); | |
335 runJUnitTest(__test, __test.test_creation); | |
336 }); | |
337 _ut.test('test_getElement', () { | |
338 final __test = new TypeParameterTypeImplTest(); | |
339 runJUnitTest(__test, __test.test_getElement); | |
340 }); | |
341 _ut.test('test_isMoreSpecificThan_typeArguments_bottom', () { | |
342 final __test = new TypeParameterTypeImplTest(); | |
343 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_bottom
); | |
344 }); | |
345 _ut.test('test_isMoreSpecificThan_typeArguments_dynamic', () { | |
346 final __test = new TypeParameterTypeImplTest(); | |
347 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_dynami
c); | |
348 }); | |
349 _ut.test('test_isMoreSpecificThan_typeArguments_object', () { | |
350 final __test = new TypeParameterTypeImplTest(); | |
351 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_object
); | |
352 }); | |
353 _ut.test('test_isMoreSpecificThan_typeArguments_resursive', () { | |
354 final __test = new TypeParameterTypeImplTest(); | |
355 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_resurs
ive); | |
356 }); | |
357 _ut.test('test_isMoreSpecificThan_typeArguments_self', () { | |
358 final __test = new TypeParameterTypeImplTest(); | |
359 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_self); | |
360 }); | |
361 _ut.test('test_isMoreSpecificThan_typeArguments_transitivity_interfaceType
s', () { | |
362 final __test = new TypeParameterTypeImplTest(); | |
363 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_transi
tivity_interfaceTypes); | |
364 }); | |
365 _ut.test('test_isMoreSpecificThan_typeArguments_transitivity_typeParameter
s', () { | |
366 final __test = new TypeParameterTypeImplTest(); | |
367 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_transi
tivity_typeParameters); | |
368 }); | |
369 _ut.test('test_isMoreSpecificThan_typeArguments_upperBound', () { | |
370 final __test = new TypeParameterTypeImplTest(); | |
371 runJUnitTest(__test, __test.test_isMoreSpecificThan_typeArguments_upperB
ound); | |
372 }); | |
373 _ut.test('test_substitute_equal', () { | |
374 final __test = new TypeParameterTypeImplTest(); | |
375 runJUnitTest(__test, __test.test_substitute_equal); | |
376 }); | |
377 _ut.test('test_substitute_notEqual', () { | |
378 final __test = new TypeParameterTypeImplTest(); | |
379 runJUnitTest(__test, __test.test_substitute_notEqual); | |
380 }); | |
381 }); | |
382 } | |
383 } | |
384 class InterfaceTypeImplTest extends EngineTestCase { | |
385 | |
386 /** | |
387 * The type provider used to access the types. | |
388 */ | |
389 TestTypeProvider _typeProvider; | |
390 void setUp() { | |
391 _typeProvider = new TestTypeProvider(); | |
392 } | |
393 void test_computeLongestInheritancePathToObject_multipleInterfacePaths() { | |
394 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
395 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
396 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
397 ClassElementImpl classD = ElementFactory.classElement2("D", []); | |
398 ClassElementImpl classE = ElementFactory.classElement2("E", []); | |
399 classB.interfaces = <InterfaceType> [classA.type]; | |
400 classC.interfaces = <InterfaceType> [classA.type]; | |
401 classD.interfaces = <InterfaceType> [classC.type]; | |
402 classE.interfaces = <InterfaceType> [classB.type, classD.type]; | |
403 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classB.type)); | |
404 JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classE.type)); | |
405 } | |
406 void test_computeLongestInheritancePathToObject_multipleSuperclassPaths() { | |
407 ClassElement classA = ElementFactory.classElement2("A", []); | |
408 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
409 ClassElement classC = ElementFactory.classElement("C", classA.type, []); | |
410 ClassElement classD = ElementFactory.classElement("D", classC.type, []); | |
411 ClassElementImpl classE = ElementFactory.classElement("E", classB.type, []); | |
412 classE.interfaces = <InterfaceType> [classD.type]; | |
413 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classB.type)); | |
414 JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classE.type)); | |
415 } | |
416 void test_computeLongestInheritancePathToObject_object() { | |
417 ClassElement classA = ElementFactory.classElement2("A", []); | |
418 InterfaceType object = classA.supertype; | |
419 JUnitTestCase.assertEquals(0, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(object)); | |
420 } | |
421 void test_computeLongestInheritancePathToObject_recursion() { | |
422 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
423 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
424 classA.supertype = classB.type; | |
425 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classA.type)); | |
426 } | |
427 void test_computeLongestInheritancePathToObject_singleInterfacePath() { | |
428 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
429 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
430 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
431 classB.interfaces = <InterfaceType> [classA.type]; | |
432 classC.interfaces = <InterfaceType> [classB.type]; | |
433 JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classA.type)); | |
434 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classB.type)); | |
435 JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classC.type)); | |
436 } | |
437 void test_computeLongestInheritancePathToObject_singleSuperclassPath() { | |
438 ClassElement classA = ElementFactory.classElement2("A", []); | |
439 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
440 ClassElement classC = ElementFactory.classElement("C", classB.type, []); | |
441 JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classA.type)); | |
442 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classB.type)); | |
443 JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePat
hToObject(classC.type)); | |
444 } | |
445 void test_computeSuperinterfaceSet_multipleInterfacePaths() { | |
446 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
447 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
448 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
449 ClassElementImpl classD = ElementFactory.classElement2("D", []); | |
450 ClassElementImpl classE = ElementFactory.classElement2("E", []); | |
451 classB.interfaces = <InterfaceType> [classA.type]; | |
452 classC.interfaces = <InterfaceType> [classA.type]; | |
453 classD.interfaces = <InterfaceType> [classC.type]; | |
454 classE.interfaces = <InterfaceType> [classB.type, classD.type]; | |
455 Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterf
aceSet(classD.type); | |
456 EngineTestCase.assertSize3(3, superinterfacesOfD); | |
457 JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.t
ype)); | |
458 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type)); | |
459 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type)); | |
460 Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterf
aceSet(classE.type); | |
461 EngineTestCase.assertSize3(5, superinterfacesOfE); | |
462 JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.t
ype)); | |
463 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type)); | |
464 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type)); | |
465 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type)); | |
466 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type)); | |
467 } | |
468 void test_computeSuperinterfaceSet_multipleSuperclassPaths() { | |
469 ClassElement classA = ElementFactory.classElement2("A", []); | |
470 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
471 ClassElement classC = ElementFactory.classElement("C", classA.type, []); | |
472 ClassElement classD = ElementFactory.classElement("D", classC.type, []); | |
473 ClassElementImpl classE = ElementFactory.classElement("E", classB.type, []); | |
474 classE.interfaces = <InterfaceType> [classD.type]; | |
475 Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterf
aceSet(classD.type); | |
476 EngineTestCase.assertSize3(3, superinterfacesOfD); | |
477 JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.t
ype)); | |
478 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type)); | |
479 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type)); | |
480 Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterf
aceSet(classE.type); | |
481 EngineTestCase.assertSize3(5, superinterfacesOfE); | |
482 JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.t
ype)); | |
483 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type)); | |
484 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type)); | |
485 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type)); | |
486 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type)); | |
487 } | |
488 void test_computeSuperinterfaceSet_recursion() { | |
489 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
490 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
491 classA.supertype = classB.type; | |
492 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf
aceSet(classB.type); | |
493 EngineTestCase.assertSize3(2, superinterfacesOfB); | |
494 } | |
495 void test_computeSuperinterfaceSet_singleInterfacePath() { | |
496 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
497 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
498 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
499 classB.interfaces = <InterfaceType> [classA.type]; | |
500 classC.interfaces = <InterfaceType> [classB.type]; | |
501 Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterf
aceSet(classA.type); | |
502 EngineTestCase.assertSize3(1, superinterfacesOfA); | |
503 JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.t
ype)); | |
504 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf
aceSet(classB.type); | |
505 EngineTestCase.assertSize3(2, superinterfacesOfB); | |
506 JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.t
ype)); | |
507 JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type)); | |
508 Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterf
aceSet(classC.type); | |
509 EngineTestCase.assertSize3(3, superinterfacesOfC); | |
510 JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.t
ype)); | |
511 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type)); | |
512 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type)); | |
513 } | |
514 void test_computeSuperinterfaceSet_singleSuperclassPath() { | |
515 ClassElement classA = ElementFactory.classElement2("A", []); | |
516 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
517 ClassElement classC = ElementFactory.classElement("C", classB.type, []); | |
518 Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterf
aceSet(classA.type); | |
519 EngineTestCase.assertSize3(1, superinterfacesOfA); | |
520 JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.t
ype)); | |
521 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf
aceSet(classB.type); | |
522 EngineTestCase.assertSize3(2, superinterfacesOfB); | |
523 JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.t
ype)); | |
524 JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type)); | |
525 Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterf
aceSet(classC.type); | |
526 EngineTestCase.assertSize3(3, superinterfacesOfC); | |
527 JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.t
ype)); | |
528 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type)); | |
529 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type)); | |
530 } | |
531 void test_creation() { | |
532 JUnitTestCase.assertNotNull(new InterfaceTypeImpl.con1(ElementFactory.classE
lement2("A", []))); | |
533 } | |
534 void test_getAccessors() { | |
535 ClassElementImpl typeElement = ElementFactory.classElement2("A", []); | |
536 PropertyAccessorElement getterG = ElementFactory.getterElement("g", false, n
ull); | |
537 PropertyAccessorElement getterH = ElementFactory.getterElement("h", false, n
ull); | |
538 typeElement.accessors = <PropertyAccessorElement> [getterG, getterH]; | |
539 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); | |
540 JUnitTestCase.assertEquals(2, type.accessors.length); | |
541 } | |
542 void test_getAccessors_empty() { | |
543 ClassElementImpl typeElement = ElementFactory.classElement2("A", []); | |
544 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); | |
545 JUnitTestCase.assertEquals(0, type.accessors.length); | |
546 } | |
547 void test_getElement() { | |
548 ClassElementImpl typeElement = ElementFactory.classElement2("A", []); | |
549 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); | |
550 JUnitTestCase.assertEquals(typeElement, type.element); | |
551 } | |
552 void test_getGetter_implemented() { | |
553 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
554 String getterName = "g"; | |
555 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, null); | |
556 classA.accessors = <PropertyAccessorElement> [getterG]; | |
557 InterfaceType typeA = classA.type; | |
558 JUnitTestCase.assertSame(getterG, typeA.getGetter(getterName)); | |
559 } | |
560 void test_getGetter_parameterized() { | |
561 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
562 Type2 typeE = classA.type.typeArguments[0]; | |
563 String getterName = "g"; | |
564 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, typeE); | |
565 classA.accessors = <PropertyAccessorElement> [getterG]; | |
566 ((getterG.type as FunctionTypeImpl)).typeArguments = classA.type.typeArgumen
ts; | |
567 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
568 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA); | |
569 typeAI.typeArguments = <Type2> [typeI]; | |
570 PropertyAccessorElement getter = typeAI.getGetter(getterName); | |
571 JUnitTestCase.assertNotNull(getter); | |
572 FunctionType getterType = getter.type; | |
573 JUnitTestCase.assertSame(typeI, getterType.returnType); | |
574 } | |
575 void test_getGetter_unimplemented() { | |
576 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
577 InterfaceType typeA = classA.type; | |
578 JUnitTestCase.assertNull(typeA.getGetter("g")); | |
579 } | |
580 void test_getInterfaces_nonParameterized() { | |
581 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
582 InterfaceType typeA = classA.type; | |
583 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
584 InterfaceType typeB = classB.type; | |
585 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
586 classC.interfaces = <InterfaceType> [typeA, typeB]; | |
587 List<InterfaceType> interfaces = classC.type.interfaces; | |
588 EngineTestCase.assertLength(2, interfaces); | |
589 if (identical(interfaces[0], typeA)) { | |
590 JUnitTestCase.assertSame(typeB, interfaces[1]); | |
591 } else { | |
592 JUnitTestCase.assertSame(typeB, interfaces[0]); | |
593 JUnitTestCase.assertSame(typeA, interfaces[1]); | |
594 } | |
595 } | |
596 void test_getInterfaces_parameterized() { | |
597 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
598 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]); | |
599 InterfaceType typeB = classB.type; | |
600 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA); | |
601 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]]; | |
602 classB.interfaces = <InterfaceType> [typeAF]; | |
603 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
604 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB); | |
605 typeBI.typeArguments = <Type2> [typeI]; | |
606 List<InterfaceType> interfaces = typeBI.interfaces; | |
607 EngineTestCase.assertLength(1, interfaces); | |
608 InterfaceType result = interfaces[0]; | |
609 JUnitTestCase.assertSame(classA, result.element); | |
610 JUnitTestCase.assertSame(typeI, result.typeArguments[0]); | |
611 } | |
612 void test_getLeastUpperBound_directInterfaceCase() { | |
613 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
614 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
615 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
616 InterfaceType typeA = classA.type; | |
617 InterfaceType typeB = classB.type; | |
618 InterfaceType typeC = classC.type; | |
619 classB.interfaces = <InterfaceType> [typeA]; | |
620 classC.interfaces = <InterfaceType> [typeB]; | |
621 JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC)); | |
622 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB)); | |
623 } | |
624 void test_getLeastUpperBound_directSubclassCase() { | |
625 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
626 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
627 ClassElementImpl classC = ElementFactory.classElement("C", classB.type, []); | |
628 InterfaceType typeB = classB.type; | |
629 InterfaceType typeC = classC.type; | |
630 JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC)); | |
631 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB)); | |
632 } | |
633 void test_getLeastUpperBound_functionType() { | |
634 Type2 interfaceType = ElementFactory.classElement2("A", []).type; | |
635 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen
tImpl.con1(ASTFactory.identifier3("f"))); | |
636 JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(functionType)); | |
637 } | |
638 void test_getLeastUpperBound_mixinCase() { | |
639 ClassElement classA = ElementFactory.classElement2("A", []); | |
640 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
641 ClassElement classC = ElementFactory.classElement("C", classA.type, []); | |
642 ClassElementImpl classD = ElementFactory.classElement("D", classB.type, []); | |
643 InterfaceType typeA = classA.type; | |
644 InterfaceType typeC = classC.type; | |
645 InterfaceType typeD = classD.type; | |
646 classD.mixins = <InterfaceType> [ | |
647 ElementFactory.classElement2("M", []).type, | |
648 ElementFactory.classElement2("N", []).type, | |
649 ElementFactory.classElement2("O", []).type, | |
650 ElementFactory.classElement2("P", []).type]; | |
651 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeC)); | |
652 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeD)); | |
653 } | |
654 void test_getLeastUpperBound_null() { | |
655 Type2 interfaceType = ElementFactory.classElement2("A", []).type; | |
656 JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(null)); | |
657 } | |
658 void test_getLeastUpperBound_object() { | |
659 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
660 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
661 InterfaceType typeA = classA.type; | |
662 InterfaceType typeB = classB.type; | |
663 Type2 typeObject = typeA.element.supertype; | |
664 JUnitTestCase.assertNull(((typeObject.element as ClassElement)).supertype); | |
665 JUnitTestCase.assertEquals(typeObject, typeB.element.supertype); | |
666 JUnitTestCase.assertEquals(typeObject, typeA.getLeastUpperBound(typeB)); | |
667 } | |
668 void test_getLeastUpperBound_self() { | |
669 ClassElement classA = ElementFactory.classElement2("A", []); | |
670 InterfaceType typeA = classA.type; | |
671 JUnitTestCase.assertEquals(typeA, typeA.getLeastUpperBound(typeA)); | |
672 } | |
673 void test_getLeastUpperBound_sharedSuperclass1() { | |
674 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
675 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
676 ClassElementImpl classC = ElementFactory.classElement("C", classA.type, []); | |
677 InterfaceType typeA = classA.type; | |
678 InterfaceType typeB = classB.type; | |
679 InterfaceType typeC = classC.type; | |
680 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); | |
681 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); | |
682 } | |
683 void test_getLeastUpperBound_sharedSuperclass2() { | |
684 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
685 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
686 ClassElementImpl classC = ElementFactory.classElement("C", classA.type, []); | |
687 ClassElementImpl classD = ElementFactory.classElement("D", classC.type, []); | |
688 InterfaceType typeA = classA.type; | |
689 InterfaceType typeB = classB.type; | |
690 InterfaceType typeD = classD.type; | |
691 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD)); | |
692 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB)); | |
693 } | |
694 void test_getLeastUpperBound_sharedSuperclass3() { | |
695 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
696 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
697 ClassElementImpl classC = ElementFactory.classElement("C", classB.type, []); | |
698 ClassElementImpl classD = ElementFactory.classElement("D", classB.type, []); | |
699 InterfaceType typeB = classB.type; | |
700 InterfaceType typeC = classC.type; | |
701 InterfaceType typeD = classD.type; | |
702 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD)); | |
703 JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC)); | |
704 } | |
705 void test_getLeastUpperBound_sharedSuperclass4() { | |
706 ClassElement classA = ElementFactory.classElement2("A", []); | |
707 ClassElement classA2 = ElementFactory.classElement2("A2", []); | |
708 ClassElement classA3 = ElementFactory.classElement2("A3", []); | |
709 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
710 ClassElementImpl classC = ElementFactory.classElement("C", classA.type, []); | |
711 InterfaceType typeA = classA.type; | |
712 InterfaceType typeA2 = classA2.type; | |
713 InterfaceType typeA3 = classA3.type; | |
714 InterfaceType typeB = classB.type; | |
715 InterfaceType typeC = classC.type; | |
716 classB.interfaces = <InterfaceType> [typeA2]; | |
717 classC.interfaces = <InterfaceType> [typeA3]; | |
718 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); | |
719 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); | |
720 } | |
721 void test_getLeastUpperBound_sharedSuperinterface1() { | |
722 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
723 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
724 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
725 InterfaceType typeA = classA.type; | |
726 InterfaceType typeB = classB.type; | |
727 InterfaceType typeC = classC.type; | |
728 classB.interfaces = <InterfaceType> [typeA]; | |
729 classC.interfaces = <InterfaceType> [typeA]; | |
730 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); | |
731 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); | |
732 } | |
733 void test_getLeastUpperBound_sharedSuperinterface2() { | |
734 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
735 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
736 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
737 ClassElementImpl classD = ElementFactory.classElement2("D", []); | |
738 InterfaceType typeA = classA.type; | |
739 InterfaceType typeB = classB.type; | |
740 InterfaceType typeC = classC.type; | |
741 InterfaceType typeD = classD.type; | |
742 classB.interfaces = <InterfaceType> [typeA]; | |
743 classC.interfaces = <InterfaceType> [typeA]; | |
744 classD.interfaces = <InterfaceType> [typeC]; | |
745 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD)); | |
746 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB)); | |
747 } | |
748 void test_getLeastUpperBound_sharedSuperinterface3() { | |
749 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
750 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
751 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
752 ClassElementImpl classD = ElementFactory.classElement2("D", []); | |
753 InterfaceType typeA = classA.type; | |
754 InterfaceType typeB = classB.type; | |
755 InterfaceType typeC = classC.type; | |
756 InterfaceType typeD = classD.type; | |
757 classB.interfaces = <InterfaceType> [typeA]; | |
758 classC.interfaces = <InterfaceType> [typeB]; | |
759 classD.interfaces = <InterfaceType> [typeB]; | |
760 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD)); | |
761 JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC)); | |
762 } | |
763 void test_getLeastUpperBound_sharedSuperinterface4() { | |
764 ClassElement classA = ElementFactory.classElement2("A", []); | |
765 ClassElement classA2 = ElementFactory.classElement2("A2", []); | |
766 ClassElement classA3 = ElementFactory.classElement2("A3", []); | |
767 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
768 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
769 InterfaceType typeA = classA.type; | |
770 InterfaceType typeA2 = classA2.type; | |
771 InterfaceType typeA3 = classA3.type; | |
772 InterfaceType typeB = classB.type; | |
773 InterfaceType typeC = classC.type; | |
774 classB.interfaces = <InterfaceType> [typeA, typeA2]; | |
775 classC.interfaces = <InterfaceType> [typeA, typeA3]; | |
776 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); | |
777 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); | |
778 } | |
779 void test_getLeastUpperBound_twoComparables() { | |
780 InterfaceType string = _typeProvider.stringType; | |
781 InterfaceType num = _typeProvider.numType; | |
782 JUnitTestCase.assertEquals(_typeProvider.objectType, string.getLeastUpperBou
nd(num)); | |
783 } | |
784 void test_getLeastUpperBound_typeParameters_different() { | |
785 InterfaceType listType = _typeProvider.listType; | |
786 InterfaceType intType = _typeProvider.intType; | |
787 InterfaceType doubleType = _typeProvider.doubleType; | |
788 InterfaceType listOfIntType = listType.substitute4(<Type2> [intType]); | |
789 InterfaceType listOfDoubleType = listType.substitute4(<Type2> [doubleType]); | |
790 JUnitTestCase.assertEquals(listType.substitute4(<Type2> [_typeProvider.dynam
icType]), listOfIntType.getLeastUpperBound(listOfDoubleType)); | |
791 } | |
792 void test_getLeastUpperBound_typeParameters_same() { | |
793 InterfaceType listType = _typeProvider.listType; | |
794 InterfaceType intType = _typeProvider.intType; | |
795 InterfaceType listOfIntType = listType.substitute4(<Type2> [intType]); | |
796 JUnitTestCase.assertEquals(listOfIntType, listOfIntType.getLeastUpperBound(l
istOfIntType)); | |
797 } | |
798 void test_getMethod_implemented() { | |
799 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
800 String methodName = "m"; | |
801 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, [
]); | |
802 classA.methods = <MethodElement> [methodM]; | |
803 InterfaceType typeA = classA.type; | |
804 JUnitTestCase.assertSame(methodM, typeA.getMethod(methodName)); | |
805 } | |
806 void test_getMethod_parameterized() { | |
807 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
808 Type2 typeE = classA.type.typeArguments[0]; | |
809 String methodName = "m"; | |
810 MethodElementImpl methodM = ElementFactory.methodElement(methodName, typeE,
[typeE]); | |
811 classA.methods = <MethodElement> [methodM]; | |
812 ((methodM.type as FunctionTypeImpl)).typeArguments = classA.type.typeArgumen
ts; | |
813 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
814 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA); | |
815 typeAI.typeArguments = <Type2> [typeI]; | |
816 MethodElement method = typeAI.getMethod(methodName); | |
817 JUnitTestCase.assertNotNull(method); | |
818 FunctionType methodType = method.type; | |
819 JUnitTestCase.assertSame(typeI, methodType.returnType); | |
820 List<Type2> parameterTypes = methodType.normalParameterTypes; | |
821 EngineTestCase.assertLength(1, parameterTypes); | |
822 JUnitTestCase.assertSame(typeI, parameterTypes[0]); | |
823 } | |
824 void test_getMethod_unimplemented() { | |
825 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
826 InterfaceType typeA = classA.type; | |
827 JUnitTestCase.assertNull(typeA.getMethod("m")); | |
828 } | |
829 void test_getMethods() { | |
830 ClassElementImpl typeElement = ElementFactory.classElement2("A", []); | |
831 MethodElementImpl methodOne = ElementFactory.methodElement("one", null, []); | |
832 MethodElementImpl methodTwo = ElementFactory.methodElement("two", null, []); | |
833 typeElement.methods = <MethodElement> [methodOne, methodTwo]; | |
834 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); | |
835 JUnitTestCase.assertEquals(2, type.methods.length); | |
836 } | |
837 void test_getMethods_empty() { | |
838 ClassElementImpl typeElement = ElementFactory.classElement2("A", []); | |
839 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); | |
840 JUnitTestCase.assertEquals(0, type.methods.length); | |
841 } | |
842 void test_getMixins_nonParameterized() { | |
843 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
844 InterfaceType typeA = classA.type; | |
845 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
846 InterfaceType typeB = classB.type; | |
847 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
848 classC.mixins = <InterfaceType> [typeA, typeB]; | |
849 List<InterfaceType> interfaces = classC.type.mixins; | |
850 EngineTestCase.assertLength(2, interfaces); | |
851 if (identical(interfaces[0], typeA)) { | |
852 JUnitTestCase.assertSame(typeB, interfaces[1]); | |
853 } else { | |
854 JUnitTestCase.assertSame(typeB, interfaces[0]); | |
855 JUnitTestCase.assertSame(typeA, interfaces[1]); | |
856 } | |
857 } | |
858 void test_getMixins_parameterized() { | |
859 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
860 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]); | |
861 InterfaceType typeB = classB.type; | |
862 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA); | |
863 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]]; | |
864 classB.mixins = <InterfaceType> [typeAF]; | |
865 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
866 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB); | |
867 typeBI.typeArguments = <Type2> [typeI]; | |
868 List<InterfaceType> interfaces = typeBI.mixins; | |
869 EngineTestCase.assertLength(1, interfaces); | |
870 InterfaceType result = interfaces[0]; | |
871 JUnitTestCase.assertSame(classA, result.element); | |
872 JUnitTestCase.assertSame(typeI, result.typeArguments[0]); | |
873 } | |
874 void test_getSetter_implemented() { | |
875 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
876 String setterName = "s"; | |
877 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, null); | |
878 classA.accessors = <PropertyAccessorElement> [setterS]; | |
879 InterfaceType typeA = classA.type; | |
880 JUnitTestCase.assertSame(setterS, typeA.getSetter(setterName)); | |
881 } | |
882 void test_getSetter_parameterized() { | |
883 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
884 Type2 typeE = classA.type.typeArguments[0]; | |
885 String setterName = "s"; | |
886 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, typeE); | |
887 classA.accessors = <PropertyAccessorElement> [setterS]; | |
888 ((setterS.type as FunctionTypeImpl)).typeArguments = classA.type.typeArgumen
ts; | |
889 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
890 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA); | |
891 typeAI.typeArguments = <Type2> [typeI]; | |
892 PropertyAccessorElement setter = typeAI.getSetter(setterName); | |
893 JUnitTestCase.assertNotNull(setter); | |
894 FunctionType setterType = setter.type; | |
895 List<Type2> parameterTypes = setterType.normalParameterTypes; | |
896 EngineTestCase.assertLength(1, parameterTypes); | |
897 JUnitTestCase.assertSame(typeI, parameterTypes[0]); | |
898 } | |
899 void test_getSetter_unimplemented() { | |
900 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
901 InterfaceType typeA = classA.type; | |
902 JUnitTestCase.assertNull(typeA.getSetter("s")); | |
903 } | |
904 void test_getSuperclass_nonParameterized() { | |
905 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
906 InterfaceType typeA = classA.type; | |
907 ClassElementImpl classB = ElementFactory.classElement("B", typeA, []); | |
908 InterfaceType typeB = classB.type; | |
909 JUnitTestCase.assertSame(typeA, typeB.superclass); | |
910 } | |
911 void test_getSuperclass_parameterized() { | |
912 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
913 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]); | |
914 InterfaceType typeB = classB.type; | |
915 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA); | |
916 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]]; | |
917 classB.supertype = typeAF; | |
918 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
919 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB); | |
920 typeBI.typeArguments = <Type2> [typeI]; | |
921 InterfaceType superclass = typeBI.superclass; | |
922 JUnitTestCase.assertSame(classA, superclass.element); | |
923 JUnitTestCase.assertSame(typeI, superclass.typeArguments[0]); | |
924 } | |
925 void test_getTypeArguments_empty() { | |
926 InterfaceType type = ElementFactory.classElement2("A", []).type; | |
927 EngineTestCase.assertLength(0, type.typeArguments); | |
928 } | |
929 void test_hashCode() { | |
930 ClassElement classA = ElementFactory.classElement2("A", []); | |
931 InterfaceType typeA = classA.type; | |
932 JUnitTestCase.assertFalse(0 == typeA.hashCode); | |
933 } | |
934 void test_isDirectSupertypeOf_extends() { | |
935 ClassElement classA = ElementFactory.classElement2("A", []); | |
936 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
937 InterfaceType typeA = classA.type; | |
938 InterfaceType typeB = classB.type; | |
939 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); | |
940 } | |
941 void test_isDirectSupertypeOf_false() { | |
942 ClassElement classA = ElementFactory.classElement2("A", []); | |
943 ClassElement classB = ElementFactory.classElement2("B", []); | |
944 ClassElement classC = ElementFactory.classElement("C", classB.type, []); | |
945 InterfaceType typeA = classA.type; | |
946 InterfaceType typeC = classC.type; | |
947 JUnitTestCase.assertFalse(typeA.isDirectSupertypeOf(typeC)); | |
948 } | |
949 void test_isDirectSupertypeOf_implements() { | |
950 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
951 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
952 InterfaceType typeA = classA.type; | |
953 InterfaceType typeB = classB.type; | |
954 classB.interfaces = <InterfaceType> [typeA]; | |
955 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); | |
956 } | |
957 void test_isDirectSupertypeOf_with() { | |
958 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
959 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
960 InterfaceType typeA = classA.type; | |
961 InterfaceType typeB = classB.type; | |
962 classB.mixins = <InterfaceType> [typeA]; | |
963 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); | |
964 } | |
965 void test_isMoreSpecificThan_bottom() { | |
966 Type2 type = ElementFactory.classElement2("A", []).type; | |
967 JUnitTestCase.assertTrue(BottomTypeImpl.instance.isMoreSpecificThan(type)); | |
968 } | |
969 void test_isMoreSpecificThan_covariance() { | |
970 ClassElement classA = ElementFactory.classElement2("A", ["E"]); | |
971 ClassElement classI = ElementFactory.classElement2("I", []); | |
972 ClassElement classJ = ElementFactory.classElement("J", classI.type, []); | |
973 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA); | |
974 InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA); | |
975 typeAI.typeArguments = <Type2> [classI.type]; | |
976 typeAJ.typeArguments = <Type2> [classJ.type]; | |
977 JUnitTestCase.assertTrue(typeAJ.isMoreSpecificThan(typeAI)); | |
978 JUnitTestCase.assertFalse(typeAI.isMoreSpecificThan(typeAJ)); | |
979 } | |
980 void test_isMoreSpecificThan_directSupertype() { | |
981 ClassElement classA = ElementFactory.classElement2("A", []); | |
982 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
983 InterfaceType typeA = classA.type; | |
984 InterfaceType typeB = classB.type; | |
985 JUnitTestCase.assertTrue(typeB.isMoreSpecificThan(typeA)); | |
986 JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeB)); | |
987 } | |
988 void test_isMoreSpecificThan_dynamic() { | |
989 InterfaceType type = ElementFactory.classElement2("A", []).type; | |
990 JUnitTestCase.assertTrue(type.isMoreSpecificThan(DynamicTypeImpl.instance)); | |
991 } | |
992 void test_isMoreSpecificThan_self() { | |
993 InterfaceType type = ElementFactory.classElement2("A", []).type; | |
994 JUnitTestCase.assertTrue(type.isMoreSpecificThan(type)); | |
995 } | |
996 void test_isMoreSpecificThan_transitive_interface() { | |
997 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
998 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
999 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1000 classC.interfaces = <InterfaceType> [classB.type]; | |
1001 InterfaceType typeA = classA.type; | |
1002 InterfaceType typeC = classC.type; | |
1003 JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA)); | |
1004 } | |
1005 void test_isMoreSpecificThan_transitive_mixin() { | |
1006 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1007 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
1008 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1009 classC.mixins = <InterfaceType> [classB.type]; | |
1010 InterfaceType typeA = classA.type; | |
1011 InterfaceType typeC = classC.type; | |
1012 JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA)); | |
1013 } | |
1014 void test_isMoreSpecificThan_transitive_recursive() { | |
1015 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1016 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
1017 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1018 InterfaceType typeA = classA.type; | |
1019 InterfaceType typeC = classC.type; | |
1020 classA.supertype = classB.type; | |
1021 JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeC)); | |
1022 } | |
1023 void test_isMoreSpecificThan_transitive_superclass() { | |
1024 ClassElement classA = ElementFactory.classElement2("A", []); | |
1025 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1026 ClassElement classC = ElementFactory.classElement("C", classB.type, []); | |
1027 InterfaceType typeA = classA.type; | |
1028 InterfaceType typeC = classC.type; | |
1029 JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA)); | |
1030 } | |
1031 void test_isSubtypeOf_directSubtype() { | |
1032 ClassElement classA = ElementFactory.classElement2("A", []); | |
1033 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1034 InterfaceType typeA = classA.type; | |
1035 InterfaceType typeB = classB.type; | |
1036 JUnitTestCase.assertTrue(typeB.isSubtypeOf(typeA)); | |
1037 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeB)); | |
1038 } | |
1039 void test_isSubtypeOf_dynamic() { | |
1040 ClassElement classA = ElementFactory.classElement2("A", []); | |
1041 InterfaceType typeA = classA.type; | |
1042 Type2 dynamicType = DynamicTypeImpl.instance; | |
1043 JUnitTestCase.assertTrue(dynamicType.isSubtypeOf(typeA)); | |
1044 JUnitTestCase.assertTrue(typeA.isSubtypeOf(dynamicType)); | |
1045 } | |
1046 void test_isSubtypeOf_function() { | |
1047 InterfaceType stringType = _typeProvider.stringType; | |
1048 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1049 classA.methods = <MethodElement> [ElementFactory.methodElement("call", VoidT
ypeImpl.instance, [stringType])]; | |
1050 FunctionType functionType = ElementFactory.functionElement5("f", <ClassEleme
nt> [stringType.element]).type; | |
1051 JUnitTestCase.assertTrue(classA.type.isSubtypeOf(functionType)); | |
1052 } | |
1053 void test_isSubtypeOf_interface() { | |
1054 ClassElement classA = ElementFactory.classElement2("A", []); | |
1055 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1056 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1057 InterfaceType typeObject = classA.supertype; | |
1058 InterfaceType typeA = classA.type; | |
1059 InterfaceType typeB = classB.type; | |
1060 InterfaceType typeC = classC.type; | |
1061 classC.interfaces = <InterfaceType> [typeB]; | |
1062 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB)); | |
1063 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject)); | |
1064 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); | |
1065 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); | |
1066 } | |
1067 void test_isSubtypeOf_mixins() { | |
1068 ClassElement classA = ElementFactory.classElement2("A", []); | |
1069 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1070 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1071 InterfaceType typeObject = classA.supertype; | |
1072 InterfaceType typeA = classA.type; | |
1073 InterfaceType typeB = classB.type; | |
1074 InterfaceType typeC = classC.type; | |
1075 classC.mixins = <InterfaceType> [typeB]; | |
1076 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB)); | |
1077 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject)); | |
1078 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); | |
1079 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); | |
1080 } | |
1081 void test_isSubtypeOf_object() { | |
1082 ClassElement classA = ElementFactory.classElement2("A", []); | |
1083 InterfaceType typeA = classA.type; | |
1084 InterfaceType typeObject = classA.supertype; | |
1085 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeObject)); | |
1086 JUnitTestCase.assertFalse(typeObject.isSubtypeOf(typeA)); | |
1087 } | |
1088 void test_isSubtypeOf_self() { | |
1089 ClassElement classA = ElementFactory.classElement2("A", []); | |
1090 InterfaceType typeA = classA.type; | |
1091 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeA)); | |
1092 } | |
1093 void test_isSubtypeOf_transitive_recursive() { | |
1094 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1095 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
1096 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1097 InterfaceType typeA = classA.type; | |
1098 InterfaceType typeC = classC.type; | |
1099 classA.supertype = classB.type; | |
1100 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); | |
1101 } | |
1102 void test_isSubtypeOf_transitive_superclass() { | |
1103 ClassElement classA = ElementFactory.classElement2("A", []); | |
1104 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1105 ClassElement classC = ElementFactory.classElement("C", classB.type, []); | |
1106 InterfaceType typeA = classA.type; | |
1107 InterfaceType typeC = classC.type; | |
1108 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); | |
1109 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); | |
1110 } | |
1111 void test_isSubtypeOf_typeArguments() { | |
1112 Type2 dynamicType = DynamicTypeImpl.instance; | |
1113 ClassElement classA = ElementFactory.classElement2("A", ["E"]); | |
1114 ClassElement classI = ElementFactory.classElement2("I", []); | |
1115 ClassElement classJ = ElementFactory.classElement("J", classI.type, []); | |
1116 ClassElement classK = ElementFactory.classElement2("K", []); | |
1117 InterfaceType typeA = classA.type; | |
1118 InterfaceType typeA_dynamic = typeA.substitute4(<Type2> [dynamicType]); | |
1119 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA); | |
1120 InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA); | |
1121 InterfaceTypeImpl typeAK = new InterfaceTypeImpl.con1(classA); | |
1122 typeAI.typeArguments = <Type2> [classI.type]; | |
1123 typeAJ.typeArguments = <Type2> [classJ.type]; | |
1124 typeAK.typeArguments = <Type2> [classK.type]; | |
1125 JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeAI)); | |
1126 JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAJ)); | |
1127 JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeAI)); | |
1128 JUnitTestCase.assertTrue(typeA_dynamic.isSubtypeOf(typeAI)); | |
1129 JUnitTestCase.assertTrue(typeA_dynamic.isSubtypeOf(typeAJ)); | |
1130 JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeA_dynamic)); | |
1131 JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeA_dynamic)); | |
1132 JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAK)); | |
1133 JUnitTestCase.assertFalse(typeAK.isSubtypeOf(typeAI)); | |
1134 } | |
1135 void test_isSupertypeOf_directSupertype() { | |
1136 ClassElement classA = ElementFactory.classElement2("A", []); | |
1137 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1138 InterfaceType typeA = classA.type; | |
1139 InterfaceType typeB = classB.type; | |
1140 JUnitTestCase.assertFalse(typeB.isSupertypeOf(typeA)); | |
1141 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeB)); | |
1142 } | |
1143 void test_isSupertypeOf_dynamic() { | |
1144 ClassElement classA = ElementFactory.classElement2("A", []); | |
1145 InterfaceType typeA = classA.type; | |
1146 Type2 dynamicType = DynamicTypeImpl.instance; | |
1147 JUnitTestCase.assertTrue(dynamicType.isSupertypeOf(typeA)); | |
1148 JUnitTestCase.assertTrue(typeA.isSupertypeOf(dynamicType)); | |
1149 } | |
1150 void test_isSupertypeOf_indirectSupertype() { | |
1151 ClassElement classA = ElementFactory.classElement2("A", []); | |
1152 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1153 ClassElement classC = ElementFactory.classElement("C", classB.type, []); | |
1154 InterfaceType typeA = classA.type; | |
1155 InterfaceType typeC = classC.type; | |
1156 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); | |
1157 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); | |
1158 } | |
1159 void test_isSupertypeOf_interface() { | |
1160 ClassElement classA = ElementFactory.classElement2("A", []); | |
1161 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1162 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1163 InterfaceType typeObject = classA.supertype; | |
1164 InterfaceType typeA = classA.type; | |
1165 InterfaceType typeB = classB.type; | |
1166 InterfaceType typeC = classC.type; | |
1167 classC.interfaces = <InterfaceType> [typeB]; | |
1168 JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC)); | |
1169 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC)); | |
1170 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); | |
1171 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); | |
1172 } | |
1173 void test_isSupertypeOf_mixins() { | |
1174 ClassElement classA = ElementFactory.classElement2("A", []); | |
1175 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
1176 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
1177 InterfaceType typeObject = classA.supertype; | |
1178 InterfaceType typeA = classA.type; | |
1179 InterfaceType typeB = classB.type; | |
1180 InterfaceType typeC = classC.type; | |
1181 classC.mixins = <InterfaceType> [typeB]; | |
1182 JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC)); | |
1183 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC)); | |
1184 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); | |
1185 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); | |
1186 } | |
1187 void test_isSupertypeOf_object() { | |
1188 ClassElement classA = ElementFactory.classElement2("A", []); | |
1189 InterfaceType typeA = classA.type; | |
1190 InterfaceType typeObject = classA.supertype; | |
1191 JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeObject)); | |
1192 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeA)); | |
1193 } | |
1194 void test_isSupertypeOf_self() { | |
1195 ClassElement classA = ElementFactory.classElement2("A", []); | |
1196 InterfaceType typeA = classA.type; | |
1197 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeA)); | |
1198 } | |
1199 void test_lookUpGetter_implemented() { | |
1200 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1201 String getterName = "g"; | |
1202 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, null); | |
1203 classA.accessors = <PropertyAccessorElement> [getterG]; | |
1204 InterfaceType typeA = classA.type; | |
1205 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1206 CompilationUnitElement unit = library.definingCompilationUnit; | |
1207 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1208 JUnitTestCase.assertSame(getterG, typeA.lookUpGetter(getterName, library)); | |
1209 } | |
1210 void test_lookUpGetter_inherited() { | |
1211 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1212 String getterName = "g"; | |
1213 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, null); | |
1214 classA.accessors = <PropertyAccessorElement> [getterG]; | |
1215 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
1216 InterfaceType typeB = classB.type; | |
1217 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1218 CompilationUnitElement unit = library.definingCompilationUnit; | |
1219 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class
B]; | |
1220 JUnitTestCase.assertSame(getterG, typeB.lookUpGetter(getterName, library)); | |
1221 } | |
1222 void test_lookUpGetter_recursive() { | |
1223 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1224 InterfaceType typeA = classA.type; | |
1225 ClassElementImpl classB = ElementFactory.classElement("B", typeA, []); | |
1226 classA.supertype = classB.type; | |
1227 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1228 CompilationUnitElement unit = library.definingCompilationUnit; | |
1229 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class
B]; | |
1230 JUnitTestCase.assertNull(typeA.lookUpGetter("g", library)); | |
1231 } | |
1232 void test_lookUpGetter_unimplemented() { | |
1233 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1234 InterfaceType typeA = classA.type; | |
1235 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1236 CompilationUnitElement unit = library.definingCompilationUnit; | |
1237 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1238 JUnitTestCase.assertNull(typeA.lookUpGetter("g", library)); | |
1239 } | |
1240 void test_lookUpMethod_implemented() { | |
1241 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1242 String methodName = "m"; | |
1243 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, [
]); | |
1244 classA.methods = <MethodElement> [methodM]; | |
1245 InterfaceType typeA = classA.type; | |
1246 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1247 CompilationUnitElement unit = library.definingCompilationUnit; | |
1248 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1249 JUnitTestCase.assertSame(methodM, typeA.lookUpMethod(methodName, library)); | |
1250 } | |
1251 void test_lookUpMethod_inherited() { | |
1252 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1253 String methodName = "m"; | |
1254 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, [
]); | |
1255 classA.methods = <MethodElement> [methodM]; | |
1256 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
1257 InterfaceType typeB = classB.type; | |
1258 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1259 CompilationUnitElement unit = library.definingCompilationUnit; | |
1260 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class
B]; | |
1261 JUnitTestCase.assertSame(methodM, typeB.lookUpMethod(methodName, library)); | |
1262 } | |
1263 void test_lookUpMethod_parameterized() { | |
1264 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]); | |
1265 Type2 typeE = classA.type.typeArguments[0]; | |
1266 String methodName = "m"; | |
1267 MethodElementImpl methodM = ElementFactory.methodElement(methodName, typeE,
[typeE]); | |
1268 classA.methods = <MethodElement> [methodM]; | |
1269 ((methodM.type as FunctionTypeImpl)).typeArguments = classA.type.typeArgumen
ts; | |
1270 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]); | |
1271 InterfaceType typeB = classB.type; | |
1272 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA); | |
1273 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]]; | |
1274 classB.supertype = typeAF; | |
1275 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1276 CompilationUnitElement unit = library.definingCompilationUnit; | |
1277 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1278 InterfaceType typeI = ElementFactory.classElement2("I", []).type; | |
1279 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB); | |
1280 typeBI.typeArguments = <Type2> [typeI]; | |
1281 MethodElement method = typeBI.lookUpMethod(methodName, library); | |
1282 JUnitTestCase.assertNotNull(method); | |
1283 FunctionType methodType = method.type; | |
1284 JUnitTestCase.assertSame(typeI, methodType.returnType); | |
1285 List<Type2> parameterTypes = methodType.normalParameterTypes; | |
1286 EngineTestCase.assertLength(1, parameterTypes); | |
1287 JUnitTestCase.assertSame(typeI, parameterTypes[0]); | |
1288 } | |
1289 void test_lookUpMethod_recursive() { | |
1290 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1291 InterfaceType typeA = classA.type; | |
1292 ClassElementImpl classB = ElementFactory.classElement("B", typeA, []); | |
1293 classA.supertype = classB.type; | |
1294 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1295 CompilationUnitElement unit = library.definingCompilationUnit; | |
1296 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class
B]; | |
1297 JUnitTestCase.assertNull(typeA.lookUpMethod("m", library)); | |
1298 } | |
1299 void test_lookUpMethod_unimplemented() { | |
1300 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1301 InterfaceType typeA = classA.type; | |
1302 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1303 CompilationUnitElement unit = library.definingCompilationUnit; | |
1304 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1305 JUnitTestCase.assertNull(typeA.lookUpMethod("m", library)); | |
1306 } | |
1307 void test_lookUpSetter_implemented() { | |
1308 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1309 String setterName = "s"; | |
1310 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, null); | |
1311 classA.accessors = <PropertyAccessorElement> [setterS]; | |
1312 InterfaceType typeA = classA.type; | |
1313 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1314 CompilationUnitElement unit = library.definingCompilationUnit; | |
1315 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1316 JUnitTestCase.assertSame(setterS, typeA.lookUpSetter(setterName, library)); | |
1317 } | |
1318 void test_lookUpSetter_inherited() { | |
1319 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1320 String setterName = "g"; | |
1321 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, null); | |
1322 classA.accessors = <PropertyAccessorElement> [setterS]; | |
1323 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
1324 InterfaceType typeB = classB.type; | |
1325 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1326 CompilationUnitElement unit = library.definingCompilationUnit; | |
1327 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class
B]; | |
1328 JUnitTestCase.assertSame(setterS, typeB.lookUpSetter(setterName, library)); | |
1329 } | |
1330 void test_lookUpSetter_recursive() { | |
1331 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1332 InterfaceType typeA = classA.type; | |
1333 ClassElementImpl classB = ElementFactory.classElement("B", typeA, []); | |
1334 classA.supertype = classB.type; | |
1335 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1336 CompilationUnitElement unit = library.definingCompilationUnit; | |
1337 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class
B]; | |
1338 JUnitTestCase.assertNull(typeA.lookUpSetter("s", library)); | |
1339 } | |
1340 void test_lookUpSetter_unimplemented() { | |
1341 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1342 InterfaceType typeA = classA.type; | |
1343 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
1344 CompilationUnitElement unit = library.definingCompilationUnit; | |
1345 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; | |
1346 JUnitTestCase.assertNull(typeA.lookUpSetter("s", library)); | |
1347 } | |
1348 void test_setTypeArguments() { | |
1349 InterfaceTypeImpl type = ElementFactory.classElement2("A", []).type as Inter
faceTypeImpl; | |
1350 List<Type2> typeArguments = <Type2> [ | |
1351 ElementFactory.classElement2("B", []).type, | |
1352 ElementFactory.classElement2("C", []).type]; | |
1353 type.typeArguments = typeArguments; | |
1354 JUnitTestCase.assertEquals(typeArguments, type.typeArguments); | |
1355 } | |
1356 void test_substitute_equal() { | |
1357 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1358 TypeParameterElementImpl parameterElement = new TypeParameterElementImpl(AST
Factory.identifier3("E")); | |
1359 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA); | |
1360 TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(parameterElement
); | |
1361 type.typeArguments = <Type2> [parameter]; | |
1362 InterfaceType argumentType = ElementFactory.classElement2("B", []).type; | |
1363 InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [par
ameter]); | |
1364 JUnitTestCase.assertEquals(classA, result.element); | |
1365 List<Type2> resultArguments = result.typeArguments; | |
1366 EngineTestCase.assertLength(1, resultArguments); | |
1367 JUnitTestCase.assertEquals(argumentType, resultArguments[0]); | |
1368 } | |
1369 void test_substitute_exception() { | |
1370 try { | |
1371 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1372 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA); | |
1373 InterfaceType argumentType = ElementFactory.classElement2("B", []).type; | |
1374 type.substitute2(<Type2> [argumentType], <Type2> []); | |
1375 JUnitTestCase.fail("Expected to encounter exception, argument and paramete
r type array lengths not equal."); | |
1376 } on JavaException catch (e) { | |
1377 } | |
1378 } | |
1379 void test_substitute_notEqual() { | |
1380 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
1381 TypeParameterElementImpl parameterElement = new TypeParameterElementImpl(AST
Factory.identifier3("E")); | |
1382 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA); | |
1383 TypeParameterTypeImpl parameter = new TypeParameterTypeImpl(parameterElement
); | |
1384 type.typeArguments = <Type2> [parameter]; | |
1385 InterfaceType argumentType = ElementFactory.classElement2("B", []).type; | |
1386 TypeParameterTypeImpl parameterType = new TypeParameterTypeImpl(new TypePara
meterElementImpl(ASTFactory.identifier3("F"))); | |
1387 InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [par
ameterType]); | |
1388 JUnitTestCase.assertEquals(classA, result.element); | |
1389 List<Type2> resultArguments = result.typeArguments; | |
1390 EngineTestCase.assertLength(1, resultArguments); | |
1391 JUnitTestCase.assertEquals(parameter, resultArguments[0]); | |
1392 } | |
1393 static dartSuite() { | |
1394 _ut.group('InterfaceTypeImplTest', () { | |
1395 _ut.test('test_computeLongestInheritancePathToObject_multipleInterfacePath
s', () { | |
1396 final __test = new InterfaceTypeImplTest(); | |
1397 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_m
ultipleInterfacePaths); | |
1398 }); | |
1399 _ut.test('test_computeLongestInheritancePathToObject_multipleSuperclassPat
hs', () { | |
1400 final __test = new InterfaceTypeImplTest(); | |
1401 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_m
ultipleSuperclassPaths); | |
1402 }); | |
1403 _ut.test('test_computeLongestInheritancePathToObject_object', () { | |
1404 final __test = new InterfaceTypeImplTest(); | |
1405 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_o
bject); | |
1406 }); | |
1407 _ut.test('test_computeLongestInheritancePathToObject_recursion', () { | |
1408 final __test = new InterfaceTypeImplTest(); | |
1409 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_r
ecursion); | |
1410 }); | |
1411 _ut.test('test_computeLongestInheritancePathToObject_singleInterfacePath',
() { | |
1412 final __test = new InterfaceTypeImplTest(); | |
1413 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_s
ingleInterfacePath); | |
1414 }); | |
1415 _ut.test('test_computeLongestInheritancePathToObject_singleSuperclassPath'
, () { | |
1416 final __test = new InterfaceTypeImplTest(); | |
1417 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_s
ingleSuperclassPath); | |
1418 }); | |
1419 _ut.test('test_computeSuperinterfaceSet_multipleInterfacePaths', () { | |
1420 final __test = new InterfaceTypeImplTest(); | |
1421 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_multipleInterf
acePaths); | |
1422 }); | |
1423 _ut.test('test_computeSuperinterfaceSet_multipleSuperclassPaths', () { | |
1424 final __test = new InterfaceTypeImplTest(); | |
1425 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_multipleSuperc
lassPaths); | |
1426 }); | |
1427 _ut.test('test_computeSuperinterfaceSet_recursion', () { | |
1428 final __test = new InterfaceTypeImplTest(); | |
1429 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_recursion); | |
1430 }); | |
1431 _ut.test('test_computeSuperinterfaceSet_singleInterfacePath', () { | |
1432 final __test = new InterfaceTypeImplTest(); | |
1433 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleInterfac
ePath); | |
1434 }); | |
1435 _ut.test('test_computeSuperinterfaceSet_singleSuperclassPath', () { | |
1436 final __test = new InterfaceTypeImplTest(); | |
1437 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleSupercla
ssPath); | |
1438 }); | |
1439 _ut.test('test_creation', () { | |
1440 final __test = new InterfaceTypeImplTest(); | |
1441 runJUnitTest(__test, __test.test_creation); | |
1442 }); | |
1443 _ut.test('test_getAccessors', () { | |
1444 final __test = new InterfaceTypeImplTest(); | |
1445 runJUnitTest(__test, __test.test_getAccessors); | |
1446 }); | |
1447 _ut.test('test_getAccessors_empty', () { | |
1448 final __test = new InterfaceTypeImplTest(); | |
1449 runJUnitTest(__test, __test.test_getAccessors_empty); | |
1450 }); | |
1451 _ut.test('test_getElement', () { | |
1452 final __test = new InterfaceTypeImplTest(); | |
1453 runJUnitTest(__test, __test.test_getElement); | |
1454 }); | |
1455 _ut.test('test_getGetter_implemented', () { | |
1456 final __test = new InterfaceTypeImplTest(); | |
1457 runJUnitTest(__test, __test.test_getGetter_implemented); | |
1458 }); | |
1459 _ut.test('test_getGetter_parameterized', () { | |
1460 final __test = new InterfaceTypeImplTest(); | |
1461 runJUnitTest(__test, __test.test_getGetter_parameterized); | |
1462 }); | |
1463 _ut.test('test_getGetter_unimplemented', () { | |
1464 final __test = new InterfaceTypeImplTest(); | |
1465 runJUnitTest(__test, __test.test_getGetter_unimplemented); | |
1466 }); | |
1467 _ut.test('test_getInterfaces_nonParameterized', () { | |
1468 final __test = new InterfaceTypeImplTest(); | |
1469 runJUnitTest(__test, __test.test_getInterfaces_nonParameterized); | |
1470 }); | |
1471 _ut.test('test_getInterfaces_parameterized', () { | |
1472 final __test = new InterfaceTypeImplTest(); | |
1473 runJUnitTest(__test, __test.test_getInterfaces_parameterized); | |
1474 }); | |
1475 _ut.test('test_getLeastUpperBound_directInterfaceCase', () { | |
1476 final __test = new InterfaceTypeImplTest(); | |
1477 runJUnitTest(__test, __test.test_getLeastUpperBound_directInterfaceCase)
; | |
1478 }); | |
1479 _ut.test('test_getLeastUpperBound_directSubclassCase', () { | |
1480 final __test = new InterfaceTypeImplTest(); | |
1481 runJUnitTest(__test, __test.test_getLeastUpperBound_directSubclassCase); | |
1482 }); | |
1483 _ut.test('test_getLeastUpperBound_functionType', () { | |
1484 final __test = new InterfaceTypeImplTest(); | |
1485 runJUnitTest(__test, __test.test_getLeastUpperBound_functionType); | |
1486 }); | |
1487 _ut.test('test_getLeastUpperBound_mixinCase', () { | |
1488 final __test = new InterfaceTypeImplTest(); | |
1489 runJUnitTest(__test, __test.test_getLeastUpperBound_mixinCase); | |
1490 }); | |
1491 _ut.test('test_getLeastUpperBound_null', () { | |
1492 final __test = new InterfaceTypeImplTest(); | |
1493 runJUnitTest(__test, __test.test_getLeastUpperBound_null); | |
1494 }); | |
1495 _ut.test('test_getLeastUpperBound_object', () { | |
1496 final __test = new InterfaceTypeImplTest(); | |
1497 runJUnitTest(__test, __test.test_getLeastUpperBound_object); | |
1498 }); | |
1499 _ut.test('test_getLeastUpperBound_self', () { | |
1500 final __test = new InterfaceTypeImplTest(); | |
1501 runJUnitTest(__test, __test.test_getLeastUpperBound_self); | |
1502 }); | |
1503 _ut.test('test_getLeastUpperBound_sharedSuperclass1', () { | |
1504 final __test = new InterfaceTypeImplTest(); | |
1505 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass1); | |
1506 }); | |
1507 _ut.test('test_getLeastUpperBound_sharedSuperclass2', () { | |
1508 final __test = new InterfaceTypeImplTest(); | |
1509 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass2); | |
1510 }); | |
1511 _ut.test('test_getLeastUpperBound_sharedSuperclass3', () { | |
1512 final __test = new InterfaceTypeImplTest(); | |
1513 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass3); | |
1514 }); | |
1515 _ut.test('test_getLeastUpperBound_sharedSuperclass4', () { | |
1516 final __test = new InterfaceTypeImplTest(); | |
1517 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass4); | |
1518 }); | |
1519 _ut.test('test_getLeastUpperBound_sharedSuperinterface1', () { | |
1520 final __test = new InterfaceTypeImplTest(); | |
1521 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface
1); | |
1522 }); | |
1523 _ut.test('test_getLeastUpperBound_sharedSuperinterface2', () { | |
1524 final __test = new InterfaceTypeImplTest(); | |
1525 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface
2); | |
1526 }); | |
1527 _ut.test('test_getLeastUpperBound_sharedSuperinterface3', () { | |
1528 final __test = new InterfaceTypeImplTest(); | |
1529 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface
3); | |
1530 }); | |
1531 _ut.test('test_getLeastUpperBound_sharedSuperinterface4', () { | |
1532 final __test = new InterfaceTypeImplTest(); | |
1533 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface
4); | |
1534 }); | |
1535 _ut.test('test_getLeastUpperBound_twoComparables', () { | |
1536 final __test = new InterfaceTypeImplTest(); | |
1537 runJUnitTest(__test, __test.test_getLeastUpperBound_twoComparables); | |
1538 }); | |
1539 _ut.test('test_getLeastUpperBound_typeParameters_different', () { | |
1540 final __test = new InterfaceTypeImplTest(); | |
1541 runJUnitTest(__test, __test.test_getLeastUpperBound_typeParameters_diffe
rent); | |
1542 }); | |
1543 _ut.test('test_getLeastUpperBound_typeParameters_same', () { | |
1544 final __test = new InterfaceTypeImplTest(); | |
1545 runJUnitTest(__test, __test.test_getLeastUpperBound_typeParameters_same)
; | |
1546 }); | |
1547 _ut.test('test_getMethod_implemented', () { | |
1548 final __test = new InterfaceTypeImplTest(); | |
1549 runJUnitTest(__test, __test.test_getMethod_implemented); | |
1550 }); | |
1551 _ut.test('test_getMethod_parameterized', () { | |
1552 final __test = new InterfaceTypeImplTest(); | |
1553 runJUnitTest(__test, __test.test_getMethod_parameterized); | |
1554 }); | |
1555 _ut.test('test_getMethod_unimplemented', () { | |
1556 final __test = new InterfaceTypeImplTest(); | |
1557 runJUnitTest(__test, __test.test_getMethod_unimplemented); | |
1558 }); | |
1559 _ut.test('test_getMethods', () { | |
1560 final __test = new InterfaceTypeImplTest(); | |
1561 runJUnitTest(__test, __test.test_getMethods); | |
1562 }); | |
1563 _ut.test('test_getMethods_empty', () { | |
1564 final __test = new InterfaceTypeImplTest(); | |
1565 runJUnitTest(__test, __test.test_getMethods_empty); | |
1566 }); | |
1567 _ut.test('test_getMixins_nonParameterized', () { | |
1568 final __test = new InterfaceTypeImplTest(); | |
1569 runJUnitTest(__test, __test.test_getMixins_nonParameterized); | |
1570 }); | |
1571 _ut.test('test_getMixins_parameterized', () { | |
1572 final __test = new InterfaceTypeImplTest(); | |
1573 runJUnitTest(__test, __test.test_getMixins_parameterized); | |
1574 }); | |
1575 _ut.test('test_getSetter_implemented', () { | |
1576 final __test = new InterfaceTypeImplTest(); | |
1577 runJUnitTest(__test, __test.test_getSetter_implemented); | |
1578 }); | |
1579 _ut.test('test_getSetter_parameterized', () { | |
1580 final __test = new InterfaceTypeImplTest(); | |
1581 runJUnitTest(__test, __test.test_getSetter_parameterized); | |
1582 }); | |
1583 _ut.test('test_getSetter_unimplemented', () { | |
1584 final __test = new InterfaceTypeImplTest(); | |
1585 runJUnitTest(__test, __test.test_getSetter_unimplemented); | |
1586 }); | |
1587 _ut.test('test_getSuperclass_nonParameterized', () { | |
1588 final __test = new InterfaceTypeImplTest(); | |
1589 runJUnitTest(__test, __test.test_getSuperclass_nonParameterized); | |
1590 }); | |
1591 _ut.test('test_getSuperclass_parameterized', () { | |
1592 final __test = new InterfaceTypeImplTest(); | |
1593 runJUnitTest(__test, __test.test_getSuperclass_parameterized); | |
1594 }); | |
1595 _ut.test('test_getTypeArguments_empty', () { | |
1596 final __test = new InterfaceTypeImplTest(); | |
1597 runJUnitTest(__test, __test.test_getTypeArguments_empty); | |
1598 }); | |
1599 _ut.test('test_hashCode', () { | |
1600 final __test = new InterfaceTypeImplTest(); | |
1601 runJUnitTest(__test, __test.test_hashCode); | |
1602 }); | |
1603 _ut.test('test_isDirectSupertypeOf_extends', () { | |
1604 final __test = new InterfaceTypeImplTest(); | |
1605 runJUnitTest(__test, __test.test_isDirectSupertypeOf_extends); | |
1606 }); | |
1607 _ut.test('test_isDirectSupertypeOf_false', () { | |
1608 final __test = new InterfaceTypeImplTest(); | |
1609 runJUnitTest(__test, __test.test_isDirectSupertypeOf_false); | |
1610 }); | |
1611 _ut.test('test_isDirectSupertypeOf_implements', () { | |
1612 final __test = new InterfaceTypeImplTest(); | |
1613 runJUnitTest(__test, __test.test_isDirectSupertypeOf_implements); | |
1614 }); | |
1615 _ut.test('test_isDirectSupertypeOf_with', () { | |
1616 final __test = new InterfaceTypeImplTest(); | |
1617 runJUnitTest(__test, __test.test_isDirectSupertypeOf_with); | |
1618 }); | |
1619 _ut.test('test_isMoreSpecificThan_bottom', () { | |
1620 final __test = new InterfaceTypeImplTest(); | |
1621 runJUnitTest(__test, __test.test_isMoreSpecificThan_bottom); | |
1622 }); | |
1623 _ut.test('test_isMoreSpecificThan_covariance', () { | |
1624 final __test = new InterfaceTypeImplTest(); | |
1625 runJUnitTest(__test, __test.test_isMoreSpecificThan_covariance); | |
1626 }); | |
1627 _ut.test('test_isMoreSpecificThan_directSupertype', () { | |
1628 final __test = new InterfaceTypeImplTest(); | |
1629 runJUnitTest(__test, __test.test_isMoreSpecificThan_directSupertype); | |
1630 }); | |
1631 _ut.test('test_isMoreSpecificThan_dynamic', () { | |
1632 final __test = new InterfaceTypeImplTest(); | |
1633 runJUnitTest(__test, __test.test_isMoreSpecificThan_dynamic); | |
1634 }); | |
1635 _ut.test('test_isMoreSpecificThan_self', () { | |
1636 final __test = new InterfaceTypeImplTest(); | |
1637 runJUnitTest(__test, __test.test_isMoreSpecificThan_self); | |
1638 }); | |
1639 _ut.test('test_isMoreSpecificThan_transitive_interface', () { | |
1640 final __test = new InterfaceTypeImplTest(); | |
1641 runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_interface
); | |
1642 }); | |
1643 _ut.test('test_isMoreSpecificThan_transitive_mixin', () { | |
1644 final __test = new InterfaceTypeImplTest(); | |
1645 runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_mixin); | |
1646 }); | |
1647 _ut.test('test_isMoreSpecificThan_transitive_recursive', () { | |
1648 final __test = new InterfaceTypeImplTest(); | |
1649 runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_recursive
); | |
1650 }); | |
1651 _ut.test('test_isMoreSpecificThan_transitive_superclass', () { | |
1652 final __test = new InterfaceTypeImplTest(); | |
1653 runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_superclas
s); | |
1654 }); | |
1655 _ut.test('test_isSubtypeOf_directSubtype', () { | |
1656 final __test = new InterfaceTypeImplTest(); | |
1657 runJUnitTest(__test, __test.test_isSubtypeOf_directSubtype); | |
1658 }); | |
1659 _ut.test('test_isSubtypeOf_dynamic', () { | |
1660 final __test = new InterfaceTypeImplTest(); | |
1661 runJUnitTest(__test, __test.test_isSubtypeOf_dynamic); | |
1662 }); | |
1663 _ut.test('test_isSubtypeOf_function', () { | |
1664 final __test = new InterfaceTypeImplTest(); | |
1665 runJUnitTest(__test, __test.test_isSubtypeOf_function); | |
1666 }); | |
1667 _ut.test('test_isSubtypeOf_interface', () { | |
1668 final __test = new InterfaceTypeImplTest(); | |
1669 runJUnitTest(__test, __test.test_isSubtypeOf_interface); | |
1670 }); | |
1671 _ut.test('test_isSubtypeOf_mixins', () { | |
1672 final __test = new InterfaceTypeImplTest(); | |
1673 runJUnitTest(__test, __test.test_isSubtypeOf_mixins); | |
1674 }); | |
1675 _ut.test('test_isSubtypeOf_object', () { | |
1676 final __test = new InterfaceTypeImplTest(); | |
1677 runJUnitTest(__test, __test.test_isSubtypeOf_object); | |
1678 }); | |
1679 _ut.test('test_isSubtypeOf_self', () { | |
1680 final __test = new InterfaceTypeImplTest(); | |
1681 runJUnitTest(__test, __test.test_isSubtypeOf_self); | |
1682 }); | |
1683 _ut.test('test_isSubtypeOf_transitive_recursive', () { | |
1684 final __test = new InterfaceTypeImplTest(); | |
1685 runJUnitTest(__test, __test.test_isSubtypeOf_transitive_recursive); | |
1686 }); | |
1687 _ut.test('test_isSubtypeOf_transitive_superclass', () { | |
1688 final __test = new InterfaceTypeImplTest(); | |
1689 runJUnitTest(__test, __test.test_isSubtypeOf_transitive_superclass); | |
1690 }); | |
1691 _ut.test('test_isSubtypeOf_typeArguments', () { | |
1692 final __test = new InterfaceTypeImplTest(); | |
1693 runJUnitTest(__test, __test.test_isSubtypeOf_typeArguments); | |
1694 }); | |
1695 _ut.test('test_isSupertypeOf_directSupertype', () { | |
1696 final __test = new InterfaceTypeImplTest(); | |
1697 runJUnitTest(__test, __test.test_isSupertypeOf_directSupertype); | |
1698 }); | |
1699 _ut.test('test_isSupertypeOf_dynamic', () { | |
1700 final __test = new InterfaceTypeImplTest(); | |
1701 runJUnitTest(__test, __test.test_isSupertypeOf_dynamic); | |
1702 }); | |
1703 _ut.test('test_isSupertypeOf_indirectSupertype', () { | |
1704 final __test = new InterfaceTypeImplTest(); | |
1705 runJUnitTest(__test, __test.test_isSupertypeOf_indirectSupertype); | |
1706 }); | |
1707 _ut.test('test_isSupertypeOf_interface', () { | |
1708 final __test = new InterfaceTypeImplTest(); | |
1709 runJUnitTest(__test, __test.test_isSupertypeOf_interface); | |
1710 }); | |
1711 _ut.test('test_isSupertypeOf_mixins', () { | |
1712 final __test = new InterfaceTypeImplTest(); | |
1713 runJUnitTest(__test, __test.test_isSupertypeOf_mixins); | |
1714 }); | |
1715 _ut.test('test_isSupertypeOf_object', () { | |
1716 final __test = new InterfaceTypeImplTest(); | |
1717 runJUnitTest(__test, __test.test_isSupertypeOf_object); | |
1718 }); | |
1719 _ut.test('test_isSupertypeOf_self', () { | |
1720 final __test = new InterfaceTypeImplTest(); | |
1721 runJUnitTest(__test, __test.test_isSupertypeOf_self); | |
1722 }); | |
1723 _ut.test('test_lookUpGetter_implemented', () { | |
1724 final __test = new InterfaceTypeImplTest(); | |
1725 runJUnitTest(__test, __test.test_lookUpGetter_implemented); | |
1726 }); | |
1727 _ut.test('test_lookUpGetter_inherited', () { | |
1728 final __test = new InterfaceTypeImplTest(); | |
1729 runJUnitTest(__test, __test.test_lookUpGetter_inherited); | |
1730 }); | |
1731 _ut.test('test_lookUpGetter_recursive', () { | |
1732 final __test = new InterfaceTypeImplTest(); | |
1733 runJUnitTest(__test, __test.test_lookUpGetter_recursive); | |
1734 }); | |
1735 _ut.test('test_lookUpGetter_unimplemented', () { | |
1736 final __test = new InterfaceTypeImplTest(); | |
1737 runJUnitTest(__test, __test.test_lookUpGetter_unimplemented); | |
1738 }); | |
1739 _ut.test('test_lookUpMethod_implemented', () { | |
1740 final __test = new InterfaceTypeImplTest(); | |
1741 runJUnitTest(__test, __test.test_lookUpMethod_implemented); | |
1742 }); | |
1743 _ut.test('test_lookUpMethod_inherited', () { | |
1744 final __test = new InterfaceTypeImplTest(); | |
1745 runJUnitTest(__test, __test.test_lookUpMethod_inherited); | |
1746 }); | |
1747 _ut.test('test_lookUpMethod_parameterized', () { | |
1748 final __test = new InterfaceTypeImplTest(); | |
1749 runJUnitTest(__test, __test.test_lookUpMethod_parameterized); | |
1750 }); | |
1751 _ut.test('test_lookUpMethod_recursive', () { | |
1752 final __test = new InterfaceTypeImplTest(); | |
1753 runJUnitTest(__test, __test.test_lookUpMethod_recursive); | |
1754 }); | |
1755 _ut.test('test_lookUpMethod_unimplemented', () { | |
1756 final __test = new InterfaceTypeImplTest(); | |
1757 runJUnitTest(__test, __test.test_lookUpMethod_unimplemented); | |
1758 }); | |
1759 _ut.test('test_lookUpSetter_implemented', () { | |
1760 final __test = new InterfaceTypeImplTest(); | |
1761 runJUnitTest(__test, __test.test_lookUpSetter_implemented); | |
1762 }); | |
1763 _ut.test('test_lookUpSetter_inherited', () { | |
1764 final __test = new InterfaceTypeImplTest(); | |
1765 runJUnitTest(__test, __test.test_lookUpSetter_inherited); | |
1766 }); | |
1767 _ut.test('test_lookUpSetter_recursive', () { | |
1768 final __test = new InterfaceTypeImplTest(); | |
1769 runJUnitTest(__test, __test.test_lookUpSetter_recursive); | |
1770 }); | |
1771 _ut.test('test_lookUpSetter_unimplemented', () { | |
1772 final __test = new InterfaceTypeImplTest(); | |
1773 runJUnitTest(__test, __test.test_lookUpSetter_unimplemented); | |
1774 }); | |
1775 _ut.test('test_setTypeArguments', () { | |
1776 final __test = new InterfaceTypeImplTest(); | |
1777 runJUnitTest(__test, __test.test_setTypeArguments); | |
1778 }); | |
1779 _ut.test('test_substitute_equal', () { | |
1780 final __test = new InterfaceTypeImplTest(); | |
1781 runJUnitTest(__test, __test.test_substitute_equal); | |
1782 }); | |
1783 _ut.test('test_substitute_exception', () { | |
1784 final __test = new InterfaceTypeImplTest(); | |
1785 runJUnitTest(__test, __test.test_substitute_exception); | |
1786 }); | |
1787 _ut.test('test_substitute_notEqual', () { | |
1788 final __test = new InterfaceTypeImplTest(); | |
1789 runJUnitTest(__test, __test.test_substitute_notEqual); | |
1790 }); | |
1791 }); | |
1792 } | |
1793 } | |
1794 /** | |
1795 * The class `ElementFactory` defines utility methods used to create elements fo
r testing | |
1796 * purposes. The elements that are created are complete in the sense that as muc
h of the element | |
1797 * model as can be created, given the provided information, has been created. | |
1798 */ | |
1799 class ElementFactory { | |
1800 | |
1801 /** | |
1802 * The element representing the class 'Object'. | |
1803 */ | |
1804 static ClassElementImpl _objectElement; | |
1805 static ClassElementImpl classElement(String typeName, InterfaceType superclass
Type, List<String> parameterNames) { | |
1806 ClassElementImpl element = new ClassElementImpl(ASTFactory.identifier3(typeN
ame)); | |
1807 element.supertype = superclassType; | |
1808 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element); | |
1809 element.type = type; | |
1810 int count = parameterNames.length; | |
1811 if (count > 0) { | |
1812 List<TypeParameterElementImpl> typeParameters = new List<TypeParameterElem
entImpl>(count); | |
1813 List<TypeParameterTypeImpl> typeParameterTypes = new List<TypeParameterTyp
eImpl>(count); | |
1814 for (int i = 0; i < count; i++) { | |
1815 TypeParameterElementImpl typeParameter = new TypeParameterElementImpl(AS
TFactory.identifier3(parameterNames[i])); | |
1816 typeParameters[i] = typeParameter; | |
1817 typeParameterTypes[i] = new TypeParameterTypeImpl(typeParameter); | |
1818 typeParameter.type = typeParameterTypes[i]; | |
1819 } | |
1820 element.typeParameters = typeParameters; | |
1821 type.typeArguments = typeParameterTypes; | |
1822 } | |
1823 return element; | |
1824 } | |
1825 static ClassElementImpl classElement2(String typeName, List<String> parameterN
ames) => classElement(typeName, object.type, parameterNames); | |
1826 static ConstructorElementImpl constructorElement(ClassElement definingClass, S
tring name) { | |
1827 Type2 type = definingClass.type; | |
1828 ConstructorElementImpl constructor = new ConstructorElementImpl(name == null
? null : ASTFactory.identifier3(name)); | |
1829 constructor.returnType = type; | |
1830 FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor); | |
1831 constructor.type = constructorType; | |
1832 return constructor; | |
1833 } | |
1834 static ExportElementImpl exportFor(LibraryElement exportedLibrary, List<Namesp
aceCombinator> combinators) { | |
1835 ExportElementImpl spec = new ExportElementImpl(); | |
1836 spec.exportedLibrary = exportedLibrary; | |
1837 spec.combinators = combinators; | |
1838 return spec; | |
1839 } | |
1840 static FieldElementImpl fieldElement(String name, bool isStatic, bool isFinal,
bool isConst, Type2 type) { | |
1841 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier3(na
me)); | |
1842 field.const3 = isConst; | |
1843 field.final2 = isFinal; | |
1844 field.static = isStatic; | |
1845 field.type = type; | |
1846 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi
eld); | |
1847 getter.getter = true; | |
1848 getter.static = isStatic; | |
1849 getter.synthetic = true; | |
1850 getter.variable = field; | |
1851 getter.returnType = type; | |
1852 field.getter = getter; | |
1853 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); | |
1854 getter.type = getterType; | |
1855 if (!isConst && !isFinal) { | |
1856 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(
field); | |
1857 setter.setter = true; | |
1858 setter.static = isStatic; | |
1859 setter.synthetic = true; | |
1860 setter.variable = field; | |
1861 setter.parameters = <ParameterElement> [requiredParameter2("_${name}", typ
e)]; | |
1862 setter.returnType = VoidTypeImpl.instance; | |
1863 setter.type = new FunctionTypeImpl.con1(setter); | |
1864 field.setter = setter; | |
1865 } | |
1866 return field; | |
1867 } | |
1868 static FieldFormalParameterElementImpl fieldFormalParameter(Identifier name) =
> new FieldFormalParameterElementImpl(name); | |
1869 static FunctionElementImpl functionElement(String functionName) => functionEle
ment4(functionName, null, null, null, null); | |
1870 static FunctionElementImpl functionElement2(String functionName, ClassElement
returnElement) => functionElement3(functionName, returnElement, null, null); | |
1871 static FunctionElementImpl functionElement3(String functionName, ClassElement
returnElement, List<ClassElement> normalParameters, List<ClassElement> optionalP
arameters) { | |
1872 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor
y.identifier3(functionName)); | |
1873 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); | |
1874 functionElement.type = functionType; | |
1875 if (returnElement == null) { | |
1876 functionElement.returnType = VoidTypeImpl.instance; | |
1877 } else { | |
1878 functionElement.returnType = returnElement.type; | |
1879 } | |
1880 int normalCount = normalParameters == null ? 0 : normalParameters.length; | |
1881 int optionalCount = optionalParameters == null ? 0 : optionalParameters.leng
th; | |
1882 int totalCount = normalCount + optionalCount; | |
1883 List<ParameterElement> parameters = new List<ParameterElement>(totalCount); | |
1884 for (int i = 0; i < totalCount; i++) { | |
1885 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.
identifier3("a${i}")); | |
1886 if (i < normalCount) { | |
1887 parameter.type = normalParameters[i].type; | |
1888 parameter.parameterKind = ParameterKind.REQUIRED; | |
1889 } else { | |
1890 parameter.type = optionalParameters[i - normalCount].type; | |
1891 parameter.parameterKind = ParameterKind.POSITIONAL; | |
1892 } | |
1893 parameters[i] = parameter; | |
1894 } | |
1895 functionElement.parameters = parameters; | |
1896 return functionElement; | |
1897 } | |
1898 static FunctionElementImpl functionElement4(String functionName, ClassElement
returnElement, List<ClassElement> normalParameters, List<String> names, List<Cla
ssElement> namedParameters) { | |
1899 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor
y.identifier3(functionName)); | |
1900 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); | |
1901 functionElement.type = functionType; | |
1902 int normalCount = normalParameters == null ? 0 : normalParameters.length; | |
1903 int nameCount = names == null ? 0 : names.length; | |
1904 int typeCount = namedParameters == null ? 0 : namedParameters.length; | |
1905 if (names != null && nameCount != typeCount) { | |
1906 throw new IllegalStateException("The passed String[] and ClassElement[] ar
rays had different lengths."); | |
1907 } | |
1908 int totalCount = normalCount + nameCount; | |
1909 List<ParameterElement> parameters = new List<ParameterElement>(totalCount); | |
1910 for (int i = 0; i < totalCount; i++) { | |
1911 if (i < normalCount) { | |
1912 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactor
y.identifier3("a${i}")); | |
1913 parameter.type = normalParameters[i].type; | |
1914 parameter.parameterKind = ParameterKind.REQUIRED; | |
1915 parameters[i] = parameter; | |
1916 } else { | |
1917 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactor
y.identifier3(names[i - normalCount])); | |
1918 parameter.type = namedParameters[i - normalCount].type; | |
1919 parameter.parameterKind = ParameterKind.NAMED; | |
1920 parameters[i] = parameter; | |
1921 } | |
1922 } | |
1923 functionElement.parameters = parameters; | |
1924 if (returnElement == null) { | |
1925 functionElement.returnType = VoidTypeImpl.instance; | |
1926 } else { | |
1927 functionElement.returnType = returnElement.type; | |
1928 } | |
1929 return functionElement; | |
1930 } | |
1931 static FunctionElementImpl functionElement5(String functionName, List<ClassEle
ment> normalParameters) => functionElement3(functionName, null, normalParameters
, null); | |
1932 static FunctionElementImpl functionElement6(String functionName, List<ClassEle
ment> normalParameters, List<ClassElement> optionalParameters) => functionElemen
t3(functionName, null, normalParameters, optionalParameters); | |
1933 static FunctionElementImpl functionElement7(String functionName, List<ClassEle
ment> normalParameters, List<String> names, List<ClassElement> namedParameters)
=> functionElement4(functionName, null, normalParameters, names, namedParameters
); | |
1934 static ClassElementImpl get object { | |
1935 if (_objectElement == null) { | |
1936 _objectElement = classElement("Object", null as InterfaceType, []); | |
1937 } | |
1938 return _objectElement; | |
1939 } | |
1940 static PropertyAccessorElementImpl getterElement(String name, bool isStatic, T
ype2 type) { | |
1941 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier3(na
me)); | |
1942 field.static = isStatic; | |
1943 field.synthetic = true; | |
1944 field.type = type; | |
1945 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi
eld); | |
1946 getter.getter = true; | |
1947 getter.static = isStatic; | |
1948 getter.variable = field; | |
1949 getter.returnType = type; | |
1950 field.getter = getter; | |
1951 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); | |
1952 getter.type = getterType; | |
1953 return getter; | |
1954 } | |
1955 static ImportElementImpl importFor(LibraryElement importedLibrary, PrefixEleme
nt prefix, List<NamespaceCombinator> combinators) { | |
1956 ImportElementImpl spec = new ImportElementImpl(); | |
1957 spec.importedLibrary = importedLibrary; | |
1958 spec.prefix = prefix; | |
1959 spec.combinators = combinators; | |
1960 return spec; | |
1961 } | |
1962 static LibraryElementImpl library(AnalysisContext context, String libraryName)
{ | |
1963 String fileName = "/${libraryName}.dart"; | |
1964 FileBasedSource source = new FileBasedSource.con1(context.sourceFactory.cont
entCache, FileUtilities2.createFile(fileName)); | |
1965 CompilationUnitElementImpl unit = new CompilationUnitElementImpl(fileName); | |
1966 unit.source = source; | |
1967 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr
aryIdentifier2([libraryName])); | |
1968 library.definingCompilationUnit = unit; | |
1969 return library; | |
1970 } | |
1971 static LocalVariableElementImpl localVariableElement(Identifier name) => new L
ocalVariableElementImpl(name); | |
1972 static LocalVariableElementImpl localVariableElement2(String name) => new Loca
lVariableElementImpl(ASTFactory.identifier3(name)); | |
1973 static MethodElementImpl methodElement(String methodName, Type2 returnType, Li
st<Type2> argumentTypes) { | |
1974 MethodElementImpl method = new MethodElementImpl.con1(ASTFactory.identifier3
(methodName)); | |
1975 int count = argumentTypes.length; | |
1976 List<ParameterElement> parameters = new List<ParameterElement>(count); | |
1977 for (int i = 0; i < count; i++) { | |
1978 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.
identifier3("a${i}")); | |
1979 parameter.type = argumentTypes[i]; | |
1980 parameter.parameterKind = ParameterKind.REQUIRED; | |
1981 parameters[i] = parameter; | |
1982 } | |
1983 method.parameters = parameters; | |
1984 method.returnType = returnType; | |
1985 FunctionTypeImpl methodType = new FunctionTypeImpl.con1(method); | |
1986 method.type = methodType; | |
1987 return method; | |
1988 } | |
1989 static ParameterElementImpl namedParameter(String name) { | |
1990 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.id
entifier3(name)); | |
1991 parameter.parameterKind = ParameterKind.NAMED; | |
1992 return parameter; | |
1993 } | |
1994 static ParameterElementImpl namedParameter2(String name, Type2 type) { | |
1995 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.id
entifier3(name)); | |
1996 parameter.parameterKind = ParameterKind.NAMED; | |
1997 parameter.type = type; | |
1998 return parameter; | |
1999 } | |
2000 static ParameterElementImpl positionalParameter(String name) { | |
2001 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.id
entifier3(name)); | |
2002 parameter.parameterKind = ParameterKind.POSITIONAL; | |
2003 return parameter; | |
2004 } | |
2005 static ParameterElementImpl positionalParameter2(String name, Type2 type) { | |
2006 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.id
entifier3(name)); | |
2007 parameter.parameterKind = ParameterKind.POSITIONAL; | |
2008 parameter.type = type; | |
2009 return parameter; | |
2010 } | |
2011 static PrefixElementImpl prefix(String name) => new PrefixElementImpl(ASTFacto
ry.identifier3(name)); | |
2012 static ParameterElementImpl requiredParameter(String name) { | |
2013 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.id
entifier3(name)); | |
2014 parameter.parameterKind = ParameterKind.REQUIRED; | |
2015 return parameter; | |
2016 } | |
2017 static ParameterElementImpl requiredParameter2(String name, Type2 type) { | |
2018 ParameterElementImpl parameter = new ParameterElementImpl.con1(ASTFactory.id
entifier3(name)); | |
2019 parameter.parameterKind = ParameterKind.REQUIRED; | |
2020 parameter.type = type; | |
2021 return parameter; | |
2022 } | |
2023 static PropertyAccessorElementImpl setterElement(String name, bool isStatic, T
ype2 type) { | |
2024 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier3(na
me)); | |
2025 field.static = isStatic; | |
2026 field.synthetic = true; | |
2027 field.type = type; | |
2028 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi
eld); | |
2029 getter.getter = true; | |
2030 getter.static = isStatic; | |
2031 getter.variable = field; | |
2032 getter.returnType = type; | |
2033 field.getter = getter; | |
2034 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); | |
2035 getter.type = getterType; | |
2036 ParameterElementImpl parameter = requiredParameter2("a", type); | |
2037 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(fi
eld); | |
2038 setter.setter = true; | |
2039 setter.static = isStatic; | |
2040 setter.synthetic = true; | |
2041 setter.variable = field; | |
2042 setter.parameters = <ParameterElement> [parameter]; | |
2043 setter.returnType = VoidTypeImpl.instance; | |
2044 setter.type = new FunctionTypeImpl.con1(setter); | |
2045 field.setter = setter; | |
2046 return setter; | |
2047 } | |
2048 static TopLevelVariableElementImpl topLevelVariableElement(Identifier name) =>
new TopLevelVariableElementImpl.con1(name); | |
2049 static TopLevelVariableElementImpl topLevelVariableElement2(String name) => ne
w TopLevelVariableElementImpl.con2(name); | |
2050 static TopLevelVariableElementImpl topLevelVariableElement3(String name, bool
isFinal, Type2 type) { | |
2051 TopLevelVariableElementImpl variable = new TopLevelVariableElementImpl.con2(
name); | |
2052 variable.final2 = isFinal; | |
2053 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(va
riable); | |
2054 getter.getter = true; | |
2055 getter.static = true; | |
2056 getter.synthetic = true; | |
2057 getter.variable = variable; | |
2058 getter.returnType = type; | |
2059 variable.getter = getter; | |
2060 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); | |
2061 getter.type = getterType; | |
2062 if (!isFinal) { | |
2063 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(
variable); | |
2064 setter.setter = true; | |
2065 setter.static = true; | |
2066 setter.synthetic = true; | |
2067 setter.variable = variable; | |
2068 setter.parameters = <ParameterElement> [requiredParameter2("_${name}", typ
e)]; | |
2069 setter.returnType = VoidTypeImpl.instance; | |
2070 setter.type = new FunctionTypeImpl.con1(setter); | |
2071 variable.setter = setter; | |
2072 } | |
2073 return variable; | |
2074 } | |
2075 } | |
2076 class ElementKindTest extends EngineTestCase { | |
2077 void test_of_nonNull() { | |
2078 JUnitTestCase.assertSame(ElementKind.CLASS, ElementKind.of(ElementFactory.cl
assElement2("A", []))); | |
2079 } | |
2080 void test_of_null() { | |
2081 JUnitTestCase.assertSame(ElementKind.ERROR, ElementKind.of(null)); | |
2082 } | |
2083 static dartSuite() { | |
2084 _ut.group('ElementKindTest', () { | |
2085 _ut.test('test_of_nonNull', () { | |
2086 final __test = new ElementKindTest(); | |
2087 runJUnitTest(__test, __test.test_of_nonNull); | |
2088 }); | |
2089 _ut.test('test_of_null', () { | |
2090 final __test = new ElementKindTest(); | |
2091 runJUnitTest(__test, __test.test_of_null); | |
2092 }); | |
2093 }); | |
2094 } | |
2095 } | |
2096 class ClassElementImplTest extends EngineTestCase { | |
2097 void test_getAllSupertypes_interface() { | |
2098 ClassElement classA = ElementFactory.classElement2("A", []); | |
2099 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
2100 ClassElementImpl elementC = ElementFactory.classElement2("C", []); | |
2101 InterfaceType typeObject = classA.supertype; | |
2102 InterfaceType typeA = classA.type; | |
2103 InterfaceType typeB = classB.type; | |
2104 InterfaceType typeC = elementC.type; | |
2105 elementC.interfaces = <InterfaceType> [typeB]; | |
2106 List<InterfaceType> supers = elementC.allSupertypes; | |
2107 List<InterfaceType> types = new List<InterfaceType>(); | |
2108 types.addAll(supers); | |
2109 JUnitTestCase.assertTrue(types.contains(typeA)); | |
2110 JUnitTestCase.assertTrue(types.contains(typeB)); | |
2111 JUnitTestCase.assertTrue(types.contains(typeObject)); | |
2112 JUnitTestCase.assertFalse(types.contains(typeC)); | |
2113 } | |
2114 void test_getAllSupertypes_mixins() { | |
2115 ClassElement classA = ElementFactory.classElement2("A", []); | |
2116 ClassElement classB = ElementFactory.classElement("B", classA.type, []); | |
2117 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
2118 InterfaceType typeObject = classA.supertype; | |
2119 InterfaceType typeA = classA.type; | |
2120 InterfaceType typeB = classB.type; | |
2121 InterfaceType typeC = classC.type; | |
2122 classC.mixins = <InterfaceType> [typeB]; | |
2123 List<InterfaceType> supers = classC.allSupertypes; | |
2124 List<InterfaceType> types = new List<InterfaceType>(); | |
2125 types.addAll(supers); | |
2126 JUnitTestCase.assertFalse(types.contains(typeA)); | |
2127 JUnitTestCase.assertTrue(types.contains(typeB)); | |
2128 JUnitTestCase.assertTrue(types.contains(typeObject)); | |
2129 JUnitTestCase.assertFalse(types.contains(typeC)); | |
2130 } | |
2131 void test_getAllSupertypes_recursive() { | |
2132 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2133 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2134 classA.supertype = classB.type; | |
2135 List<InterfaceType> supers = classB.allSupertypes; | |
2136 EngineTestCase.assertLength(1, supers); | |
2137 } | |
2138 void test_getMethod_declared() { | |
2139 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2140 String methodName = "m"; | |
2141 MethodElement method = ElementFactory.methodElement(methodName, null, []); | |
2142 classA.methods = <MethodElement> [method]; | |
2143 JUnitTestCase.assertSame(method, classA.getMethod(methodName)); | |
2144 } | |
2145 void test_getMethod_undeclared() { | |
2146 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2147 String methodName = "m"; | |
2148 MethodElement method = ElementFactory.methodElement(methodName, null, []); | |
2149 classA.methods = <MethodElement> [method]; | |
2150 JUnitTestCase.assertNull(classA.getMethod("${methodName}x")); | |
2151 } | |
2152 void test_hasNonFinalField_false_const() { | |
2153 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2154 classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, fals
e, true, classA.type)]; | |
2155 JUnitTestCase.assertFalse(classA.hasNonFinalField()); | |
2156 } | |
2157 void test_hasNonFinalField_false_final() { | |
2158 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2159 classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, true
, false, classA.type)]; | |
2160 JUnitTestCase.assertFalse(classA.hasNonFinalField()); | |
2161 } | |
2162 void test_hasNonFinalField_false_recursive() { | |
2163 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2164 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2165 classA.supertype = classB.type; | |
2166 JUnitTestCase.assertFalse(classA.hasNonFinalField()); | |
2167 } | |
2168 void test_hasNonFinalField_true_immediate() { | |
2169 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2170 classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, fals
e, false, classA.type)]; | |
2171 JUnitTestCase.assertTrue(classA.hasNonFinalField()); | |
2172 } | |
2173 void test_hasNonFinalField_true_inherited() { | |
2174 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2175 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2176 classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, fals
e, false, classA.type)]; | |
2177 JUnitTestCase.assertTrue(classB.hasNonFinalField()); | |
2178 } | |
2179 void test_lookUpGetter_declared() { | |
2180 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2181 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2182 String getterName = "g"; | |
2183 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa
lse, null); | |
2184 classA.accessors = <PropertyAccessorElement> [getter]; | |
2185 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA]; | |
2186 JUnitTestCase.assertSame(getter, classA.lookUpGetter(getterName, library)); | |
2187 } | |
2188 void test_lookUpGetter_inherited() { | |
2189 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2190 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2191 String getterName = "g"; | |
2192 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa
lse, null); | |
2193 classA.accessors = <PropertyAccessorElement> [getter]; | |
2194 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2195 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA, classB]; | |
2196 JUnitTestCase.assertSame(getter, classB.lookUpGetter(getterName, library)); | |
2197 } | |
2198 void test_lookUpGetter_undeclared() { | |
2199 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2200 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2201 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA]; | |
2202 JUnitTestCase.assertNull(classA.lookUpGetter("g", library)); | |
2203 } | |
2204 void test_lookUpGetter_undeclared_recursive() { | |
2205 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2206 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2207 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2208 classA.supertype = classB.type; | |
2209 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA, classB]; | |
2210 JUnitTestCase.assertNull(classA.lookUpGetter("g", library)); | |
2211 } | |
2212 void test_lookUpMethod_declared() { | |
2213 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2214 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2215 String methodName = "m"; | |
2216 MethodElement method = ElementFactory.methodElement(methodName, null, []); | |
2217 classA.methods = <MethodElement> [method]; | |
2218 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA]; | |
2219 JUnitTestCase.assertSame(method, classA.lookUpMethod(methodName, library)); | |
2220 } | |
2221 void test_lookUpMethod_inherited() { | |
2222 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2223 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2224 String methodName = "m"; | |
2225 MethodElement method = ElementFactory.methodElement(methodName, null, []); | |
2226 classA.methods = <MethodElement> [method]; | |
2227 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2228 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA, classB]; | |
2229 JUnitTestCase.assertSame(method, classB.lookUpMethod(methodName, library)); | |
2230 } | |
2231 void test_lookUpMethod_undeclared() { | |
2232 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2233 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2234 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA]; | |
2235 JUnitTestCase.assertNull(classA.lookUpMethod("m", library)); | |
2236 } | |
2237 void test_lookUpMethod_undeclared_recursive() { | |
2238 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2239 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2240 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2241 classA.supertype = classB.type; | |
2242 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA, classB]; | |
2243 JUnitTestCase.assertNull(classA.lookUpMethod("m", library)); | |
2244 } | |
2245 void test_lookUpSetter_declared() { | |
2246 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2247 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2248 String setterName = "s"; | |
2249 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa
lse, null); | |
2250 classA.accessors = <PropertyAccessorElement> [setter]; | |
2251 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA]; | |
2252 JUnitTestCase.assertSame(setter, classA.lookUpSetter(setterName, library)); | |
2253 } | |
2254 void test_lookUpSetter_inherited() { | |
2255 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2256 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2257 String setterName = "s"; | |
2258 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa
lse, null); | |
2259 classA.accessors = <PropertyAccessorElement> [setter]; | |
2260 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2261 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA, classB]; | |
2262 JUnitTestCase.assertSame(setter, classB.lookUpSetter(setterName, library)); | |
2263 } | |
2264 void test_lookUpSetter_undeclared() { | |
2265 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2266 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2267 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA]; | |
2268 JUnitTestCase.assertNull(classA.lookUpSetter("s", library)); | |
2269 } | |
2270 void test_lookUpSetter_undeclared_recursive() { | |
2271 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2272 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
2273 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
2274 classA.supertype = classB.type; | |
2275 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classA, classB]; | |
2276 JUnitTestCase.assertNull(classA.lookUpSetter("s", library)); | |
2277 } | |
2278 static dartSuite() { | |
2279 _ut.group('ClassElementImplTest', () { | |
2280 _ut.test('test_getAllSupertypes_interface', () { | |
2281 final __test = new ClassElementImplTest(); | |
2282 runJUnitTest(__test, __test.test_getAllSupertypes_interface); | |
2283 }); | |
2284 _ut.test('test_getAllSupertypes_mixins', () { | |
2285 final __test = new ClassElementImplTest(); | |
2286 runJUnitTest(__test, __test.test_getAllSupertypes_mixins); | |
2287 }); | |
2288 _ut.test('test_getAllSupertypes_recursive', () { | |
2289 final __test = new ClassElementImplTest(); | |
2290 runJUnitTest(__test, __test.test_getAllSupertypes_recursive); | |
2291 }); | |
2292 _ut.test('test_getMethod_declared', () { | |
2293 final __test = new ClassElementImplTest(); | |
2294 runJUnitTest(__test, __test.test_getMethod_declared); | |
2295 }); | |
2296 _ut.test('test_getMethod_undeclared', () { | |
2297 final __test = new ClassElementImplTest(); | |
2298 runJUnitTest(__test, __test.test_getMethod_undeclared); | |
2299 }); | |
2300 _ut.test('test_hasNonFinalField_false_const', () { | |
2301 final __test = new ClassElementImplTest(); | |
2302 runJUnitTest(__test, __test.test_hasNonFinalField_false_const); | |
2303 }); | |
2304 _ut.test('test_hasNonFinalField_false_final', () { | |
2305 final __test = new ClassElementImplTest(); | |
2306 runJUnitTest(__test, __test.test_hasNonFinalField_false_final); | |
2307 }); | |
2308 _ut.test('test_hasNonFinalField_false_recursive', () { | |
2309 final __test = new ClassElementImplTest(); | |
2310 runJUnitTest(__test, __test.test_hasNonFinalField_false_recursive); | |
2311 }); | |
2312 _ut.test('test_hasNonFinalField_true_immediate', () { | |
2313 final __test = new ClassElementImplTest(); | |
2314 runJUnitTest(__test, __test.test_hasNonFinalField_true_immediate); | |
2315 }); | |
2316 _ut.test('test_hasNonFinalField_true_inherited', () { | |
2317 final __test = new ClassElementImplTest(); | |
2318 runJUnitTest(__test, __test.test_hasNonFinalField_true_inherited); | |
2319 }); | |
2320 _ut.test('test_lookUpGetter_declared', () { | |
2321 final __test = new ClassElementImplTest(); | |
2322 runJUnitTest(__test, __test.test_lookUpGetter_declared); | |
2323 }); | |
2324 _ut.test('test_lookUpGetter_inherited', () { | |
2325 final __test = new ClassElementImplTest(); | |
2326 runJUnitTest(__test, __test.test_lookUpGetter_inherited); | |
2327 }); | |
2328 _ut.test('test_lookUpGetter_undeclared', () { | |
2329 final __test = new ClassElementImplTest(); | |
2330 runJUnitTest(__test, __test.test_lookUpGetter_undeclared); | |
2331 }); | |
2332 _ut.test('test_lookUpGetter_undeclared_recursive', () { | |
2333 final __test = new ClassElementImplTest(); | |
2334 runJUnitTest(__test, __test.test_lookUpGetter_undeclared_recursive); | |
2335 }); | |
2336 _ut.test('test_lookUpMethod_declared', () { | |
2337 final __test = new ClassElementImplTest(); | |
2338 runJUnitTest(__test, __test.test_lookUpMethod_declared); | |
2339 }); | |
2340 _ut.test('test_lookUpMethod_inherited', () { | |
2341 final __test = new ClassElementImplTest(); | |
2342 runJUnitTest(__test, __test.test_lookUpMethod_inherited); | |
2343 }); | |
2344 _ut.test('test_lookUpMethod_undeclared', () { | |
2345 final __test = new ClassElementImplTest(); | |
2346 runJUnitTest(__test, __test.test_lookUpMethod_undeclared); | |
2347 }); | |
2348 _ut.test('test_lookUpMethod_undeclared_recursive', () { | |
2349 final __test = new ClassElementImplTest(); | |
2350 runJUnitTest(__test, __test.test_lookUpMethod_undeclared_recursive); | |
2351 }); | |
2352 _ut.test('test_lookUpSetter_declared', () { | |
2353 final __test = new ClassElementImplTest(); | |
2354 runJUnitTest(__test, __test.test_lookUpSetter_declared); | |
2355 }); | |
2356 _ut.test('test_lookUpSetter_inherited', () { | |
2357 final __test = new ClassElementImplTest(); | |
2358 runJUnitTest(__test, __test.test_lookUpSetter_inherited); | |
2359 }); | |
2360 _ut.test('test_lookUpSetter_undeclared', () { | |
2361 final __test = new ClassElementImplTest(); | |
2362 runJUnitTest(__test, __test.test_lookUpSetter_undeclared); | |
2363 }); | |
2364 _ut.test('test_lookUpSetter_undeclared_recursive', () { | |
2365 final __test = new ClassElementImplTest(); | |
2366 runJUnitTest(__test, __test.test_lookUpSetter_undeclared_recursive); | |
2367 }); | |
2368 }); | |
2369 } | |
2370 } | |
2371 class ElementImplTest extends EngineTestCase { | |
2372 void test_equals() { | |
2373 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2374 ClassElementImpl classElement = ElementFactory.classElement2("C", []); | |
2375 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classElement]; | |
2376 FieldElement field = ElementFactory.fieldElement("next", false, false, false
, classElement.type); | |
2377 classElement.fields = <FieldElement> [field]; | |
2378 JUnitTestCase.assertTrue(field == field); | |
2379 JUnitTestCase.assertFalse(field == field.getter); | |
2380 JUnitTestCase.assertFalse(field == field.setter); | |
2381 JUnitTestCase.assertFalse(field.getter == field.setter); | |
2382 } | |
2383 void test_isAccessibleIn_private_differentLibrary() { | |
2384 AnalysisContextImpl context = createAnalysisContext(); | |
2385 LibraryElementImpl library1 = ElementFactory.library(context, "lib1"); | |
2386 ClassElement classElement = ElementFactory.classElement2("_C", []); | |
2387 ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = <
ClassElement> [classElement]; | |
2388 LibraryElementImpl library2 = ElementFactory.library(context, "lib2"); | |
2389 JUnitTestCase.assertFalse(classElement.isAccessibleIn(library2)); | |
2390 } | |
2391 void test_isAccessibleIn_private_sameLibrary() { | |
2392 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2393 ClassElement classElement = ElementFactory.classElement2("_C", []); | |
2394 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classElement]; | |
2395 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library)); | |
2396 } | |
2397 void test_isAccessibleIn_public_differentLibrary() { | |
2398 AnalysisContextImpl context = createAnalysisContext(); | |
2399 LibraryElementImpl library1 = ElementFactory.library(context, "lib1"); | |
2400 ClassElement classElement = ElementFactory.classElement2("C", []); | |
2401 ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = <
ClassElement> [classElement]; | |
2402 LibraryElementImpl library2 = ElementFactory.library(context, "lib2"); | |
2403 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library2)); | |
2404 } | |
2405 void test_isAccessibleIn_public_sameLibrary() { | |
2406 LibraryElementImpl library = ElementFactory.library(createAnalysisContext(),
"lib"); | |
2407 ClassElement classElement = ElementFactory.classElement2("C", []); | |
2408 ((library.definingCompilationUnit as CompilationUnitElementImpl)).types = <C
lassElement> [classElement]; | |
2409 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library)); | |
2410 } | |
2411 void test_SORT_BY_OFFSET() { | |
2412 ClassElementImpl classElementA = ElementFactory.classElement2("A", []); | |
2413 classElementA.nameOffset = 1; | |
2414 ClassElementImpl classElementB = ElementFactory.classElement2("B", []); | |
2415 classElementB.nameOffset = 2; | |
2416 JUnitTestCase.assertEquals(0, Element.SORT_BY_OFFSET(classElementA, classEle
mentA)); | |
2417 JUnitTestCase.assertTrue(Element.SORT_BY_OFFSET(classElementA, classElementB
) < 0); | |
2418 JUnitTestCase.assertTrue(Element.SORT_BY_OFFSET(classElementB, classElementA
) > 0); | |
2419 } | |
2420 static dartSuite() { | |
2421 _ut.group('ElementImplTest', () { | |
2422 _ut.test('test_SORT_BY_OFFSET', () { | |
2423 final __test = new ElementImplTest(); | |
2424 runJUnitTest(__test, __test.test_SORT_BY_OFFSET); | |
2425 }); | |
2426 _ut.test('test_equals', () { | |
2427 final __test = new ElementImplTest(); | |
2428 runJUnitTest(__test, __test.test_equals); | |
2429 }); | |
2430 _ut.test('test_isAccessibleIn_private_differentLibrary', () { | |
2431 final __test = new ElementImplTest(); | |
2432 runJUnitTest(__test, __test.test_isAccessibleIn_private_differentLibrary
); | |
2433 }); | |
2434 _ut.test('test_isAccessibleIn_private_sameLibrary', () { | |
2435 final __test = new ElementImplTest(); | |
2436 runJUnitTest(__test, __test.test_isAccessibleIn_private_sameLibrary); | |
2437 }); | |
2438 _ut.test('test_isAccessibleIn_public_differentLibrary', () { | |
2439 final __test = new ElementImplTest(); | |
2440 runJUnitTest(__test, __test.test_isAccessibleIn_public_differentLibrary)
; | |
2441 }); | |
2442 _ut.test('test_isAccessibleIn_public_sameLibrary', () { | |
2443 final __test = new ElementImplTest(); | |
2444 runJUnitTest(__test, __test.test_isAccessibleIn_public_sameLibrary); | |
2445 }); | |
2446 }); | |
2447 } | |
2448 } | |
2449 class FunctionTypeImplTest extends EngineTestCase { | |
2450 void test_creation() { | |
2451 JUnitTestCase.assertNotNull(new FunctionTypeImpl.con1(new FunctionElementImp
l.con1(ASTFactory.identifier3("f")))); | |
2452 } | |
2453 void test_getElement() { | |
2454 FunctionElementImpl typeElement = new FunctionElementImpl.con1(ASTFactory.id
entifier3("f")); | |
2455 FunctionTypeImpl type = new FunctionTypeImpl.con1(typeElement); | |
2456 JUnitTestCase.assertEquals(typeElement, type.element); | |
2457 } | |
2458 void test_getNamedParameterTypes() { | |
2459 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co
n1(ASTFactory.identifier3("f"))); | |
2460 Map<String, Type2> types = type.namedParameterTypes; | |
2461 EngineTestCase.assertSize2(0, types); | |
2462 } | |
2463 void test_getNormalParameterTypes() { | |
2464 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co
n1(ASTFactory.identifier3("f"))); | |
2465 List<Type2> types = type.normalParameterTypes; | |
2466 EngineTestCase.assertLength(0, types); | |
2467 } | |
2468 void test_getReturnType() { | |
2469 Type2 expectedReturnType = VoidTypeImpl.instance; | |
2470 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor
y.identifier3("f")); | |
2471 functionElement.returnType = expectedReturnType; | |
2472 FunctionTypeImpl type = new FunctionTypeImpl.con1(functionElement); | |
2473 Type2 returnType = type.returnType; | |
2474 JUnitTestCase.assertEquals(expectedReturnType, returnType); | |
2475 } | |
2476 void test_getTypeArguments() { | |
2477 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co
n1(ASTFactory.identifier3("f"))); | |
2478 List<Type2> types = type.typeArguments; | |
2479 EngineTestCase.assertLength(0, types); | |
2480 } | |
2481 void test_hashCode_element() { | |
2482 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co
n1(ASTFactory.identifier3("f"))); | |
2483 type.hashCode; | |
2484 } | |
2485 void test_hashCode_noElement() { | |
2486 FunctionTypeImpl type = new FunctionTypeImpl.con1(null as ExecutableElement)
; | |
2487 type.hashCode; | |
2488 } | |
2489 void test_isAssignableTo_normalAndPositionalArgs() { | |
2490 ClassElement a = ElementFactory.classElement2("A", []); | |
2491 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a]).type; | |
2492 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [a]).ty
pe; | |
2493 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2494 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2495 JUnitTestCase.assertTrue(t.isAssignableTo(s)); | |
2496 JUnitTestCase.assertFalse(s.isAssignableTo(t)); | |
2497 } | |
2498 void test_isSubtypeOf_baseCase_classFunction() { | |
2499 ClassElementImpl functionElement = ElementFactory.classElement2("Function",
[]); | |
2500 InterfaceTypeImpl functionType = new InterfaceTypeImpl_23(functionElement); | |
2501 FunctionType f = ElementFactory.functionElement("f").type; | |
2502 JUnitTestCase.assertTrue(f.isSubtypeOf(functionType)); | |
2503 } | |
2504 void test_isSubtypeOf_baseCase_notFunctionType() { | |
2505 FunctionType f = ElementFactory.functionElement("f").type; | |
2506 InterfaceType t = ElementFactory.classElement2("C", []).type; | |
2507 JUnitTestCase.assertFalse(f.isSubtypeOf(t)); | |
2508 } | |
2509 void test_isSubtypeOf_baseCase_null() { | |
2510 FunctionType f = ElementFactory.functionElement("f").type; | |
2511 JUnitTestCase.assertFalse(f.isSubtypeOf(null)); | |
2512 } | |
2513 void test_isSubtypeOf_baseCase_self() { | |
2514 FunctionType f = ElementFactory.functionElement("f").type; | |
2515 JUnitTestCase.assertTrue(f.isSubtypeOf(f)); | |
2516 } | |
2517 void test_isSubtypeOf_namedParameters_isAssignable() { | |
2518 ClassElement a = ElementFactory.classElement2("A", []); | |
2519 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2520 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"name"], <ClassElement> [a]).type; | |
2521 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"name"], <ClassElement> [b]).type; | |
2522 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2523 JUnitTestCase.assertTrue(s.isSubtypeOf(t)); | |
2524 } | |
2525 void test_isSubtypeOf_namedParameters_isNotAssignable() { | |
2526 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"name"], <ClassElement> [ElementFactory.classElement2("A", [])]).type; | |
2527 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"name"], <ClassElement> [ElementFactory.classElement2("B", [])]).type; | |
2528 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2529 } | |
2530 void test_isSubtypeOf_namedParameters_namesDifferent() { | |
2531 ClassElement a = ElementFactory.classElement2("A", []); | |
2532 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2533 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"name"], <ClassElement> [a]).type; | |
2534 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"diff"], <ClassElement> [b]).type; | |
2535 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2536 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2537 } | |
2538 void test_isSubtypeOf_namedParameters_orderOfParams() { | |
2539 ClassElement a = ElementFactory.classElement2("A", []); | |
2540 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2541 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"A", "B"], <ClassElement> [a, b]).type; | |
2542 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"B", "A"], <ClassElement> [b, a]).type; | |
2543 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2544 } | |
2545 void test_isSubtypeOf_namedParameters_orderOfParams2() { | |
2546 ClassElement a = ElementFactory.classElement2("A", []); | |
2547 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2548 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"B"], <ClassElement> [b]).type; | |
2549 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"B", "A"], <ClassElement> [b, a]).type; | |
2550 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2551 } | |
2552 void test_isSubtypeOf_namedParameters_orderOfParams3() { | |
2553 ClassElement a = ElementFactory.classElement2("A", []); | |
2554 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2555 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"A", "B"], <ClassElement> [a, b]).type; | |
2556 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"B"], <ClassElement> [b]).type; | |
2557 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2558 } | |
2559 void test_isSubtypeOf_namedParameters_sHasMoreParams() { | |
2560 ClassElement a = ElementFactory.classElement2("A", []); | |
2561 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2562 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"name"], <ClassElement> [a]).type; | |
2563 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"name", "name2"], <ClassElement> [b, b]).type; | |
2564 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2565 } | |
2566 void test_isSubtypeOf_namedParameters_tHasMoreParams() { | |
2567 ClassElement a = ElementFactory.classElement2("A", []); | |
2568 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2569 FunctionType t = ElementFactory.functionElement4("t", null, null, <String> [
"name", "name2"], <ClassElement> [a, a]).type; | |
2570 FunctionType s = ElementFactory.functionElement4("s", null, null, <String> [
"name"], <ClassElement> [b]).type; | |
2571 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2572 } | |
2573 void test_isSubtypeOf_normalAndPositionalArgs_1() { | |
2574 ClassElement a = ElementFactory.classElement2("A", []); | |
2575 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a]).type; | |
2576 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [a]).ty
pe; | |
2577 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2578 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2579 } | |
2580 void test_isSubtypeOf_normalAndPositionalArgs_2() { | |
2581 ClassElement a = ElementFactory.classElement2("A", []); | |
2582 FunctionType t = ElementFactory.functionElement6("t", <ClassElement> [a], <C
lassElement> [a]).type; | |
2583 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [a]).ty
pe; | |
2584 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2585 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2586 } | |
2587 void test_isSubtypeOf_normalAndPositionalArgs_3() { | |
2588 ClassElement a = ElementFactory.classElement2("A", []); | |
2589 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a]).type; | |
2590 FunctionType s = ElementFactory.functionElement("s").type; | |
2591 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2592 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2593 } | |
2594 void test_isSubtypeOf_normalAndPositionalArgs_4() { | |
2595 ClassElement a = ElementFactory.classElement2("A", []); | |
2596 ClassElement b = ElementFactory.classElement2("B", []); | |
2597 ClassElement c = ElementFactory.classElement2("C", []); | |
2598 ClassElement d = ElementFactory.classElement2("D", []); | |
2599 ClassElement e = ElementFactory.classElement2("E", []); | |
2600 FunctionType t = ElementFactory.functionElement6("t", <ClassElement> [a, b],
<ClassElement> [c, d, e]).type; | |
2601 FunctionType s = ElementFactory.functionElement6("s", <ClassElement> [a, b,
c], <ClassElement> [d]).type; | |
2602 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2603 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2604 } | |
2605 void test_isSubtypeOf_normalParameters_isAssignable() { | |
2606 ClassElement a = ElementFactory.classElement2("A", []); | |
2607 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2608 FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).ty
pe; | |
2609 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).ty
pe; | |
2610 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2611 JUnitTestCase.assertTrue(s.isSubtypeOf(t)); | |
2612 } | |
2613 void test_isSubtypeOf_normalParameters_isNotAssignable() { | |
2614 FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [Elemen
tFactory.classElement2("A", [])]).type; | |
2615 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [Elemen
tFactory.classElement2("B", [])]).type; | |
2616 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2617 } | |
2618 void test_isSubtypeOf_normalParameters_sHasMoreParams() { | |
2619 ClassElement a = ElementFactory.classElement2("A", []); | |
2620 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2621 FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).ty
pe; | |
2622 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b, b])
.type; | |
2623 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2624 } | |
2625 void test_isSubtypeOf_normalParameters_tHasMoreParams() { | |
2626 ClassElement a = ElementFactory.classElement2("A", []); | |
2627 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2628 FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a, a])
.type; | |
2629 FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).ty
pe; | |
2630 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2631 } | |
2632 void test_isSubtypeOf_Object() { | |
2633 FunctionType f = ElementFactory.functionElement("f").type; | |
2634 InterfaceType t = ElementFactory.object.type; | |
2635 JUnitTestCase.assertTrue(f.isSubtypeOf(t)); | |
2636 } | |
2637 void test_isSubtypeOf_positionalParameters_isAssignable() { | |
2638 ClassElement a = ElementFactory.classElement2("A", []); | |
2639 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2640 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a]).type; | |
2641 FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [
b]).type; | |
2642 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2643 JUnitTestCase.assertTrue(s.isSubtypeOf(t)); | |
2644 } | |
2645 void test_isSubtypeOf_positionalParameters_isNotAssignable() { | |
2646 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
ElementFactory.classElement2("A", [])]).type; | |
2647 FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [
ElementFactory.classElement2("B", [])]).type; | |
2648 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2649 } | |
2650 void test_isSubtypeOf_positionalParameters_sHasMoreParams() { | |
2651 ClassElement a = ElementFactory.classElement2("A", []); | |
2652 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2653 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a]).type; | |
2654 FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [
b, b]).type; | |
2655 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2656 } | |
2657 void test_isSubtypeOf_positionalParameters_tHasMoreParams() { | |
2658 ClassElement a = ElementFactory.classElement2("A", []); | |
2659 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2660 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a, a]).type; | |
2661 FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [
b]).type; | |
2662 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2663 } | |
2664 void test_isSubtypeOf_returnType_sIsVoid() { | |
2665 FunctionType t = ElementFactory.functionElement("t").type; | |
2666 FunctionType s = ElementFactory.functionElement("s").type; | |
2667 JUnitTestCase.assertTrue(VoidTypeImpl.instance == s.returnType); | |
2668 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2669 } | |
2670 void test_isSubtypeOf_returnType_tAssignableToS() { | |
2671 ClassElement a = ElementFactory.classElement2("A", []); | |
2672 ClassElement b = ElementFactory.classElement("B", a.type, []); | |
2673 FunctionType t = ElementFactory.functionElement2("t", a).type; | |
2674 FunctionType s = ElementFactory.functionElement2("s", b).type; | |
2675 JUnitTestCase.assertTrue(t.isSubtypeOf(s)); | |
2676 JUnitTestCase.assertTrue(s.isSubtypeOf(t)); | |
2677 } | |
2678 void test_isSubtypeOf_returnType_tNotAssignableToS() { | |
2679 FunctionType t = ElementFactory.functionElement2("t", ElementFactory.classEl
ement2("A", [])).type; | |
2680 FunctionType s = ElementFactory.functionElement2("s", ElementFactory.classEl
ement2("B", [])).type; | |
2681 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2682 } | |
2683 void test_isSubtypeOf_typeParameters_matchesBounds() { | |
2684 TestTypeProvider provider = new TestTypeProvider(); | |
2685 InterfaceType boolType = provider.boolType; | |
2686 InterfaceType stringType = provider.stringType; | |
2687 TypeParameterElementImpl parameterB = new TypeParameterElementImpl(ASTFactor
y.identifier3("B")); | |
2688 parameterB.bound = boolType; | |
2689 TypeParameterTypeImpl typeB = new TypeParameterTypeImpl(parameterB); | |
2690 TypeParameterElementImpl parameterS = new TypeParameterElementImpl(ASTFactor
y.identifier3("S")); | |
2691 parameterS.bound = stringType; | |
2692 TypeParameterTypeImpl typeS = new TypeParameterTypeImpl(parameterS); | |
2693 FunctionElementImpl functionAliasElement = new FunctionElementImpl.con1(ASTF
actory.identifier3("func")); | |
2694 functionAliasElement.parameters = <ParameterElement> [ | |
2695 ElementFactory.requiredParameter2("a", typeB), | |
2696 ElementFactory.positionalParameter2("b", typeS)]; | |
2697 functionAliasElement.returnType = stringType; | |
2698 FunctionTypeImpl functionAliasType = new FunctionTypeImpl.con1(functionAlias
Element); | |
2699 functionAliasElement.type = functionAliasType; | |
2700 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor
y.identifier3("f")); | |
2701 functionElement.parameters = <ParameterElement> [ | |
2702 ElementFactory.requiredParameter2("c", boolType), | |
2703 ElementFactory.positionalParameter2("d", stringType)]; | |
2704 functionElement.returnType = provider.dynamicType; | |
2705 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); | |
2706 functionElement.type = functionType; | |
2707 JUnitTestCase.assertTrue(functionType.isAssignableTo(functionAliasType)); | |
2708 } | |
2709 void test_isSubtypeOf_wrongFunctionType_normal_named() { | |
2710 ClassElement a = ElementFactory.classElement2("A", []); | |
2711 FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).ty
pe; | |
2712 FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name"
], <ClassElement> [a]).type; | |
2713 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2714 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2715 } | |
2716 void test_isSubtypeOf_wrongFunctionType_optional_named() { | |
2717 ClassElement a = ElementFactory.classElement2("A", []); | |
2718 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [
a]).type; | |
2719 FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name"
], <ClassElement> [a]).type; | |
2720 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); | |
2721 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); | |
2722 } | |
2723 void test_setTypeArguments() { | |
2724 ClassElementImpl enclosingClass = ElementFactory.classElement2("C", ["E"]); | |
2725 MethodElementImpl methodElement = new MethodElementImpl.con1(ASTFactory.iden
tifier3("m")); | |
2726 enclosingClass.methods = <MethodElement> [methodElement]; | |
2727 FunctionTypeImpl type = new FunctionTypeImpl.con1(methodElement); | |
2728 Type2 expectedType = enclosingClass.typeParameters[0].type; | |
2729 type.typeArguments = <Type2> [expectedType]; | |
2730 List<Type2> arguments = type.typeArguments; | |
2731 EngineTestCase.assertLength(1, arguments); | |
2732 JUnitTestCase.assertEquals(expectedType, arguments[0]); | |
2733 } | |
2734 void test_substitute2_equal() { | |
2735 ClassElementImpl definingClass = ElementFactory.classElement2("C", ["E"]); | |
2736 TypeParameterType parameterType = definingClass.typeParameters[0].type; | |
2737 MethodElementImpl functionElement = new MethodElementImpl.con1(ASTFactory.id
entifier3("m")); | |
2738 String namedParameterName = "c"; | |
2739 functionElement.parameters = <ParameterElement> [ | |
2740 ElementFactory.requiredParameter2("a", parameterType), | |
2741 ElementFactory.positionalParameter2("b", parameterType), | |
2742 ElementFactory.namedParameter2(namedParameterName, parameterType)]; | |
2743 functionElement.returnType = parameterType; | |
2744 definingClass.methods = <MethodElement> [functionElement]; | |
2745 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); | |
2746 functionType.typeArguments = <Type2> [parameterType]; | |
2747 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement
Impl(ASTFactory.identifier3("D"))); | |
2748 FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type
2> [parameterType]); | |
2749 JUnitTestCase.assertEquals(argumentType, result.returnType); | |
2750 List<Type2> normalParameters = result.normalParameterTypes; | |
2751 EngineTestCase.assertLength(1, normalParameters); | |
2752 JUnitTestCase.assertEquals(argumentType, normalParameters[0]); | |
2753 List<Type2> optionalParameters = result.optionalParameterTypes; | |
2754 EngineTestCase.assertLength(1, optionalParameters); | |
2755 JUnitTestCase.assertEquals(argumentType, optionalParameters[0]); | |
2756 Map<String, Type2> namedParameters = result.namedParameterTypes; | |
2757 EngineTestCase.assertSize2(1, namedParameters); | |
2758 JUnitTestCase.assertEquals(argumentType, namedParameters[namedParameterName]
); | |
2759 } | |
2760 void test_substitute2_notEqual() { | |
2761 Type2 returnType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactor
y.identifier3("R"))); | |
2762 Type2 normalParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(
ASTFactory.identifier3("A"))); | |
2763 Type2 optionalParameterType = new InterfaceTypeImpl.con1(new ClassElementImp
l(ASTFactory.identifier3("B"))); | |
2764 Type2 namedParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(A
STFactory.identifier3("C"))); | |
2765 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor
y.identifier3("f")); | |
2766 String namedParameterName = "c"; | |
2767 functionElement.parameters = <ParameterElement> [ | |
2768 ElementFactory.requiredParameter2("a", normalParameterType), | |
2769 ElementFactory.positionalParameter2("b", optionalParameterType), | |
2770 ElementFactory.namedParameter2(namedParameterName, namedParameterType)]; | |
2771 functionElement.returnType = returnType; | |
2772 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); | |
2773 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement
Impl(ASTFactory.identifier3("D"))); | |
2774 TypeParameterTypeImpl parameterType = new TypeParameterTypeImpl(new TypePara
meterElementImpl(ASTFactory.identifier3("E"))); | |
2775 FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type
2> [parameterType]); | |
2776 JUnitTestCase.assertEquals(returnType, result.returnType); | |
2777 List<Type2> normalParameters = result.normalParameterTypes; | |
2778 EngineTestCase.assertLength(1, normalParameters); | |
2779 JUnitTestCase.assertEquals(normalParameterType, normalParameters[0]); | |
2780 List<Type2> optionalParameters = result.optionalParameterTypes; | |
2781 EngineTestCase.assertLength(1, optionalParameters); | |
2782 JUnitTestCase.assertEquals(optionalParameterType, optionalParameters[0]); | |
2783 Map<String, Type2> namedParameters = result.namedParameterTypes; | |
2784 EngineTestCase.assertSize2(1, namedParameters); | |
2785 JUnitTestCase.assertEquals(namedParameterType, namedParameters[namedParamete
rName]); | |
2786 } | |
2787 static dartSuite() { | |
2788 _ut.group('FunctionTypeImplTest', () { | |
2789 _ut.test('test_creation', () { | |
2790 final __test = new FunctionTypeImplTest(); | |
2791 runJUnitTest(__test, __test.test_creation); | |
2792 }); | |
2793 _ut.test('test_getElement', () { | |
2794 final __test = new FunctionTypeImplTest(); | |
2795 runJUnitTest(__test, __test.test_getElement); | |
2796 }); | |
2797 _ut.test('test_getNamedParameterTypes', () { | |
2798 final __test = new FunctionTypeImplTest(); | |
2799 runJUnitTest(__test, __test.test_getNamedParameterTypes); | |
2800 }); | |
2801 _ut.test('test_getNormalParameterTypes', () { | |
2802 final __test = new FunctionTypeImplTest(); | |
2803 runJUnitTest(__test, __test.test_getNormalParameterTypes); | |
2804 }); | |
2805 _ut.test('test_getReturnType', () { | |
2806 final __test = new FunctionTypeImplTest(); | |
2807 runJUnitTest(__test, __test.test_getReturnType); | |
2808 }); | |
2809 _ut.test('test_getTypeArguments', () { | |
2810 final __test = new FunctionTypeImplTest(); | |
2811 runJUnitTest(__test, __test.test_getTypeArguments); | |
2812 }); | |
2813 _ut.test('test_hashCode_element', () { | |
2814 final __test = new FunctionTypeImplTest(); | |
2815 runJUnitTest(__test, __test.test_hashCode_element); | |
2816 }); | |
2817 _ut.test('test_hashCode_noElement', () { | |
2818 final __test = new FunctionTypeImplTest(); | |
2819 runJUnitTest(__test, __test.test_hashCode_noElement); | |
2820 }); | |
2821 _ut.test('test_isAssignableTo_normalAndPositionalArgs', () { | |
2822 final __test = new FunctionTypeImplTest(); | |
2823 runJUnitTest(__test, __test.test_isAssignableTo_normalAndPositionalArgs)
; | |
2824 }); | |
2825 _ut.test('test_isSubtypeOf_Object', () { | |
2826 final __test = new FunctionTypeImplTest(); | |
2827 runJUnitTest(__test, __test.test_isSubtypeOf_Object); | |
2828 }); | |
2829 _ut.test('test_isSubtypeOf_baseCase_classFunction', () { | |
2830 final __test = new FunctionTypeImplTest(); | |
2831 runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_classFunction); | |
2832 }); | |
2833 _ut.test('test_isSubtypeOf_baseCase_notFunctionType', () { | |
2834 final __test = new FunctionTypeImplTest(); | |
2835 runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_notFunctionType); | |
2836 }); | |
2837 _ut.test('test_isSubtypeOf_baseCase_null', () { | |
2838 final __test = new FunctionTypeImplTest(); | |
2839 runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_null); | |
2840 }); | |
2841 _ut.test('test_isSubtypeOf_baseCase_self', () { | |
2842 final __test = new FunctionTypeImplTest(); | |
2843 runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_self); | |
2844 }); | |
2845 _ut.test('test_isSubtypeOf_namedParameters_isAssignable', () { | |
2846 final __test = new FunctionTypeImplTest(); | |
2847 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_isAssignabl
e); | |
2848 }); | |
2849 _ut.test('test_isSubtypeOf_namedParameters_isNotAssignable', () { | |
2850 final __test = new FunctionTypeImplTest(); | |
2851 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_isNotAssign
able); | |
2852 }); | |
2853 _ut.test('test_isSubtypeOf_namedParameters_namesDifferent', () { | |
2854 final __test = new FunctionTypeImplTest(); | |
2855 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_namesDiffer
ent); | |
2856 }); | |
2857 _ut.test('test_isSubtypeOf_namedParameters_orderOfParams', () { | |
2858 final __test = new FunctionTypeImplTest(); | |
2859 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_orderOfPara
ms); | |
2860 }); | |
2861 _ut.test('test_isSubtypeOf_namedParameters_orderOfParams2', () { | |
2862 final __test = new FunctionTypeImplTest(); | |
2863 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_orderOfPara
ms2); | |
2864 }); | |
2865 _ut.test('test_isSubtypeOf_namedParameters_orderOfParams3', () { | |
2866 final __test = new FunctionTypeImplTest(); | |
2867 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_orderOfPara
ms3); | |
2868 }); | |
2869 _ut.test('test_isSubtypeOf_namedParameters_sHasMoreParams', () { | |
2870 final __test = new FunctionTypeImplTest(); | |
2871 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_sHasMorePar
ams); | |
2872 }); | |
2873 _ut.test('test_isSubtypeOf_namedParameters_tHasMoreParams', () { | |
2874 final __test = new FunctionTypeImplTest(); | |
2875 runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_tHasMorePar
ams); | |
2876 }); | |
2877 _ut.test('test_isSubtypeOf_normalAndPositionalArgs_1', () { | |
2878 final __test = new FunctionTypeImplTest(); | |
2879 runJUnitTest(__test, __test.test_isSubtypeOf_normalAndPositionalArgs_1); | |
2880 }); | |
2881 _ut.test('test_isSubtypeOf_normalAndPositionalArgs_2', () { | |
2882 final __test = new FunctionTypeImplTest(); | |
2883 runJUnitTest(__test, __test.test_isSubtypeOf_normalAndPositionalArgs_2); | |
2884 }); | |
2885 _ut.test('test_isSubtypeOf_normalAndPositionalArgs_3', () { | |
2886 final __test = new FunctionTypeImplTest(); | |
2887 runJUnitTest(__test, __test.test_isSubtypeOf_normalAndPositionalArgs_3); | |
2888 }); | |
2889 _ut.test('test_isSubtypeOf_normalAndPositionalArgs_4', () { | |
2890 final __test = new FunctionTypeImplTest(); | |
2891 runJUnitTest(__test, __test.test_isSubtypeOf_normalAndPositionalArgs_4); | |
2892 }); | |
2893 _ut.test('test_isSubtypeOf_normalParameters_isAssignable', () { | |
2894 final __test = new FunctionTypeImplTest(); | |
2895 runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_isAssignab
le); | |
2896 }); | |
2897 _ut.test('test_isSubtypeOf_normalParameters_isNotAssignable', () { | |
2898 final __test = new FunctionTypeImplTest(); | |
2899 runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_isNotAssig
nable); | |
2900 }); | |
2901 _ut.test('test_isSubtypeOf_normalParameters_sHasMoreParams', () { | |
2902 final __test = new FunctionTypeImplTest(); | |
2903 runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_sHasMorePa
rams); | |
2904 }); | |
2905 _ut.test('test_isSubtypeOf_normalParameters_tHasMoreParams', () { | |
2906 final __test = new FunctionTypeImplTest(); | |
2907 runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_tHasMorePa
rams); | |
2908 }); | |
2909 _ut.test('test_isSubtypeOf_positionalParameters_isAssignable', () { | |
2910 final __test = new FunctionTypeImplTest(); | |
2911 runJUnitTest(__test, __test.test_isSubtypeOf_positionalParameters_isAssi
gnable); | |
2912 }); | |
2913 _ut.test('test_isSubtypeOf_positionalParameters_isNotAssignable', () { | |
2914 final __test = new FunctionTypeImplTest(); | |
2915 runJUnitTest(__test, __test.test_isSubtypeOf_positionalParameters_isNotA
ssignable); | |
2916 }); | |
2917 _ut.test('test_isSubtypeOf_positionalParameters_sHasMoreParams', () { | |
2918 final __test = new FunctionTypeImplTest(); | |
2919 runJUnitTest(__test, __test.test_isSubtypeOf_positionalParameters_sHasMo
reParams); | |
2920 }); | |
2921 _ut.test('test_isSubtypeOf_positionalParameters_tHasMoreParams', () { | |
2922 final __test = new FunctionTypeImplTest(); | |
2923 runJUnitTest(__test, __test.test_isSubtypeOf_positionalParameters_tHasMo
reParams); | |
2924 }); | |
2925 _ut.test('test_isSubtypeOf_returnType_sIsVoid', () { | |
2926 final __test = new FunctionTypeImplTest(); | |
2927 runJUnitTest(__test, __test.test_isSubtypeOf_returnType_sIsVoid); | |
2928 }); | |
2929 _ut.test('test_isSubtypeOf_returnType_tAssignableToS', () { | |
2930 final __test = new FunctionTypeImplTest(); | |
2931 runJUnitTest(__test, __test.test_isSubtypeOf_returnType_tAssignableToS); | |
2932 }); | |
2933 _ut.test('test_isSubtypeOf_returnType_tNotAssignableToS', () { | |
2934 final __test = new FunctionTypeImplTest(); | |
2935 runJUnitTest(__test, __test.test_isSubtypeOf_returnType_tNotAssignableTo
S); | |
2936 }); | |
2937 _ut.test('test_isSubtypeOf_typeParameters_matchesBounds', () { | |
2938 final __test = new FunctionTypeImplTest(); | |
2939 runJUnitTest(__test, __test.test_isSubtypeOf_typeParameters_matchesBound
s); | |
2940 }); | |
2941 _ut.test('test_isSubtypeOf_wrongFunctionType_normal_named', () { | |
2942 final __test = new FunctionTypeImplTest(); | |
2943 runJUnitTest(__test, __test.test_isSubtypeOf_wrongFunctionType_normal_na
med); | |
2944 }); | |
2945 _ut.test('test_isSubtypeOf_wrongFunctionType_optional_named', () { | |
2946 final __test = new FunctionTypeImplTest(); | |
2947 runJUnitTest(__test, __test.test_isSubtypeOf_wrongFunctionType_optional_
named); | |
2948 }); | |
2949 _ut.test('test_setTypeArguments', () { | |
2950 final __test = new FunctionTypeImplTest(); | |
2951 runJUnitTest(__test, __test.test_setTypeArguments); | |
2952 }); | |
2953 _ut.test('test_substitute2_equal', () { | |
2954 final __test = new FunctionTypeImplTest(); | |
2955 runJUnitTest(__test, __test.test_substitute2_equal); | |
2956 }); | |
2957 _ut.test('test_substitute2_notEqual', () { | |
2958 final __test = new FunctionTypeImplTest(); | |
2959 runJUnitTest(__test, __test.test_substitute2_notEqual); | |
2960 }); | |
2961 }); | |
2962 } | |
2963 } | |
2964 class InterfaceTypeImpl_23 extends InterfaceTypeImpl { | |
2965 InterfaceTypeImpl_23(ClassElement arg0) : super.con1(arg0); | |
2966 bool get isDartCoreFunction => true; | |
2967 } | |
2968 main() { | |
2969 ElementKindTest.dartSuite(); | |
2970 FunctionTypeImplTest.dartSuite(); | |
2971 InterfaceTypeImplTest.dartSuite(); | |
2972 TypeParameterTypeImplTest.dartSuite(); | |
2973 ClassElementImplTest.dartSuite(); | |
2974 ElementLocationImplTest.dartSuite(); | |
2975 ElementImplTest.dartSuite(); | |
2976 LibraryElementImplTest.dartSuite(); | |
2977 MultiplyDefinedElementImplTest.dartSuite(); | |
2978 } | |
OLD | NEW |