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

Side by Side Diff: pkg/analyzer_experimental/test/generated/element_test.dart

Issue 14308011: New Analysis Engine snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // This code was auto-generated, is not intended to be edited, and is subject to 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. 2 // significant change. Please see the README file for more information.
3 3
4 library engine.element_test; 4 library engine.element_test;
5 5
6 import 'dart:collection'; 6 import 'dart:collection';
7 import 'dart:io'; 7 import 'dart:io';
8 import 'package:analyzer_experimental/src/generated/java_core.dart'; 8 import 'package:analyzer_experimental/src/generated/java_core.dart';
9 import 'package:analyzer_experimental/src/generated/java_engine.dart'; 9 import 'package:analyzer_experimental/src/generated/java_engine.dart';
10 import 'package:analyzer_experimental/src/generated/java_engine_io.dart'; 10 import 'package:analyzer_experimental/src/generated/java_engine_io.dart';
11 import 'package:analyzer_experimental/src/generated/java_junit.dart'; 11 import 'package:analyzer_experimental/src/generated/java_junit.dart';
12 import 'package:analyzer_experimental/src/generated/source_io.dart'; 12 import 'package:analyzer_experimental/src/generated/source_io.dart';
13 import 'package:analyzer_experimental/src/generated/error.dart'; 13 import 'package:analyzer_experimental/src/generated/error.dart';
14 import 'package:analyzer_experimental/src/generated/scanner.dart'; 14 import 'package:analyzer_experimental/src/generated/scanner.dart';
15 import 'package:analyzer_experimental/src/generated/utilities_dart.dart'; 15 import 'package:analyzer_experimental/src/generated/utilities_dart.dart';
16 import 'package:analyzer_experimental/src/generated/ast.dart' hide Annotation; 16 import 'package:analyzer_experimental/src/generated/ast.dart' hide Annotation;
17 import 'package:analyzer_experimental/src/generated/element.dart' hide Annotatio n; 17 import 'package:analyzer_experimental/src/generated/element.dart' hide Annotatio n;
18 import 'package:analyzer_experimental/src/generated/engine.dart' show AnalysisCo ntext, AnalysisContextImpl; 18 import 'package:analyzer_experimental/src/generated/engine.dart' show AnalysisCo ntext, AnalysisContextImpl;
19 import 'package:unittest/unittest.dart' as _ut; 19 import 'package:unittest/unittest.dart' as _ut;
20 import 'test_support.dart'; 20 import 'test_support.dart';
21 import 'scanner_test.dart' show TokenFactory; 21 import 'scanner_test.dart' show TokenFactory;
22 import 'ast_test.dart' show ASTFactory; 22 import 'ast_test.dart' show ASTFactory;
23 import 'resolver_test.dart' show TestTypeProvider;
23 24
24 class ElementLocationImplTest extends EngineTestCase { 25 class ElementLocationImplTest extends EngineTestCase {
25 void test_create_encoding() { 26 void test_create_encoding() {
26 String encoding = "a;b;c"; 27 String encoding = "a;b;c";
27 ElementLocationImpl location = new ElementLocationImpl.con2(encoding); 28 ElementLocationImpl location = new ElementLocationImpl.con2(encoding);
28 JUnitTestCase.assertEquals(encoding, location.encoding); 29 JUnitTestCase.assertEquals(encoding, location.encoding);
29 } 30 }
30 void test_equals_equal() { 31 void test_equals_equal() {
31 String encoding = "a;b;c"; 32 String encoding = "a;b;c";
32 ElementLocationImpl first = new ElementLocationImpl.con2(encoding); 33 ElementLocationImpl first = new ElementLocationImpl.con2(encoding);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 }); 90 });
90 _ut.test('test_getEncoding', () { 91 _ut.test('test_getEncoding', () {
91 final __test = new ElementLocationImplTest(); 92 final __test = new ElementLocationImplTest();
92 runJUnitTest(__test, __test.test_getEncoding); 93 runJUnitTest(__test, __test.test_getEncoding);
93 }); 94 });
94 }); 95 });
95 } 96 }
96 } 97 }
97 class LibraryElementImplTest extends EngineTestCase { 98 class LibraryElementImplTest extends EngineTestCase {
98 void test_creation() { 99 void test_creation() {
99 JUnitTestCase.assertNotNull(new LibraryElementImpl(new AnalysisContextImpl() , ASTFactory.libraryIdentifier2(["l"]))); 100 JUnitTestCase.assertNotNull(new LibraryElementImpl(createAnalysisContext(), ASTFactory.libraryIdentifier2(["l"])));
100 } 101 }
101 void test_getImportedLibraries() { 102 void test_getImportedLibraries() {
102 AnalysisContext context = new AnalysisContextImpl(); 103 AnalysisContext context = createAnalysisContext();
103 LibraryElementImpl library1 = ElementFactory.library(context, "l1"); 104 LibraryElementImpl library1 = ElementFactory.library(context, "l1");
104 LibraryElementImpl library2 = ElementFactory.library(context, "l2"); 105 LibraryElementImpl library2 = ElementFactory.library(context, "l2");
105 LibraryElementImpl library3 = ElementFactory.library(context, "l3"); 106 LibraryElementImpl library3 = ElementFactory.library(context, "l3");
106 LibraryElementImpl library4 = ElementFactory.library(context, "l4"); 107 LibraryElementImpl library4 = ElementFactory.library(context, "l4");
107 PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier2("a")); 108 PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier3("a"));
108 PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier2("b")); 109 PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier3("b"));
109 List<ImportElementImpl> imports = [ElementFactory.importFor(library2, null, []), ElementFactory.importFor(library2, prefixB, []), ElementFactory.importFor(l ibrary3, null, []), ElementFactory.importFor(library3, prefixA, []), ElementFact ory.importFor(library3, prefixB, []), ElementFactory.importFor(library4, prefixA , [])]; 110 List<ImportElementImpl> imports = [ElementFactory.importFor(library2, null, []), ElementFactory.importFor(library2, prefixB, []), ElementFactory.importFor(l ibrary3, null, []), ElementFactory.importFor(library3, prefixA, []), ElementFact ory.importFor(library3, prefixB, []), ElementFactory.importFor(library4, prefixA , [])];
110 library1.imports = imports; 111 library1.imports = imports;
111 List<LibraryElement> libraries = library1.importedLibraries; 112 List<LibraryElement> libraries = library1.importedLibraries;
112 EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library2, library3, library4], libraries); 113 EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library2, library3, library4], libraries);
113 } 114 }
114 void test_getPrefixes() { 115 void test_getPrefixes() {
115 AnalysisContext context = new AnalysisContextImpl(); 116 AnalysisContext context = createAnalysisContext();
116 LibraryElementImpl library18 = ElementFactory.library(context, "l1"); 117 LibraryElementImpl library18 = ElementFactory.library(context, "l1");
117 PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier2("a")); 118 PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier3("a"));
118 PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier2("b")); 119 PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier3("b"));
119 List<ImportElementImpl> imports = [ElementFactory.importFor(ElementFactory.l ibrary(context, "l2"), null, []), ElementFactory.importFor(ElementFactory.librar y(context, "l3"), null, []), ElementFactory.importFor(ElementFactory.library(con text, "l4"), prefixA, []), ElementFactory.importFor(ElementFactory.library(conte xt, "l5"), prefixA, []), ElementFactory.importFor(ElementFactory.library(context , "l6"), prefixB, [])]; 120 List<ImportElementImpl> imports = [ElementFactory.importFor(ElementFactory.l ibrary(context, "l2"), null, []), ElementFactory.importFor(ElementFactory.librar y(context, "l3"), null, []), ElementFactory.importFor(ElementFactory.library(con text, "l4"), prefixA, []), ElementFactory.importFor(ElementFactory.library(conte xt, "l5"), prefixA, []), ElementFactory.importFor(ElementFactory.library(context , "l6"), prefixB, [])];
120 library18.imports = imports; 121 library18.imports = imports;
121 List<PrefixElement> prefixes2 = library18.prefixes; 122 List<PrefixElement> prefixes2 = library18.prefixes;
122 EngineTestCase.assertLength(2, prefixes2); 123 EngineTestCase.assertLength(2, prefixes2);
123 if (identical(prefixA, prefixes2[0])) { 124 if (identical(prefixA, prefixes2[0])) {
124 JUnitTestCase.assertSame(prefixB, prefixes2[1]); 125 JUnitTestCase.assertSame(prefixB, prefixes2[1]);
125 } else { 126 } else {
126 JUnitTestCase.assertSame(prefixB, prefixes2[0]); 127 JUnitTestCase.assertSame(prefixB, prefixes2[0]);
127 JUnitTestCase.assertSame(prefixA, prefixes2[1]); 128 JUnitTestCase.assertSame(prefixA, prefixes2[1]);
128 } 129 }
129 } 130 }
130 void test_isUpToDate() { 131 void test_isUpToDate() {
131 AnalysisContext context = new AnalysisContextImpl(); 132 AnalysisContext context = createAnalysisContext();
132 context.sourceFactory = new SourceFactory.con2([]); 133 context.sourceFactory = new SourceFactory.con2([]);
133 LibraryElement library19 = ElementFactory.library(context, "foo"); 134 LibraryElement library19 = ElementFactory.library(context, "foo");
134 context.sourceFactory.setContents(library19.definingCompilationUnit.source, "sdfsdff"); 135 context.sourceFactory.setContents(library19.definingCompilationUnit.source, "sdfsdff");
135 JUnitTestCase.assertFalse(library19.isUpToDate2(0)); 136 JUnitTestCase.assertFalse(library19.isUpToDate2(0));
136 JUnitTestCase.assertTrue(library19.isUpToDate2(JavaSystem.currentTimeMillis( ) + 1000)); 137 JUnitTestCase.assertTrue(library19.isUpToDate2(JavaSystem.currentTimeMillis( ) + 1000));
137 } 138 }
138 void test_setImports() { 139 void test_setImports() {
139 AnalysisContext context = new AnalysisContextImpl(); 140 AnalysisContext context = createAnalysisContext();
140 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr aryIdentifier2(["l1"])); 141 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr aryIdentifier2(["l1"]));
141 List<ImportElementImpl> expectedImports = [ElementFactory.importFor(ElementF actory.library(context, "l2"), null, []), ElementFactory.importFor(ElementFactor y.library(context, "l3"), null, [])]; 142 List<ImportElementImpl> expectedImports = [ElementFactory.importFor(ElementF actory.library(context, "l2"), null, []), ElementFactory.importFor(ElementFactor y.library(context, "l3"), null, [])];
142 library.imports = expectedImports; 143 library.imports = expectedImports;
143 List<ImportElement> actualImports = library.imports; 144 List<ImportElement> actualImports = library.imports;
144 EngineTestCase.assertLength(expectedImports.length, actualImports); 145 EngineTestCase.assertLength(expectedImports.length, actualImports);
145 for (int i = 0; i < actualImports.length; i++) { 146 for (int i = 0; i < actualImports.length; i++) {
146 JUnitTestCase.assertSame(expectedImports[i], actualImports[i]); 147 JUnitTestCase.assertSame(expectedImports[i], actualImports[i]);
147 } 148 }
148 } 149 }
149 static dartSuite() { 150 static dartSuite() {
(...skipping 15 matching lines...) Expand all
165 runJUnitTest(__test, __test.test_isUpToDate); 166 runJUnitTest(__test, __test.test_isUpToDate);
166 }); 167 });
167 _ut.test('test_setImports', () { 168 _ut.test('test_setImports', () {
168 final __test = new LibraryElementImplTest(); 169 final __test = new LibraryElementImplTest();
169 runJUnitTest(__test, __test.test_setImports); 170 runJUnitTest(__test, __test.test_setImports);
170 }); 171 });
171 }); 172 });
172 } 173 }
173 } 174 }
174 class InterfaceTypeImplTest extends EngineTestCase { 175 class InterfaceTypeImplTest extends EngineTestCase {
176 /**
177 * The type provider used to access the types.
178 */
179 TestTypeProvider _typeProvider;
180 void setUp() {
181 _typeProvider = new TestTypeProvider();
182 }
175 void test_computeLongestInheritancePathToObject_multipleInterfacePaths() { 183 void test_computeLongestInheritancePathToObject_multipleInterfacePaths() {
176 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 184 ClassElementImpl classA = ElementFactory.classElement2("A", []);
177 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 185 ClassElementImpl classB = ElementFactory.classElement2("B", []);
178 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 186 ClassElementImpl classC = ElementFactory.classElement2("C", []);
179 ClassElementImpl elementD = ElementFactory.classElement2("D", []); 187 ClassElementImpl classD = ElementFactory.classElement2("D", []);
180 ClassElementImpl elementE = ElementFactory.classElement2("E", []); 188 ClassElementImpl classE = ElementFactory.classElement2("E", []);
181 elementB.interfaces = <InterfaceType> [elementA.type]; 189 classB.interfaces = <InterfaceType> [classA.type];
182 elementC.interfaces = <InterfaceType> [elementA.type]; 190 classC.interfaces = <InterfaceType> [classA.type];
183 elementD.interfaces = <InterfaceType> [elementC.type]; 191 classD.interfaces = <InterfaceType> [classC.type];
184 elementE.interfaces = <InterfaceType> [elementB.type, elementD.type]; 192 classE.interfaces = <InterfaceType> [classB.type, classD.type];
185 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementB.type)); 193 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classB.type));
186 JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementE.type)); 194 JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classE.type));
187 } 195 }
188 void test_computeLongestInheritancePathToObject_multipleSuperclassPaths() { 196 void test_computeLongestInheritancePathToObject_multipleSuperclassPaths() {
189 ClassElement elementA = ElementFactory.classElement2("A", []); 197 ClassElement classA = ElementFactory.classElement2("A", []);
190 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 198 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
191 ClassElement elementC = ElementFactory.classElement("C", elementA.type, []); 199 ClassElement classC = ElementFactory.classElement("C", classA.type, []);
192 ClassElement elementD = ElementFactory.classElement("D", elementC.type, []); 200 ClassElement classD = ElementFactory.classElement("D", classC.type, []);
193 ClassElementImpl elementE = ElementFactory.classElement("E", elementB.type, []); 201 ClassElementImpl classE = ElementFactory.classElement("E", classB.type, []);
194 elementE.interfaces = <InterfaceType> [elementD.type]; 202 classE.interfaces = <InterfaceType> [classD.type];
195 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementB.type)); 203 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classB.type));
196 JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementE.type)); 204 JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classE.type));
197 } 205 }
198 void test_computeLongestInheritancePathToObject_object() { 206 void test_computeLongestInheritancePathToObject_object() {
199 ClassElement elementA = ElementFactory.classElement2("A", []); 207 ClassElement classA = ElementFactory.classElement2("A", []);
200 InterfaceType object = elementA.supertype; 208 InterfaceType object = classA.supertype;
201 JUnitTestCase.assertEquals(0, InterfaceTypeImpl.computeLongestInheritancePat hToObject(object)); 209 JUnitTestCase.assertEquals(0, InterfaceTypeImpl.computeLongestInheritancePat hToObject(object));
202 } 210 }
203 void test_computeLongestInheritancePathToObject_singleInterfacePath() { 211 void test_computeLongestInheritancePathToObject_singleInterfacePath() {
204 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 212 ClassElementImpl classA = ElementFactory.classElement2("A", []);
205 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 213 ClassElementImpl classB = ElementFactory.classElement2("B", []);
206 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 214 ClassElementImpl classC = ElementFactory.classElement2("C", []);
207 elementB.interfaces = <InterfaceType> [elementA.type]; 215 classB.interfaces = <InterfaceType> [classA.type];
208 elementC.interfaces = <InterfaceType> [elementB.type]; 216 classC.interfaces = <InterfaceType> [classB.type];
209 JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementA.type)); 217 JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classA.type));
210 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementB.type)); 218 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classB.type));
211 JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementC.type)); 219 JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classC.type));
212 } 220 }
213 void test_computeLongestInheritancePathToObject_singleSuperclassPath() { 221 void test_computeLongestInheritancePathToObject_singleSuperclassPath() {
214 ClassElement elementA = ElementFactory.classElement2("A", []); 222 ClassElement classA = ElementFactory.classElement2("A", []);
215 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 223 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
216 ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); 224 ClassElement classC = ElementFactory.classElement("C", classB.type, []);
217 JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementA.type)); 225 JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classA.type));
218 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementB.type)); 226 JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classB.type));
219 JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePat hToObject(elementC.type)); 227 JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePat hToObject(classC.type));
220 } 228 }
221 void test_computeSuperinterfaceSet_multipleInterfacePaths() { 229 void test_computeSuperinterfaceSet_multipleInterfacePaths() {
222 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 230 ClassElementImpl classA = ElementFactory.classElement2("A", []);
223 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 231 ClassElementImpl classB = ElementFactory.classElement2("B", []);
224 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 232 ClassElementImpl classC = ElementFactory.classElement2("C", []);
225 ClassElementImpl elementD = ElementFactory.classElement2("D", []); 233 ClassElementImpl classD = ElementFactory.classElement2("D", []);
226 ClassElementImpl elementE = ElementFactory.classElement2("E", []); 234 ClassElementImpl classE = ElementFactory.classElement2("E", []);
227 elementB.interfaces = <InterfaceType> [elementA.type]; 235 classB.interfaces = <InterfaceType> [classA.type];
228 elementC.interfaces = <InterfaceType> [elementA.type]; 236 classC.interfaces = <InterfaceType> [classA.type];
229 elementD.interfaces = <InterfaceType> [elementC.type]; 237 classD.interfaces = <InterfaceType> [classC.type];
230 elementE.interfaces = <InterfaceType> [elementB.type, elementD.type]; 238 classE.interfaces = <InterfaceType> [classB.type, classD.type];
231 Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterf aceSet(elementD.type); 239 Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterf aceSet(classD.type);
232 JUnitTestCase.assertNotNull(superinterfacesOfD); 240 JUnitTestCase.assertNotNull(superinterfacesOfD);
233 JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.t ype)); 241 JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.t ype));
234 JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementA.type)); 242 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type));
235 JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementC.type)); 243 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type));
236 JUnitTestCase.assertEquals(3, superinterfacesOfD.length); 244 JUnitTestCase.assertEquals(3, superinterfacesOfD.length);
237 Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterf aceSet(elementE.type); 245 Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterf aceSet(classE.type);
238 JUnitTestCase.assertNotNull(superinterfacesOfE); 246 JUnitTestCase.assertNotNull(superinterfacesOfE);
239 JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.t ype)); 247 JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.t ype));
240 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementA.type)); 248 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type));
241 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementB.type)); 249 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type));
242 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementC.type)); 250 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type));
243 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementD.type)); 251 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type));
244 JUnitTestCase.assertEquals(5, superinterfacesOfE.length); 252 JUnitTestCase.assertEquals(5, superinterfacesOfE.length);
245 } 253 }
246 void test_computeSuperinterfaceSet_multipleSuperclassPaths() { 254 void test_computeSuperinterfaceSet_multipleSuperclassPaths() {
247 ClassElement elementA = ElementFactory.classElement2("A", []); 255 ClassElement classA = ElementFactory.classElement2("A", []);
248 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 256 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
249 ClassElement elementC = ElementFactory.classElement("C", elementA.type, []); 257 ClassElement classC = ElementFactory.classElement("C", classA.type, []);
250 ClassElement elementD = ElementFactory.classElement("D", elementC.type, []); 258 ClassElement classD = ElementFactory.classElement("D", classC.type, []);
251 ClassElementImpl elementE = ElementFactory.classElement("E", elementB.type, []); 259 ClassElementImpl classE = ElementFactory.classElement("E", classB.type, []);
252 elementE.interfaces = <InterfaceType> [elementD.type]; 260 classE.interfaces = <InterfaceType> [classD.type];
253 Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterf aceSet(elementD.type); 261 Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterf aceSet(classD.type);
254 JUnitTestCase.assertNotNull(superinterfacesOfD); 262 JUnitTestCase.assertNotNull(superinterfacesOfD);
255 JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.t ype)); 263 JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.t ype));
256 JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementA.type)); 264 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type));
257 JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementC.type)); 265 JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type));
258 JUnitTestCase.assertEquals(3, superinterfacesOfD.length); 266 JUnitTestCase.assertEquals(3, superinterfacesOfD.length);
259 Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterf aceSet(elementE.type); 267 Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterf aceSet(classE.type);
260 JUnitTestCase.assertNotNull(superinterfacesOfE); 268 JUnitTestCase.assertNotNull(superinterfacesOfE);
261 JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.t ype)); 269 JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.t ype));
262 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementA.type)); 270 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type));
263 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementB.type)); 271 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type));
264 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementC.type)); 272 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type));
265 JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementD.type)); 273 JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type));
266 JUnitTestCase.assertEquals(5, superinterfacesOfE.length); 274 JUnitTestCase.assertEquals(5, superinterfacesOfE.length);
267 } 275 }
268 void test_computeSuperinterfaceSet_singleInterfacePath() { 276 void test_computeSuperinterfaceSet_singleInterfacePath() {
269 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 277 ClassElementImpl classA = ElementFactory.classElement2("A", []);
270 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 278 ClassElementImpl classB = ElementFactory.classElement2("B", []);
271 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 279 ClassElementImpl classC = ElementFactory.classElement2("C", []);
272 elementB.interfaces = <InterfaceType> [elementA.type]; 280 classB.interfaces = <InterfaceType> [classA.type];
273 elementC.interfaces = <InterfaceType> [elementB.type]; 281 classC.interfaces = <InterfaceType> [classB.type];
274 Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterf aceSet(elementA.type); 282 Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterf aceSet(classA.type);
275 JUnitTestCase.assertNotNull(superinterfacesOfA); 283 JUnitTestCase.assertNotNull(superinterfacesOfA);
276 JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.t ype)); 284 JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.t ype));
277 JUnitTestCase.assertEquals(1, superinterfacesOfA.length); 285 JUnitTestCase.assertEquals(1, superinterfacesOfA.length);
278 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf aceSet(elementB.type); 286 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf aceSet(classB.type);
279 JUnitTestCase.assertNotNull(superinterfacesOfB); 287 JUnitTestCase.assertNotNull(superinterfacesOfB);
280 JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.t ype)); 288 JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.t ype));
281 JUnitTestCase.assertTrue(superinterfacesOfB.contains(elementA.type)); 289 JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type));
282 JUnitTestCase.assertEquals(2, superinterfacesOfB.length); 290 JUnitTestCase.assertEquals(2, superinterfacesOfB.length);
283 Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterf aceSet(elementC.type); 291 Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterf aceSet(classC.type);
284 JUnitTestCase.assertNotNull(superinterfacesOfC); 292 JUnitTestCase.assertNotNull(superinterfacesOfC);
285 JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.t ype)); 293 JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.t ype));
286 JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementA.type)); 294 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type));
287 JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementB.type)); 295 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type));
288 JUnitTestCase.assertEquals(3, superinterfacesOfC.length); 296 JUnitTestCase.assertEquals(3, superinterfacesOfC.length);
289 } 297 }
290 void test_computeSuperinterfaceSet_singleSuperclassPath() { 298 void test_computeSuperinterfaceSet_singleSuperclassPath() {
291 ClassElement elementA = ElementFactory.classElement2("A", []); 299 ClassElement classA = ElementFactory.classElement2("A", []);
292 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 300 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
293 ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); 301 ClassElement classC = ElementFactory.classElement("C", classB.type, []);
294 Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterf aceSet(elementA.type); 302 Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterf aceSet(classA.type);
295 JUnitTestCase.assertNotNull(superinterfacesOfA); 303 JUnitTestCase.assertNotNull(superinterfacesOfA);
296 JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.t ype)); 304 JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.t ype));
297 JUnitTestCase.assertEquals(1, superinterfacesOfA.length); 305 JUnitTestCase.assertEquals(1, superinterfacesOfA.length);
298 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf aceSet(elementB.type); 306 Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterf aceSet(classB.type);
299 JUnitTestCase.assertNotNull(superinterfacesOfB); 307 JUnitTestCase.assertNotNull(superinterfacesOfB);
300 JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.t ype)); 308 JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.t ype));
301 JUnitTestCase.assertTrue(superinterfacesOfB.contains(elementA.type)); 309 JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type));
302 JUnitTestCase.assertEquals(2, superinterfacesOfB.length); 310 JUnitTestCase.assertEquals(2, superinterfacesOfB.length);
303 Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterf aceSet(elementC.type); 311 Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterf aceSet(classC.type);
304 JUnitTestCase.assertNotNull(superinterfacesOfC); 312 JUnitTestCase.assertNotNull(superinterfacesOfC);
305 JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.t ype)); 313 JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.t ype));
306 JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementA.type)); 314 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type));
307 JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementB.type)); 315 JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type));
308 JUnitTestCase.assertEquals(3, superinterfacesOfC.length); 316 JUnitTestCase.assertEquals(3, superinterfacesOfC.length);
309 } 317 }
310 void test_creation() { 318 void test_creation() {
311 JUnitTestCase.assertNotNull(new InterfaceTypeImpl.con1(new ClassElementImpl( ASTFactory.identifier2("A")))); 319 JUnitTestCase.assertNotNull(new InterfaceTypeImpl.con1(ElementFactory.classE lement2("A", [])));
312 } 320 }
313 void test_getElement() { 321 void test_getElement() {
314 ClassElementImpl typeElement = new ClassElementImpl(ASTFactory.identifier2(" A")); 322 ClassElementImpl typeElement = ElementFactory.classElement2("A", []);
315 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); 323 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement);
316 JUnitTestCase.assertEquals(typeElement, type.element); 324 JUnitTestCase.assertEquals(typeElement, type.element);
317 } 325 }
326 void test_getGetter_implemented() {
327 ClassElementImpl classA = ElementFactory.classElement2("A", []);
328 String getterName = "g";
329 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f alse, null);
330 classA.accessors = <PropertyAccessorElement> [getterG];
331 InterfaceType typeA = classA.type;
332 JUnitTestCase.assertSame(getterG, typeA.getGetter(getterName));
333 }
334 void test_getGetter_parameterized() {
335 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
336 Type2 typeE = classA.type.typeArguments[0];
337 String getterName = "g";
338 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f alse, typeE);
339 classA.accessors = <PropertyAccessorElement> [getterG];
340 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
341 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
342 typeAI.typeArguments = <Type2> [typeI];
343 PropertyAccessorElement getter = typeAI.getGetter(getterName);
344 JUnitTestCase.assertNotNull(getter);
345 FunctionType getterType = getter.type;
346 JUnitTestCase.assertSame(typeI, getterType.returnType);
347 }
348 void test_getGetter_unimplemented() {
349 ClassElementImpl classA = ElementFactory.classElement2("A", []);
350 InterfaceType typeA = classA.type;
351 JUnitTestCase.assertNull(typeA.getGetter("g"));
352 }
353 void test_getInterfaces_nonParameterized() {
354 ClassElementImpl classA = ElementFactory.classElement2("A", []);
355 InterfaceType typeA = classA.type;
356 ClassElementImpl classB = ElementFactory.classElement2("B", []);
357 InterfaceType typeB = classB.type;
358 ClassElementImpl classC = ElementFactory.classElement2("C", []);
359 classC.interfaces = <InterfaceType> [typeA, typeB];
360 List<InterfaceType> interfaces7 = classC.type.interfaces;
361 EngineTestCase.assertLength(2, interfaces7);
362 if (identical(interfaces7[0], typeA)) {
363 JUnitTestCase.assertSame(typeB, interfaces7[1]);
364 } else {
365 JUnitTestCase.assertSame(typeB, interfaces7[0]);
366 JUnitTestCase.assertSame(typeA, interfaces7[1]);
367 }
368 }
369 void test_getInterfaces_parameterized() {
370 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
371 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
372 InterfaceType typeB = classB.type;
373 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
374 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]];
375 classB.interfaces = <InterfaceType> [typeAF];
376 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
377 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
378 typeBI.typeArguments = <Type2> [typeI];
379 List<InterfaceType> interfaces8 = typeBI.interfaces;
380 EngineTestCase.assertLength(1, interfaces8);
381 InterfaceType result = interfaces8[0];
382 JUnitTestCase.assertSame(classA, result.element);
383 JUnitTestCase.assertSame(typeI, result.typeArguments[0]);
384 }
318 void test_getLeastUpperBound_directInterfaceCase() { 385 void test_getLeastUpperBound_directInterfaceCase() {
319 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 386 ClassElementImpl classA = ElementFactory.classElement2("A", []);
320 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 387 ClassElementImpl classB = ElementFactory.classElement2("B", []);
321 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 388 ClassElementImpl classC = ElementFactory.classElement2("C", []);
322 InterfaceType typeA = elementA.type; 389 InterfaceType typeA = classA.type;
323 InterfaceType typeB = elementB.type; 390 InterfaceType typeB = classB.type;
324 InterfaceType typeC = elementC.type; 391 InterfaceType typeC = classC.type;
325 elementB.interfaces = <InterfaceType> [typeA]; 392 classB.interfaces = <InterfaceType> [typeA];
326 elementC.interfaces = <InterfaceType> [typeB]; 393 classC.interfaces = <InterfaceType> [typeB];
327 JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC)); 394 JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC));
328 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB)); 395 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB));
329 } 396 }
330 void test_getLeastUpperBound_directSubclassCase() { 397 void test_getLeastUpperBound_directSubclassCase() {
331 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 398 ClassElementImpl classA = ElementFactory.classElement2("A", []);
332 ClassElementImpl elementB = ElementFactory.classElement("B", elementA.type, []); 399 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
333 ClassElementImpl elementC = ElementFactory.classElement("C", elementB.type, []); 400 ClassElementImpl classC = ElementFactory.classElement("C", classB.type, []);
334 InterfaceType typeB = elementB.type; 401 InterfaceType typeB = classB.type;
335 InterfaceType typeC = elementC.type; 402 InterfaceType typeC = classC.type;
336 JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC)); 403 JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC));
337 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB)); 404 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB));
338 } 405 }
339 void test_getLeastUpperBound_functionType() { 406 void test_getLeastUpperBound_functionType() {
340 Type2 interfaceType = ElementFactory.classElement2("A", []).type; 407 Type2 interfaceType = ElementFactory.classElement2("A", []).type;
341 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen tImpl.con1(ASTFactory.identifier2("f"))); 408 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen tImpl.con1(ASTFactory.identifier3("f")));
342 JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(functionType)); 409 JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(functionType));
343 } 410 }
411 void test_getLeastUpperBound_ignoreTypeParameters() {
412 InterfaceType listType6 = _typeProvider.listType;
413 InterfaceType intType11 = _typeProvider.intType;
414 InterfaceType doubleType4 = _typeProvider.doubleType;
415 InterfaceType listOfIntType = listType6.substitute5(<Type2> [intType11]);
416 InterfaceType listOfDoubleType = listType6.substitute5(<Type2> [doubleType4] );
417 JUnitTestCase.assertEquals(listType6, listOfIntType.getLeastUpperBound(listO fDoubleType));
418 }
344 void test_getLeastUpperBound_mixinCase() { 419 void test_getLeastUpperBound_mixinCase() {
345 ClassElement elementA = ElementFactory.classElement2("A", []); 420 ClassElement classA = ElementFactory.classElement2("A", []);
346 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 421 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
347 ClassElement elementC = ElementFactory.classElement("C", elementA.type, []); 422 ClassElement classC = ElementFactory.classElement("C", classA.type, []);
348 ClassElementImpl elementD = ElementFactory.classElement("D", elementB.type, []); 423 ClassElementImpl classD = ElementFactory.classElement("D", classB.type, []);
349 InterfaceType typeA = elementA.type; 424 InterfaceType typeA = classA.type;
350 InterfaceType typeC = elementC.type; 425 InterfaceType typeC = classC.type;
351 InterfaceType typeD = elementD.type; 426 InterfaceType typeD = classD.type;
352 elementD.mixins = <InterfaceType> [ElementFactory.classElement2("M", []).typ e, ElementFactory.classElement2("N", []).type, ElementFactory.classElement2("O", []).type, ElementFactory.classElement2("P", []).type]; 427 classD.mixins = <InterfaceType> [ElementFactory.classElement2("M", []).type, ElementFactory.classElement2("N", []).type, ElementFactory.classElement2("O", [ ]).type, ElementFactory.classElement2("P", []).type];
353 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeC)); 428 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeC));
354 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeD)); 429 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeD));
355 } 430 }
356 void test_getLeastUpperBound_null() { 431 void test_getLeastUpperBound_null() {
357 Type2 interfaceType = ElementFactory.classElement2("A", []).type; 432 Type2 interfaceType = ElementFactory.classElement2("A", []).type;
358 JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(null)); 433 JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(null));
359 } 434 }
360 void test_getLeastUpperBound_object() { 435 void test_getLeastUpperBound_object() {
361 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 436 ClassElementImpl classA = ElementFactory.classElement2("A", []);
362 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 437 ClassElementImpl classB = ElementFactory.classElement2("B", []);
363 InterfaceType typeA = elementA.type; 438 InterfaceType typeA = classA.type;
364 InterfaceType typeB = elementB.type; 439 InterfaceType typeB = classB.type;
365 Type2 typeObject = typeA.element.supertype; 440 Type2 typeObject = typeA.element.supertype;
366 JUnitTestCase.assertNull(((typeObject.element as ClassElement)).supertype); 441 JUnitTestCase.assertNull(((typeObject.element as ClassElement)).supertype);
367 JUnitTestCase.assertEquals(typeObject, typeB.element.supertype); 442 JUnitTestCase.assertEquals(typeObject, typeB.element.supertype);
368 JUnitTestCase.assertEquals(typeObject, typeA.getLeastUpperBound(typeB)); 443 JUnitTestCase.assertEquals(typeObject, typeA.getLeastUpperBound(typeB));
369 } 444 }
370 void test_getLeastUpperBound_self() { 445 void test_getLeastUpperBound_self() {
371 ClassElement elementA = ElementFactory.classElement2("A", []); 446 ClassElement classA = ElementFactory.classElement2("A", []);
372 InterfaceType typeA = elementA.type; 447 InterfaceType typeA = classA.type;
373 JUnitTestCase.assertEquals(typeA, typeA.getLeastUpperBound(typeA)); 448 JUnitTestCase.assertEquals(typeA, typeA.getLeastUpperBound(typeA));
374 } 449 }
375 void test_getLeastUpperBound_sharedSuperclass1() { 450 void test_getLeastUpperBound_sharedSuperclass1() {
376 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 451 ClassElementImpl classA = ElementFactory.classElement2("A", []);
377 ClassElementImpl elementB = ElementFactory.classElement("B", elementA.type, []); 452 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
378 ClassElementImpl elementC = ElementFactory.classElement("C", elementA.type, []); 453 ClassElementImpl classC = ElementFactory.classElement("C", classA.type, []);
379 InterfaceType typeA = elementA.type; 454 InterfaceType typeA = classA.type;
380 InterfaceType typeB = elementB.type; 455 InterfaceType typeB = classB.type;
381 InterfaceType typeC = elementC.type; 456 InterfaceType typeC = classC.type;
382 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); 457 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
383 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); 458 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
384 } 459 }
385 void test_getLeastUpperBound_sharedSuperclass2() { 460 void test_getLeastUpperBound_sharedSuperclass2() {
386 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 461 ClassElementImpl classA = ElementFactory.classElement2("A", []);
387 ClassElementImpl elementB = ElementFactory.classElement("B", elementA.type, []); 462 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
388 ClassElementImpl elementC = ElementFactory.classElement("C", elementA.type, []); 463 ClassElementImpl classC = ElementFactory.classElement("C", classA.type, []);
389 ClassElementImpl elementD = ElementFactory.classElement("D", elementC.type, []); 464 ClassElementImpl classD = ElementFactory.classElement("D", classC.type, []);
390 InterfaceType typeA = elementA.type; 465 InterfaceType typeA = classA.type;
391 InterfaceType typeB = elementB.type; 466 InterfaceType typeB = classB.type;
392 InterfaceType typeD = elementD.type; 467 InterfaceType typeD = classD.type;
393 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD)); 468 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD));
394 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB)); 469 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB));
395 } 470 }
396 void test_getLeastUpperBound_sharedSuperclass3() { 471 void test_getLeastUpperBound_sharedSuperclass3() {
397 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 472 ClassElementImpl classA = ElementFactory.classElement2("A", []);
398 ClassElementImpl elementB = ElementFactory.classElement("B", elementA.type, []); 473 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
399 ClassElementImpl elementC = ElementFactory.classElement("C", elementB.type, []); 474 ClassElementImpl classC = ElementFactory.classElement("C", classB.type, []);
400 ClassElementImpl elementD = ElementFactory.classElement("D", elementB.type, []); 475 ClassElementImpl classD = ElementFactory.classElement("D", classB.type, []);
401 InterfaceType typeB = elementB.type; 476 InterfaceType typeB = classB.type;
402 InterfaceType typeC = elementC.type; 477 InterfaceType typeC = classC.type;
403 InterfaceType typeD = elementD.type; 478 InterfaceType typeD = classD.type;
404 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD)); 479 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD));
405 JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC)); 480 JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC));
406 } 481 }
407 void test_getLeastUpperBound_sharedSuperclass4() { 482 void test_getLeastUpperBound_sharedSuperclass4() {
408 ClassElement elementA = ElementFactory.classElement2("A", []); 483 ClassElement classA = ElementFactory.classElement2("A", []);
409 ClassElement elementA2 = ElementFactory.classElement2("A2", []); 484 ClassElement classA2 = ElementFactory.classElement2("A2", []);
410 ClassElement elementA3 = ElementFactory.classElement2("A3", []); 485 ClassElement classA3 = ElementFactory.classElement2("A3", []);
411 ClassElementImpl elementB = ElementFactory.classElement("B", elementA.type, []); 486 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
412 ClassElementImpl elementC = ElementFactory.classElement("C", elementA.type, []); 487 ClassElementImpl classC = ElementFactory.classElement("C", classA.type, []);
413 InterfaceType typeA = elementA.type; 488 InterfaceType typeA = classA.type;
414 InterfaceType typeA2 = elementA2.type; 489 InterfaceType typeA2 = classA2.type;
415 InterfaceType typeA3 = elementA3.type; 490 InterfaceType typeA3 = classA3.type;
416 InterfaceType typeB = elementB.type; 491 InterfaceType typeB = classB.type;
417 InterfaceType typeC = elementC.type; 492 InterfaceType typeC = classC.type;
418 elementB.interfaces = <InterfaceType> [typeA2]; 493 classB.interfaces = <InterfaceType> [typeA2];
419 elementC.interfaces = <InterfaceType> [typeA3]; 494 classC.interfaces = <InterfaceType> [typeA3];
420 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); 495 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
421 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); 496 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
422 } 497 }
423 void test_getLeastUpperBound_sharedSuperinterface1() { 498 void test_getLeastUpperBound_sharedSuperinterface1() {
424 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 499 ClassElementImpl classA = ElementFactory.classElement2("A", []);
425 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 500 ClassElementImpl classB = ElementFactory.classElement2("B", []);
426 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 501 ClassElementImpl classC = ElementFactory.classElement2("C", []);
427 InterfaceType typeA = elementA.type; 502 InterfaceType typeA = classA.type;
428 InterfaceType typeB = elementB.type; 503 InterfaceType typeB = classB.type;
429 InterfaceType typeC = elementC.type; 504 InterfaceType typeC = classC.type;
430 elementB.interfaces = <InterfaceType> [typeA]; 505 classB.interfaces = <InterfaceType> [typeA];
431 elementC.interfaces = <InterfaceType> [typeA]; 506 classC.interfaces = <InterfaceType> [typeA];
432 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); 507 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
433 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); 508 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
434 } 509 }
435 void test_getLeastUpperBound_sharedSuperinterface2() { 510 void test_getLeastUpperBound_sharedSuperinterface2() {
436 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 511 ClassElementImpl classA = ElementFactory.classElement2("A", []);
437 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 512 ClassElementImpl classB = ElementFactory.classElement2("B", []);
438 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 513 ClassElementImpl classC = ElementFactory.classElement2("C", []);
439 ClassElementImpl elementD = ElementFactory.classElement2("D", []); 514 ClassElementImpl classD = ElementFactory.classElement2("D", []);
440 InterfaceType typeA = elementA.type; 515 InterfaceType typeA = classA.type;
441 InterfaceType typeB = elementB.type; 516 InterfaceType typeB = classB.type;
442 InterfaceType typeC = elementC.type; 517 InterfaceType typeC = classC.type;
443 InterfaceType typeD = elementD.type; 518 InterfaceType typeD = classD.type;
444 elementB.interfaces = <InterfaceType> [typeA]; 519 classB.interfaces = <InterfaceType> [typeA];
445 elementC.interfaces = <InterfaceType> [typeA]; 520 classC.interfaces = <InterfaceType> [typeA];
446 elementD.interfaces = <InterfaceType> [typeC]; 521 classD.interfaces = <InterfaceType> [typeC];
447 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD)); 522 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD));
448 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB)); 523 JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB));
449 } 524 }
450 void test_getLeastUpperBound_sharedSuperinterface3() { 525 void test_getLeastUpperBound_sharedSuperinterface3() {
451 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 526 ClassElementImpl classA = ElementFactory.classElement2("A", []);
452 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 527 ClassElementImpl classB = ElementFactory.classElement2("B", []);
453 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 528 ClassElementImpl classC = ElementFactory.classElement2("C", []);
454 ClassElementImpl elementD = ElementFactory.classElement2("D", []); 529 ClassElementImpl classD = ElementFactory.classElement2("D", []);
455 InterfaceType typeA = elementA.type; 530 InterfaceType typeA = classA.type;
456 InterfaceType typeB = elementB.type; 531 InterfaceType typeB = classB.type;
457 InterfaceType typeC = elementC.type; 532 InterfaceType typeC = classC.type;
458 InterfaceType typeD = elementD.type; 533 InterfaceType typeD = classD.type;
459 elementB.interfaces = <InterfaceType> [typeA]; 534 classB.interfaces = <InterfaceType> [typeA];
460 elementC.interfaces = <InterfaceType> [typeB]; 535 classC.interfaces = <InterfaceType> [typeB];
461 elementD.interfaces = <InterfaceType> [typeB]; 536 classD.interfaces = <InterfaceType> [typeB];
462 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD)); 537 JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD));
463 JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC)); 538 JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC));
464 } 539 }
465 void test_getLeastUpperBound_sharedSuperinterface4() { 540 void test_getLeastUpperBound_sharedSuperinterface4() {
466 ClassElement elementA = ElementFactory.classElement2("A", []); 541 ClassElement classA = ElementFactory.classElement2("A", []);
467 ClassElement elementA2 = ElementFactory.classElement2("A2", []); 542 ClassElement classA2 = ElementFactory.classElement2("A2", []);
468 ClassElement elementA3 = ElementFactory.classElement2("A3", []); 543 ClassElement classA3 = ElementFactory.classElement2("A3", []);
469 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 544 ClassElementImpl classB = ElementFactory.classElement2("B", []);
470 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 545 ClassElementImpl classC = ElementFactory.classElement2("C", []);
471 InterfaceType typeA = elementA.type; 546 InterfaceType typeA = classA.type;
472 InterfaceType typeA2 = elementA2.type; 547 InterfaceType typeA2 = classA2.type;
473 InterfaceType typeA3 = elementA3.type; 548 InterfaceType typeA3 = classA3.type;
474 InterfaceType typeB = elementB.type; 549 InterfaceType typeB = classB.type;
475 InterfaceType typeC = elementC.type; 550 InterfaceType typeC = classC.type;
476 elementB.interfaces = <InterfaceType> [typeA, typeA2]; 551 classB.interfaces = <InterfaceType> [typeA, typeA2];
477 elementC.interfaces = <InterfaceType> [typeA, typeA3]; 552 classC.interfaces = <InterfaceType> [typeA, typeA3];
478 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); 553 JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
479 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); 554 JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
480 } 555 }
481 void test_getTypeArguments() { 556 void test_getMethod_implemented() {
482 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(new ClassElementImpl(AST Factory.identifier2("A"))); 557 ClassElementImpl classA = ElementFactory.classElement2("A", []);
483 EngineTestCase.assertLength(0, type.typeArguments); 558 String methodName = "m";
559 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, [ ]);
560 classA.methods = <MethodElement> [methodM];
561 InterfaceType typeA = classA.type;
562 JUnitTestCase.assertSame(methodM, typeA.getMethod(methodName));
563 }
564 void test_getMethod_parameterized() {
565 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
566 Type2 typeE = classA.type.typeArguments[0];
567 String methodName = "m";
568 MethodElementImpl methodM = ElementFactory.methodElement(methodName, typeE, [typeE]);
569 classA.methods = <MethodElement> [methodM];
570 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
571 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
572 typeAI.typeArguments = <Type2> [typeI];
573 MethodElement method = typeAI.getMethod(methodName);
574 JUnitTestCase.assertNotNull(method);
575 FunctionType methodType = method.type;
576 JUnitTestCase.assertSame(typeI, methodType.returnType);
577 List<Type2> parameterTypes = methodType.normalParameterTypes;
578 EngineTestCase.assertLength(1, parameterTypes);
579 JUnitTestCase.assertSame(typeI, parameterTypes[0]);
580 }
581 void test_getMethod_unimplemented() {
582 ClassElementImpl classA = ElementFactory.classElement2("A", []);
583 InterfaceType typeA = classA.type;
584 JUnitTestCase.assertNull(typeA.getMethod("m"));
585 }
586 void test_getMixins_nonParameterized() {
587 ClassElementImpl classA = ElementFactory.classElement2("A", []);
588 InterfaceType typeA = classA.type;
589 ClassElementImpl classB = ElementFactory.classElement2("B", []);
590 InterfaceType typeB = classB.type;
591 ClassElementImpl classC = ElementFactory.classElement2("C", []);
592 classC.mixins = <InterfaceType> [typeA, typeB];
593 List<InterfaceType> interfaces = classC.type.mixins;
594 EngineTestCase.assertLength(2, interfaces);
595 if (identical(interfaces[0], typeA)) {
596 JUnitTestCase.assertSame(typeB, interfaces[1]);
597 } else {
598 JUnitTestCase.assertSame(typeB, interfaces[0]);
599 JUnitTestCase.assertSame(typeA, interfaces[1]);
600 }
601 }
602 void test_getMixins_parameterized() {
603 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
604 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
605 InterfaceType typeB = classB.type;
606 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
607 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]];
608 classB.mixins = <InterfaceType> [typeAF];
609 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
610 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
611 typeBI.typeArguments = <Type2> [typeI];
612 List<InterfaceType> interfaces = typeBI.mixins;
613 EngineTestCase.assertLength(1, interfaces);
614 InterfaceType result = interfaces[0];
615 JUnitTestCase.assertSame(classA, result.element);
616 JUnitTestCase.assertSame(typeI, result.typeArguments[0]);
617 }
618 void test_getSetter_implemented() {
619 ClassElementImpl classA = ElementFactory.classElement2("A", []);
620 String setterName = "s";
621 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f alse, null);
622 classA.accessors = <PropertyAccessorElement> [setterS];
623 InterfaceType typeA = classA.type;
624 JUnitTestCase.assertSame(setterS, typeA.getSetter(setterName));
625 }
626 void test_getSetter_parameterized() {
627 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
628 Type2 typeE = classA.type.typeArguments[0];
629 String setterName = "s";
630 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f alse, typeE);
631 classA.accessors = <PropertyAccessorElement> [setterS];
632 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
633 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
634 typeAI.typeArguments = <Type2> [typeI];
635 PropertyAccessorElement setter = typeAI.getSetter(setterName);
636 JUnitTestCase.assertNotNull(setter);
637 FunctionType setterType = setter.type;
638 List<Type2> parameterTypes = setterType.normalParameterTypes;
639 EngineTestCase.assertLength(1, parameterTypes);
640 JUnitTestCase.assertSame(typeI, parameterTypes[0]);
641 }
642 void test_getSetter_unimplemented() {
643 ClassElementImpl classA = ElementFactory.classElement2("A", []);
644 InterfaceType typeA = classA.type;
645 JUnitTestCase.assertNull(typeA.getSetter("s"));
646 }
647 void test_getSuperclass_nonParameterized() {
648 ClassElementImpl classA = ElementFactory.classElement2("A", []);
649 InterfaceType typeA = classA.type;
650 ClassElementImpl classB = ElementFactory.classElement("B", typeA, []);
651 InterfaceType typeB = classB.type;
652 JUnitTestCase.assertSame(typeA, typeB.superclass);
653 }
654 void test_getSuperclass_parameterized() {
655 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
656 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
657 InterfaceType typeB = classB.type;
658 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
659 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]];
660 classB.supertype = typeAF;
661 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
662 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
663 typeBI.typeArguments = <Type2> [typeI];
664 InterfaceType superclass6 = typeBI.superclass;
665 JUnitTestCase.assertSame(classA, superclass6.element);
666 JUnitTestCase.assertSame(typeI, superclass6.typeArguments[0]);
667 }
668 void test_getTypeArguments_empty() {
669 InterfaceType type32 = ElementFactory.classElement2("A", []).type;
670 EngineTestCase.assertLength(0, type32.typeArguments);
484 } 671 }
485 void test_isDirectSupertypeOf_extends() { 672 void test_isDirectSupertypeOf_extends() {
486 ClassElement elementA = ElementFactory.classElement2("A", []); 673 ClassElement classA = ElementFactory.classElement2("A", []);
487 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 674 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
488 InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); 675 InterfaceType typeA = classA.type;
489 InterfaceTypeImpl typeB = new InterfaceTypeImpl.con1(elementB); 676 InterfaceType typeB = classB.type;
490 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); 677 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB));
491 } 678 }
492 void test_isDirectSupertypeOf_false() { 679 void test_isDirectSupertypeOf_false() {
493 ClassElement elementA = ElementFactory.classElement2("A", []); 680 ClassElement classA = ElementFactory.classElement2("A", []);
494 ClassElement elementB = ElementFactory.classElement2("B", []); 681 ClassElement classB = ElementFactory.classElement2("B", []);
495 ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); 682 ClassElement classC = ElementFactory.classElement("C", classB.type, []);
496 InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); 683 InterfaceType typeA = classA.type;
497 InterfaceTypeImpl typeC = new InterfaceTypeImpl.con1(elementC); 684 InterfaceType typeC = classC.type;
498 JUnitTestCase.assertFalse(typeA.isDirectSupertypeOf(typeC)); 685 JUnitTestCase.assertFalse(typeA.isDirectSupertypeOf(typeC));
499 } 686 }
500 void test_isDirectSupertypeOf_implements() { 687 void test_isDirectSupertypeOf_implements() {
501 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 688 ClassElementImpl classA = ElementFactory.classElement2("A", []);
502 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 689 ClassElementImpl classB = ElementFactory.classElement2("B", []);
503 elementB.interfaces = <InterfaceType> [elementA.type]; 690 InterfaceType typeA = classA.type;
504 InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); 691 InterfaceType typeB = classB.type;
505 InterfaceTypeImpl typeB = new InterfaceTypeImpl.con1(elementB); 692 classB.interfaces = <InterfaceType> [typeA];
506 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); 693 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB));
507 } 694 }
508 void test_isDirectSupertypeOf_with() { 695 void test_isDirectSupertypeOf_with() {
509 ClassElementImpl elementA = ElementFactory.classElement2("A", []); 696 ClassElementImpl classA = ElementFactory.classElement2("A", []);
510 ClassElementImpl elementB = ElementFactory.classElement2("B", []); 697 ClassElementImpl classB = ElementFactory.classElement2("B", []);
511 elementB.mixins = <InterfaceType> [elementA.type]; 698 InterfaceType typeA = classA.type;
512 InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); 699 InterfaceType typeB = classB.type;
513 InterfaceTypeImpl typeB = new InterfaceTypeImpl.con1(elementB); 700 classB.mixins = <InterfaceType> [typeA];
514 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); 701 JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB));
515 } 702 }
516 void test_isMoreSpecificThan_bottom() { 703 void test_isMoreSpecificThan_bottom() {
517 Type2 type25 = ElementFactory.classElement2("A", []).type; 704 Type2 type33 = ElementFactory.classElement2("A", []).type;
518 JUnitTestCase.assertTrue(BottomTypeImpl.instance.isMoreSpecificThan(type25)) ; 705 JUnitTestCase.assertTrue(BottomTypeImpl.instance.isMoreSpecificThan(type33)) ;
519 } 706 }
520 void test_isMoreSpecificThan_covariance() { 707 void test_isMoreSpecificThan_covariance() {
521 ClassElement elementA = ElementFactory.classElement2("A", ["E"]); 708 ClassElement classA = ElementFactory.classElement2("A", ["E"]);
522 ClassElement elementI = ElementFactory.classElement2("I", []); 709 ClassElement classI = ElementFactory.classElement2("I", []);
523 ClassElement elementJ = ElementFactory.classElement("J", elementI.type, []); 710 ClassElement classJ = ElementFactory.classElement("J", classI.type, []);
524 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(elementA); 711 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
525 InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(elementA); 712 InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA);
526 typeAI.typeArguments = <Type2> [elementI.type]; 713 typeAI.typeArguments = <Type2> [classI.type];
527 typeAJ.typeArguments = <Type2> [elementJ.type]; 714 typeAJ.typeArguments = <Type2> [classJ.type];
528 JUnitTestCase.assertTrue(typeAJ.isMoreSpecificThan(typeAI)); 715 JUnitTestCase.assertTrue(typeAJ.isMoreSpecificThan(typeAI));
529 JUnitTestCase.assertFalse(typeAI.isMoreSpecificThan(typeAJ)); 716 JUnitTestCase.assertFalse(typeAI.isMoreSpecificThan(typeAJ));
530 } 717 }
531 void test_isMoreSpecificThan_directSupertype() { 718 void test_isMoreSpecificThan_directSupertype() {
532 ClassElement elementA = ElementFactory.classElement2("A", []); 719 ClassElement classA = ElementFactory.classElement2("A", []);
533 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 720 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
534 InterfaceType typeA = elementA.type; 721 InterfaceType typeA = classA.type;
535 InterfaceType typeB = elementB.type; 722 InterfaceType typeB = classB.type;
536 JUnitTestCase.assertTrue(typeB.isMoreSpecificThan(typeA)); 723 JUnitTestCase.assertTrue(typeB.isMoreSpecificThan(typeA));
537 JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeB)); 724 JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeB));
538 } 725 }
539 void test_isMoreSpecificThan_dynamic() { 726 void test_isMoreSpecificThan_dynamic() {
540 InterfaceType type26 = ElementFactory.classElement2("A", []).type; 727 InterfaceType type34 = ElementFactory.classElement2("A", []).type;
541 JUnitTestCase.assertTrue(type26.isMoreSpecificThan(DynamicTypeImpl.instance) ); 728 JUnitTestCase.assertTrue(type34.isMoreSpecificThan(DynamicTypeImpl.instance) );
542 } 729 }
543 void test_isMoreSpecificThan_indirectSupertype() { 730 void test_isMoreSpecificThan_indirectSupertype() {
544 ClassElement elementA = ElementFactory.classElement2("A", []); 731 ClassElement classA = ElementFactory.classElement2("A", []);
545 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 732 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
546 ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); 733 ClassElement classC = ElementFactory.classElement("C", classB.type, []);
547 InterfaceType typeA = elementA.type; 734 InterfaceType typeA = classA.type;
548 InterfaceType typeC = elementC.type; 735 InterfaceType typeC = classC.type;
549 JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA)); 736 JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
550 } 737 }
551 void test_isMoreSpecificThan_self() { 738 void test_isMoreSpecificThan_self() {
552 InterfaceType type27 = ElementFactory.classElement2("A", []).type; 739 InterfaceType type35 = ElementFactory.classElement2("A", []).type;
553 JUnitTestCase.assertTrue(type27.isMoreSpecificThan(type27)); 740 JUnitTestCase.assertTrue(type35.isMoreSpecificThan(type35));
554 } 741 }
555 void test_isSubtypeOf_directSubtype() { 742 void test_isSubtypeOf_directSubtype() {
556 ClassElement elementA = ElementFactory.classElement2("A", []); 743 ClassElement classA = ElementFactory.classElement2("A", []);
557 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 744 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
558 InterfaceType typeA = elementA.type; 745 InterfaceType typeA = classA.type;
559 InterfaceType typeB = elementB.type; 746 InterfaceType typeB = classB.type;
560 JUnitTestCase.assertTrue(typeB.isSubtypeOf(typeA)); 747 JUnitTestCase.assertTrue(typeB.isSubtypeOf(typeA));
561 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeB)); 748 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeB));
562 } 749 }
563 void test_isSubtypeOf_dynamic() { 750 void test_isSubtypeOf_dynamic() {
564 ClassElement elementA = ElementFactory.classElement2("A", []); 751 ClassElement classA = ElementFactory.classElement2("A", []);
565 InterfaceType typeA = elementA.type; 752 InterfaceType typeA = classA.type;
566 Type2 dynamicType = DynamicTypeImpl.instance; 753 Type2 dynamicType = DynamicTypeImpl.instance;
567 JUnitTestCase.assertFalse(dynamicType.isSubtypeOf(typeA)); 754 JUnitTestCase.assertFalse(dynamicType.isSubtypeOf(typeA));
568 JUnitTestCase.assertTrue(typeA.isSubtypeOf(dynamicType)); 755 JUnitTestCase.assertTrue(typeA.isSubtypeOf(dynamicType));
569 } 756 }
570 void test_isSubtypeOf_indirectSubtype() { 757 void test_isSubtypeOf_indirectSubtype() {
571 ClassElement elementA = ElementFactory.classElement2("A", []); 758 ClassElement classA = ElementFactory.classElement2("A", []);
572 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 759 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
573 ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); 760 ClassElement classC = ElementFactory.classElement("C", classB.type, []);
574 InterfaceType typeA = elementA.type; 761 InterfaceType typeA = classA.type;
575 InterfaceType typeC = elementC.type; 762 InterfaceType typeC = classC.type;
576 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); 763 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
577 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); 764 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
578 } 765 }
579 void test_isSubtypeOf_interface() { 766 void test_isSubtypeOf_interface() {
580 ClassElement elementA = ElementFactory.classElement2("A", []); 767 ClassElement classA = ElementFactory.classElement2("A", []);
581 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 768 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
582 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 769 ClassElementImpl classC = ElementFactory.classElement2("C", []);
583 InterfaceType typeObject = elementA.supertype; 770 InterfaceType typeObject = classA.supertype;
584 InterfaceType typeA = elementA.type; 771 InterfaceType typeA = classA.type;
585 InterfaceType typeB = elementB.type; 772 InterfaceType typeB = classB.type;
586 InterfaceType typeC = elementC.type; 773 InterfaceType typeC = classC.type;
587 elementC.interfaces = <InterfaceType> [typeB]; 774 classC.interfaces = <InterfaceType> [typeB];
588 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB)); 775 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB));
589 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject)); 776 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject));
590 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); 777 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
591 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); 778 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
592 } 779 }
593 void test_isSubtypeOf_mixins() { 780 void test_isSubtypeOf_mixins() {
594 ClassElement elementA = ElementFactory.classElement2("A", []); 781 ClassElement classA = ElementFactory.classElement2("A", []);
595 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 782 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
596 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 783 ClassElementImpl classC = ElementFactory.classElement2("C", []);
597 InterfaceType typeObject = elementA.supertype; 784 InterfaceType typeObject = classA.supertype;
598 InterfaceType typeA = elementA.type; 785 InterfaceType typeA = classA.type;
599 InterfaceType typeB = elementB.type; 786 InterfaceType typeB = classB.type;
600 InterfaceType typeC = elementC.type; 787 InterfaceType typeC = classC.type;
601 elementC.mixins = <InterfaceType> [typeB]; 788 classC.mixins = <InterfaceType> [typeB];
602 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB)); 789 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB));
603 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject)); 790 JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject));
604 JUnitTestCase.assertFalse(typeC.isSubtypeOf(typeA)); 791 JUnitTestCase.assertFalse(typeC.isSubtypeOf(typeA));
605 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); 792 JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
606 } 793 }
607 void test_isSubtypeOf_object() { 794 void test_isSubtypeOf_object() {
608 ClassElement elementA = ElementFactory.classElement2("A", []); 795 ClassElement classA = ElementFactory.classElement2("A", []);
609 InterfaceType typeA = elementA.type; 796 InterfaceType typeA = classA.type;
610 InterfaceType typeObject = elementA.supertype; 797 InterfaceType typeObject = classA.supertype;
611 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeObject)); 798 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeObject));
612 JUnitTestCase.assertFalse(typeObject.isSubtypeOf(typeA)); 799 JUnitTestCase.assertFalse(typeObject.isSubtypeOf(typeA));
613 } 800 }
614 void test_isSubtypeOf_self() { 801 void test_isSubtypeOf_self() {
615 ClassElement elementA = ElementFactory.classElement2("A", []); 802 ClassElement classA = ElementFactory.classElement2("A", []);
616 InterfaceType typeA = elementA.type; 803 InterfaceType typeA = classA.type;
617 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeA)); 804 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeA));
618 } 805 }
619 void test_isSubtypeOf_typeArguments() { 806 void test_isSubtypeOf_typeArguments() {
620 ClassElement elementA = ElementFactory.classElement2("A", ["E"]); 807 ClassElement classA = ElementFactory.classElement2("A", ["E"]);
621 ClassElement elementI = ElementFactory.classElement2("I", []); 808 ClassElement classI = ElementFactory.classElement2("I", []);
622 ClassElement elementJ = ElementFactory.classElement("J", elementI.type, []); 809 ClassElement classJ = ElementFactory.classElement("J", classI.type, []);
623 ClassElement elementK = ElementFactory.classElement2("K", []); 810 ClassElement classK = ElementFactory.classElement2("K", []);
624 InterfaceType typeA = elementA.type; 811 InterfaceType typeA = classA.type;
625 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(elementA); 812 InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(classA);
626 InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(elementA); 813 InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(classA);
627 InterfaceTypeImpl typeAK = new InterfaceTypeImpl.con1(elementA); 814 InterfaceTypeImpl typeAK = new InterfaceTypeImpl.con1(classA);
628 typeAI.typeArguments = <Type2> [elementI.type]; 815 typeAI.typeArguments = <Type2> [classI.type];
629 typeAJ.typeArguments = <Type2> [elementJ.type]; 816 typeAJ.typeArguments = <Type2> [classJ.type];
630 typeAK.typeArguments = <Type2> [elementK.type]; 817 typeAK.typeArguments = <Type2> [classK.type];
631 JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeAI)); 818 JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeAI));
632 JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAJ)); 819 JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAJ));
633 JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeAI)); 820 JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeAI));
634 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeAI)); 821 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeAI));
635 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeAJ)); 822 JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeAJ));
636 JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeA)); 823 JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeA));
637 JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeA)); 824 JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeA));
638 JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAK)); 825 JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAK));
639 JUnitTestCase.assertFalse(typeAK.isSubtypeOf(typeAI)); 826 JUnitTestCase.assertFalse(typeAK.isSubtypeOf(typeAI));
640 } 827 }
641 void test_isSupertypeOf_directSupertype() { 828 void test_isSupertypeOf_directSupertype() {
642 ClassElement elementA = ElementFactory.classElement2("A", []); 829 ClassElement classA = ElementFactory.classElement2("A", []);
643 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 830 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
644 InterfaceType typeA = elementA.type; 831 InterfaceType typeA = classA.type;
645 InterfaceType typeB = elementB.type; 832 InterfaceType typeB = classB.type;
646 JUnitTestCase.assertFalse(typeB.isSupertypeOf(typeA)); 833 JUnitTestCase.assertFalse(typeB.isSupertypeOf(typeA));
647 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeB)); 834 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeB));
648 } 835 }
649 void test_isSupertypeOf_dynamic() { 836 void test_isSupertypeOf_dynamic() {
650 ClassElement elementA = ElementFactory.classElement2("A", []); 837 ClassElement classA = ElementFactory.classElement2("A", []);
651 InterfaceType typeA = elementA.type; 838 InterfaceType typeA = classA.type;
652 Type2 dynamicType = DynamicTypeImpl.instance; 839 Type2 dynamicType = DynamicTypeImpl.instance;
653 JUnitTestCase.assertTrue(dynamicType.isSupertypeOf(typeA)); 840 JUnitTestCase.assertTrue(dynamicType.isSupertypeOf(typeA));
654 JUnitTestCase.assertFalse(typeA.isSupertypeOf(dynamicType)); 841 JUnitTestCase.assertFalse(typeA.isSupertypeOf(dynamicType));
655 } 842 }
656 void test_isSupertypeOf_indirectSupertype() { 843 void test_isSupertypeOf_indirectSupertype() {
657 ClassElement elementA = ElementFactory.classElement2("A", []); 844 ClassElement classA = ElementFactory.classElement2("A", []);
658 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 845 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
659 ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); 846 ClassElement classC = ElementFactory.classElement("C", classB.type, []);
660 InterfaceType typeA = elementA.type; 847 InterfaceType typeA = classA.type;
661 InterfaceType typeC = elementC.type; 848 InterfaceType typeC = classC.type;
662 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); 849 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
663 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); 850 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC));
664 } 851 }
665 void test_isSupertypeOf_interface() { 852 void test_isSupertypeOf_interface() {
666 ClassElement elementA = ElementFactory.classElement2("A", []); 853 ClassElement classA = ElementFactory.classElement2("A", []);
667 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 854 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
668 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 855 ClassElementImpl classC = ElementFactory.classElement2("C", []);
669 InterfaceType typeObject = elementA.supertype; 856 InterfaceType typeObject = classA.supertype;
670 InterfaceType typeA = elementA.type; 857 InterfaceType typeA = classA.type;
671 InterfaceType typeB = elementB.type; 858 InterfaceType typeB = classB.type;
672 InterfaceType typeC = elementC.type; 859 InterfaceType typeC = classC.type;
673 elementC.interfaces = <InterfaceType> [typeB]; 860 classC.interfaces = <InterfaceType> [typeB];
674 JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC)); 861 JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC));
675 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC)); 862 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC));
676 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); 863 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC));
677 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); 864 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
678 } 865 }
679 void test_isSupertypeOf_mixins() { 866 void test_isSupertypeOf_mixins() {
680 ClassElement elementA = ElementFactory.classElement2("A", []); 867 ClassElement classA = ElementFactory.classElement2("A", []);
681 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 868 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
682 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 869 ClassElementImpl classC = ElementFactory.classElement2("C", []);
683 InterfaceType typeObject = elementA.supertype; 870 InterfaceType typeObject = classA.supertype;
684 InterfaceType typeA = elementA.type; 871 InterfaceType typeA = classA.type;
685 InterfaceType typeB = elementB.type; 872 InterfaceType typeB = classB.type;
686 InterfaceType typeC = elementC.type; 873 InterfaceType typeC = classC.type;
687 elementC.mixins = <InterfaceType> [typeB]; 874 classC.mixins = <InterfaceType> [typeB];
688 JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC)); 875 JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC));
689 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC)); 876 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC));
690 JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeC)); 877 JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeC));
691 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); 878 JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
692 } 879 }
693 void test_isSupertypeOf_object() { 880 void test_isSupertypeOf_object() {
694 ClassElement elementA = ElementFactory.classElement2("A", []); 881 ClassElement classA = ElementFactory.classElement2("A", []);
695 InterfaceType typeA = elementA.type; 882 InterfaceType typeA = classA.type;
696 InterfaceType typeObject = elementA.supertype; 883 InterfaceType typeObject = classA.supertype;
697 JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeObject)); 884 JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeObject));
698 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeA)); 885 JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeA));
699 } 886 }
700 void test_isSupertypeOf_self() { 887 void test_isSupertypeOf_self() {
701 ClassElement elementA = ElementFactory.classElement2("A", []); 888 ClassElement classA = ElementFactory.classElement2("A", []);
702 InterfaceType typeA = elementA.type; 889 InterfaceType typeA = classA.type;
703 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeA)); 890 JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeA));
704 } 891 }
892 void test_lookUpGetter_implemented() {
893 ClassElementImpl classA = ElementFactory.classElement2("A", []);
894 String getterName = "g";
895 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f alse, null);
896 classA.accessors = <PropertyAccessorElement> [getterG];
897 InterfaceType typeA = classA.type;
898 LibraryElementImpl library20 = ElementFactory.library(createAnalysisContext( ), "lib");
899 CompilationUnitElement unit = library20.definingCompilationUnit;
900 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
901 JUnitTestCase.assertSame(getterG, typeA.lookUpGetter(getterName, library20)) ;
902 }
903 void test_lookUpGetter_inherited() {
904 ClassElementImpl classA = ElementFactory.classElement2("A", []);
905 String getterName = "g";
906 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f alse, null);
907 classA.accessors = <PropertyAccessorElement> [getterG];
908 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
909 InterfaceType typeB = classB.type;
910 LibraryElementImpl library21 = ElementFactory.library(createAnalysisContext( ), "lib");
911 CompilationUnitElement unit = library21.definingCompilationUnit;
912 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class B];
913 JUnitTestCase.assertSame(getterG, typeB.lookUpGetter(getterName, library21)) ;
914 }
915 void test_lookUpGetter_unimplemented() {
916 ClassElementImpl classA = ElementFactory.classElement2("A", []);
917 InterfaceType typeA = classA.type;
918 LibraryElementImpl library22 = ElementFactory.library(createAnalysisContext( ), "lib");
919 CompilationUnitElement unit = library22.definingCompilationUnit;
920 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
921 JUnitTestCase.assertNull(typeA.lookUpGetter("g", library22));
922 }
923 void test_lookUpMethod_implemented() {
924 ClassElementImpl classA = ElementFactory.classElement2("A", []);
925 String methodName = "m";
926 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, [ ]);
927 classA.methods = <MethodElement> [methodM];
928 InterfaceType typeA = classA.type;
929 LibraryElementImpl library23 = ElementFactory.library(createAnalysisContext( ), "lib");
930 CompilationUnitElement unit = library23.definingCompilationUnit;
931 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
932 JUnitTestCase.assertSame(methodM, typeA.lookUpMethod(methodName, library23)) ;
933 }
934 void test_lookUpMethod_inherited() {
935 ClassElementImpl classA = ElementFactory.classElement2("A", []);
936 String methodName = "m";
937 MethodElementImpl methodM = ElementFactory.methodElement(methodName, null, [ ]);
938 classA.methods = <MethodElement> [methodM];
939 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
940 InterfaceType typeB = classB.type;
941 LibraryElementImpl library24 = ElementFactory.library(createAnalysisContext( ), "lib");
942 CompilationUnitElement unit = library24.definingCompilationUnit;
943 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class B];
944 JUnitTestCase.assertSame(methodM, typeB.lookUpMethod(methodName, library24)) ;
945 }
946 void test_lookUpMethod_parameterized() {
947 ClassElementImpl classA = ElementFactory.classElement2("A", ["E"]);
948 Type2 typeE = classA.type.typeArguments[0];
949 String methodName = "m";
950 MethodElementImpl methodM = ElementFactory.methodElement(methodName, typeE, [typeE]);
951 classA.methods = <MethodElement> [methodM];
952 ClassElementImpl classB = ElementFactory.classElement2("B", ["F"]);
953 InterfaceType typeB = classB.type;
954 InterfaceTypeImpl typeAF = new InterfaceTypeImpl.con1(classA);
955 typeAF.typeArguments = <Type2> [typeB.typeArguments[0]];
956 classB.supertype = typeAF;
957 LibraryElementImpl library25 = ElementFactory.library(createAnalysisContext( ), "lib");
958 CompilationUnitElement unit = library25.definingCompilationUnit;
959 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
960 InterfaceType typeI = ElementFactory.classElement2("I", []).type;
961 InterfaceTypeImpl typeBI = new InterfaceTypeImpl.con1(classB);
962 typeBI.typeArguments = <Type2> [typeI];
963 MethodElement method = typeBI.lookUpMethod(methodName, library25);
964 JUnitTestCase.assertNotNull(method);
965 FunctionType methodType = method.type;
966 JUnitTestCase.assertSame(typeI, methodType.returnType);
967 List<Type2> parameterTypes = methodType.normalParameterTypes;
968 EngineTestCase.assertLength(1, parameterTypes);
969 JUnitTestCase.assertSame(typeI, parameterTypes[0]);
970 }
971 void test_lookUpMethod_unimplemented() {
972 ClassElementImpl classA = ElementFactory.classElement2("A", []);
973 InterfaceType typeA = classA.type;
974 LibraryElementImpl library26 = ElementFactory.library(createAnalysisContext( ), "lib");
975 CompilationUnitElement unit = library26.definingCompilationUnit;
976 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
977 JUnitTestCase.assertNull(typeA.lookUpMethod("m", library26));
978 }
979 void test_lookUpSetter_implemented() {
980 ClassElementImpl classA = ElementFactory.classElement2("A", []);
981 String setterName = "s";
982 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f alse, null);
983 classA.accessors = <PropertyAccessorElement> [setterS];
984 InterfaceType typeA = classA.type;
985 LibraryElementImpl library27 = ElementFactory.library(createAnalysisContext( ), "lib");
986 CompilationUnitElement unit = library27.definingCompilationUnit;
987 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
988 JUnitTestCase.assertSame(setterS, typeA.lookUpSetter(setterName, library27)) ;
989 }
990 void test_lookUpSetter_inherited() {
991 ClassElementImpl classA = ElementFactory.classElement2("A", []);
992 String setterName = "g";
993 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f alse, null);
994 classA.accessors = <PropertyAccessorElement> [setterS];
995 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
996 InterfaceType typeB = classB.type;
997 LibraryElementImpl library28 = ElementFactory.library(createAnalysisContext( ), "lib");
998 CompilationUnitElement unit = library28.definingCompilationUnit;
999 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, class B];
1000 JUnitTestCase.assertSame(setterS, typeB.lookUpSetter(setterName, library28)) ;
1001 }
1002 void test_lookUpSetter_unimplemented() {
1003 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1004 InterfaceType typeA = classA.type;
1005 LibraryElementImpl library29 = ElementFactory.library(createAnalysisContext( ), "lib");
1006 CompilationUnitElement unit = library29.definingCompilationUnit;
1007 ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
1008 JUnitTestCase.assertNull(typeA.lookUpSetter("s", library29));
1009 }
705 void test_setTypeArguments() { 1010 void test_setTypeArguments() {
706 InterfaceTypeImpl type28 = ElementFactory.classElement2("A", []).type as Int erfaceTypeImpl; 1011 InterfaceTypeImpl type36 = ElementFactory.classElement2("A", []).type as Int erfaceTypeImpl;
707 List<Type2> typeArguments = <Type2> [new InterfaceTypeImpl.con1(ElementFacto ry.classElement2("B", [])), new InterfaceTypeImpl.con1(ElementFactory.classEleme nt2("C", []))]; 1012 List<Type2> typeArguments = <Type2> [ElementFactory.classElement2("B", []).t ype, ElementFactory.classElement2("C", []).type];
708 type28.typeArguments = typeArguments; 1013 type36.typeArguments = typeArguments;
709 JUnitTestCase.assertEquals(typeArguments, type28.typeArguments); 1014 JUnitTestCase.assertEquals(typeArguments, type36.typeArguments);
710 } 1015 }
711 void test_substitute_equal() { 1016 void test_substitute_equal() {
712 ClassElementImpl classElement = new ClassElementImpl(ASTFactory.identifier2( "A")); 1017 ClassElementImpl classA = ElementFactory.classElement2("A", []);
713 TypeVariableElementImpl parameterElement = new TypeVariableElementImpl(ASTFa ctory.identifier2("E")); 1018 TypeVariableElementImpl parameterElement = new TypeVariableElementImpl(ASTFa ctory.identifier3("E"));
714 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classElement); 1019 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA);
715 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(parameterElement); 1020 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(parameterElement);
716 type.typeArguments = <Type2> [parameter]; 1021 type.typeArguments = <Type2> [parameter];
717 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement Impl(ASTFactory.identifier2("B"))); 1022 InterfaceType argumentType = ElementFactory.classElement2("B", []).type;
718 InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [par ameter]); 1023 InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [par ameter]);
719 JUnitTestCase.assertEquals(classElement, result.element); 1024 JUnitTestCase.assertEquals(classA, result.element);
720 List<Type2> resultArguments = result.typeArguments; 1025 List<Type2> resultArguments = result.typeArguments;
721 EngineTestCase.assertLength(1, resultArguments); 1026 EngineTestCase.assertLength(1, resultArguments);
722 JUnitTestCase.assertEquals(argumentType, resultArguments[0]); 1027 JUnitTestCase.assertEquals(argumentType, resultArguments[0]);
723 } 1028 }
724 void test_substitute_notEqual() { 1029 void test_substitute_notEqual() {
725 ClassElementImpl classElement = new ClassElementImpl(ASTFactory.identifier2( "A")); 1030 ClassElementImpl classA = ElementFactory.classElement2("A", []);
726 TypeVariableElementImpl parameterElement = new TypeVariableElementImpl(ASTFa ctory.identifier2("E")); 1031 TypeVariableElementImpl parameterElement = new TypeVariableElementImpl(ASTFa ctory.identifier3("E"));
727 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classElement); 1032 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classA);
728 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(parameterElement); 1033 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(parameterElement);
729 type.typeArguments = <Type2> [parameter]; 1034 type.typeArguments = <Type2> [parameter];
730 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement Impl(ASTFactory.identifier2("B"))); 1035 InterfaceType argumentType = ElementFactory.classElement2("B", []).type;
731 TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariab leElementImpl(ASTFactory.identifier2("F"))); 1036 TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariab leElementImpl(ASTFactory.identifier3("F")));
732 InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [par ameterType]); 1037 InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [par ameterType]);
733 JUnitTestCase.assertEquals(classElement, result.element); 1038 JUnitTestCase.assertEquals(classA, result.element);
734 List<Type2> resultArguments = result.typeArguments; 1039 List<Type2> resultArguments = result.typeArguments;
735 EngineTestCase.assertLength(1, resultArguments); 1040 EngineTestCase.assertLength(1, resultArguments);
736 JUnitTestCase.assertEquals(parameter, resultArguments[0]); 1041 JUnitTestCase.assertEquals(parameter, resultArguments[0]);
737 } 1042 }
738 static dartSuite() { 1043 static dartSuite() {
739 _ut.group('InterfaceTypeImplTest', () { 1044 _ut.group('InterfaceTypeImplTest', () {
740 _ut.test('test_computeLongestInheritancePathToObject_multipleInterfacePath s', () { 1045 _ut.test('test_computeLongestInheritancePathToObject_multipleInterfacePath s', () {
741 final __test = new InterfaceTypeImplTest(); 1046 final __test = new InterfaceTypeImplTest();
742 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_m ultipleInterfacePaths); 1047 runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_m ultipleInterfacePaths);
743 }); 1048 });
(...skipping 30 matching lines...) Expand all
774 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleSupercla ssPath); 1079 runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleSupercla ssPath);
775 }); 1080 });
776 _ut.test('test_creation', () { 1081 _ut.test('test_creation', () {
777 final __test = new InterfaceTypeImplTest(); 1082 final __test = new InterfaceTypeImplTest();
778 runJUnitTest(__test, __test.test_creation); 1083 runJUnitTest(__test, __test.test_creation);
779 }); 1084 });
780 _ut.test('test_getElement', () { 1085 _ut.test('test_getElement', () {
781 final __test = new InterfaceTypeImplTest(); 1086 final __test = new InterfaceTypeImplTest();
782 runJUnitTest(__test, __test.test_getElement); 1087 runJUnitTest(__test, __test.test_getElement);
783 }); 1088 });
1089 _ut.test('test_getGetter_implemented', () {
1090 final __test = new InterfaceTypeImplTest();
1091 runJUnitTest(__test, __test.test_getGetter_implemented);
1092 });
1093 _ut.test('test_getGetter_parameterized', () {
1094 final __test = new InterfaceTypeImplTest();
1095 runJUnitTest(__test, __test.test_getGetter_parameterized);
1096 });
1097 _ut.test('test_getGetter_unimplemented', () {
1098 final __test = new InterfaceTypeImplTest();
1099 runJUnitTest(__test, __test.test_getGetter_unimplemented);
1100 });
1101 _ut.test('test_getInterfaces_nonParameterized', () {
1102 final __test = new InterfaceTypeImplTest();
1103 runJUnitTest(__test, __test.test_getInterfaces_nonParameterized);
1104 });
1105 _ut.test('test_getInterfaces_parameterized', () {
1106 final __test = new InterfaceTypeImplTest();
1107 runJUnitTest(__test, __test.test_getInterfaces_parameterized);
1108 });
784 _ut.test('test_getLeastUpperBound_directInterfaceCase', () { 1109 _ut.test('test_getLeastUpperBound_directInterfaceCase', () {
785 final __test = new InterfaceTypeImplTest(); 1110 final __test = new InterfaceTypeImplTest();
786 runJUnitTest(__test, __test.test_getLeastUpperBound_directInterfaceCase) ; 1111 runJUnitTest(__test, __test.test_getLeastUpperBound_directInterfaceCase) ;
787 }); 1112 });
788 _ut.test('test_getLeastUpperBound_directSubclassCase', () { 1113 _ut.test('test_getLeastUpperBound_directSubclassCase', () {
789 final __test = new InterfaceTypeImplTest(); 1114 final __test = new InterfaceTypeImplTest();
790 runJUnitTest(__test, __test.test_getLeastUpperBound_directSubclassCase); 1115 runJUnitTest(__test, __test.test_getLeastUpperBound_directSubclassCase);
791 }); 1116 });
792 _ut.test('test_getLeastUpperBound_functionType', () { 1117 _ut.test('test_getLeastUpperBound_functionType', () {
793 final __test = new InterfaceTypeImplTest(); 1118 final __test = new InterfaceTypeImplTest();
794 runJUnitTest(__test, __test.test_getLeastUpperBound_functionType); 1119 runJUnitTest(__test, __test.test_getLeastUpperBound_functionType);
795 }); 1120 });
1121 _ut.test('test_getLeastUpperBound_ignoreTypeParameters', () {
1122 final __test = new InterfaceTypeImplTest();
1123 runJUnitTest(__test, __test.test_getLeastUpperBound_ignoreTypeParameters );
1124 });
796 _ut.test('test_getLeastUpperBound_mixinCase', () { 1125 _ut.test('test_getLeastUpperBound_mixinCase', () {
797 final __test = new InterfaceTypeImplTest(); 1126 final __test = new InterfaceTypeImplTest();
798 runJUnitTest(__test, __test.test_getLeastUpperBound_mixinCase); 1127 runJUnitTest(__test, __test.test_getLeastUpperBound_mixinCase);
799 }); 1128 });
800 _ut.test('test_getLeastUpperBound_null', () { 1129 _ut.test('test_getLeastUpperBound_null', () {
801 final __test = new InterfaceTypeImplTest(); 1130 final __test = new InterfaceTypeImplTest();
802 runJUnitTest(__test, __test.test_getLeastUpperBound_null); 1131 runJUnitTest(__test, __test.test_getLeastUpperBound_null);
803 }); 1132 });
804 _ut.test('test_getLeastUpperBound_object', () { 1133 _ut.test('test_getLeastUpperBound_object', () {
805 final __test = new InterfaceTypeImplTest(); 1134 final __test = new InterfaceTypeImplTest();
(...skipping 28 matching lines...) Expand all
834 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface 2); 1163 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface 2);
835 }); 1164 });
836 _ut.test('test_getLeastUpperBound_sharedSuperinterface3', () { 1165 _ut.test('test_getLeastUpperBound_sharedSuperinterface3', () {
837 final __test = new InterfaceTypeImplTest(); 1166 final __test = new InterfaceTypeImplTest();
838 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface 3); 1167 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface 3);
839 }); 1168 });
840 _ut.test('test_getLeastUpperBound_sharedSuperinterface4', () { 1169 _ut.test('test_getLeastUpperBound_sharedSuperinterface4', () {
841 final __test = new InterfaceTypeImplTest(); 1170 final __test = new InterfaceTypeImplTest();
842 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface 4); 1171 runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface 4);
843 }); 1172 });
844 _ut.test('test_getTypeArguments', () { 1173 _ut.test('test_getMethod_implemented', () {
845 final __test = new InterfaceTypeImplTest(); 1174 final __test = new InterfaceTypeImplTest();
846 runJUnitTest(__test, __test.test_getTypeArguments); 1175 runJUnitTest(__test, __test.test_getMethod_implemented);
1176 });
1177 _ut.test('test_getMethod_parameterized', () {
1178 final __test = new InterfaceTypeImplTest();
1179 runJUnitTest(__test, __test.test_getMethod_parameterized);
1180 });
1181 _ut.test('test_getMethod_unimplemented', () {
1182 final __test = new InterfaceTypeImplTest();
1183 runJUnitTest(__test, __test.test_getMethod_unimplemented);
1184 });
1185 _ut.test('test_getMixins_nonParameterized', () {
1186 final __test = new InterfaceTypeImplTest();
1187 runJUnitTest(__test, __test.test_getMixins_nonParameterized);
1188 });
1189 _ut.test('test_getMixins_parameterized', () {
1190 final __test = new InterfaceTypeImplTest();
1191 runJUnitTest(__test, __test.test_getMixins_parameterized);
1192 });
1193 _ut.test('test_getSetter_implemented', () {
1194 final __test = new InterfaceTypeImplTest();
1195 runJUnitTest(__test, __test.test_getSetter_implemented);
1196 });
1197 _ut.test('test_getSetter_parameterized', () {
1198 final __test = new InterfaceTypeImplTest();
1199 runJUnitTest(__test, __test.test_getSetter_parameterized);
1200 });
1201 _ut.test('test_getSetter_unimplemented', () {
1202 final __test = new InterfaceTypeImplTest();
1203 runJUnitTest(__test, __test.test_getSetter_unimplemented);
1204 });
1205 _ut.test('test_getSuperclass_nonParameterized', () {
1206 final __test = new InterfaceTypeImplTest();
1207 runJUnitTest(__test, __test.test_getSuperclass_nonParameterized);
1208 });
1209 _ut.test('test_getSuperclass_parameterized', () {
1210 final __test = new InterfaceTypeImplTest();
1211 runJUnitTest(__test, __test.test_getSuperclass_parameterized);
1212 });
1213 _ut.test('test_getTypeArguments_empty', () {
1214 final __test = new InterfaceTypeImplTest();
1215 runJUnitTest(__test, __test.test_getTypeArguments_empty);
847 }); 1216 });
848 _ut.test('test_isDirectSupertypeOf_extends', () { 1217 _ut.test('test_isDirectSupertypeOf_extends', () {
849 final __test = new InterfaceTypeImplTest(); 1218 final __test = new InterfaceTypeImplTest();
850 runJUnitTest(__test, __test.test_isDirectSupertypeOf_extends); 1219 runJUnitTest(__test, __test.test_isDirectSupertypeOf_extends);
851 }); 1220 });
852 _ut.test('test_isDirectSupertypeOf_false', () { 1221 _ut.test('test_isDirectSupertypeOf_false', () {
853 final __test = new InterfaceTypeImplTest(); 1222 final __test = new InterfaceTypeImplTest();
854 runJUnitTest(__test, __test.test_isDirectSupertypeOf_false); 1223 runJUnitTest(__test, __test.test_isDirectSupertypeOf_false);
855 }); 1224 });
856 _ut.test('test_isDirectSupertypeOf_implements', () { 1225 _ut.test('test_isDirectSupertypeOf_implements', () {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 runJUnitTest(__test, __test.test_isSupertypeOf_mixins); 1307 runJUnitTest(__test, __test.test_isSupertypeOf_mixins);
939 }); 1308 });
940 _ut.test('test_isSupertypeOf_object', () { 1309 _ut.test('test_isSupertypeOf_object', () {
941 final __test = new InterfaceTypeImplTest(); 1310 final __test = new InterfaceTypeImplTest();
942 runJUnitTest(__test, __test.test_isSupertypeOf_object); 1311 runJUnitTest(__test, __test.test_isSupertypeOf_object);
943 }); 1312 });
944 _ut.test('test_isSupertypeOf_self', () { 1313 _ut.test('test_isSupertypeOf_self', () {
945 final __test = new InterfaceTypeImplTest(); 1314 final __test = new InterfaceTypeImplTest();
946 runJUnitTest(__test, __test.test_isSupertypeOf_self); 1315 runJUnitTest(__test, __test.test_isSupertypeOf_self);
947 }); 1316 });
1317 _ut.test('test_lookUpGetter_implemented', () {
1318 final __test = new InterfaceTypeImplTest();
1319 runJUnitTest(__test, __test.test_lookUpGetter_implemented);
1320 });
1321 _ut.test('test_lookUpGetter_inherited', () {
1322 final __test = new InterfaceTypeImplTest();
1323 runJUnitTest(__test, __test.test_lookUpGetter_inherited);
1324 });
1325 _ut.test('test_lookUpGetter_unimplemented', () {
1326 final __test = new InterfaceTypeImplTest();
1327 runJUnitTest(__test, __test.test_lookUpGetter_unimplemented);
1328 });
1329 _ut.test('test_lookUpMethod_implemented', () {
1330 final __test = new InterfaceTypeImplTest();
1331 runJUnitTest(__test, __test.test_lookUpMethod_implemented);
1332 });
1333 _ut.test('test_lookUpMethod_inherited', () {
1334 final __test = new InterfaceTypeImplTest();
1335 runJUnitTest(__test, __test.test_lookUpMethod_inherited);
1336 });
1337 _ut.test('test_lookUpMethod_parameterized', () {
1338 final __test = new InterfaceTypeImplTest();
1339 runJUnitTest(__test, __test.test_lookUpMethod_parameterized);
1340 });
1341 _ut.test('test_lookUpMethod_unimplemented', () {
1342 final __test = new InterfaceTypeImplTest();
1343 runJUnitTest(__test, __test.test_lookUpMethod_unimplemented);
1344 });
1345 _ut.test('test_lookUpSetter_implemented', () {
1346 final __test = new InterfaceTypeImplTest();
1347 runJUnitTest(__test, __test.test_lookUpSetter_implemented);
1348 });
1349 _ut.test('test_lookUpSetter_inherited', () {
1350 final __test = new InterfaceTypeImplTest();
1351 runJUnitTest(__test, __test.test_lookUpSetter_inherited);
1352 });
1353 _ut.test('test_lookUpSetter_unimplemented', () {
1354 final __test = new InterfaceTypeImplTest();
1355 runJUnitTest(__test, __test.test_lookUpSetter_unimplemented);
1356 });
948 _ut.test('test_setTypeArguments', () { 1357 _ut.test('test_setTypeArguments', () {
949 final __test = new InterfaceTypeImplTest(); 1358 final __test = new InterfaceTypeImplTest();
950 runJUnitTest(__test, __test.test_setTypeArguments); 1359 runJUnitTest(__test, __test.test_setTypeArguments);
951 }); 1360 });
952 _ut.test('test_substitute_equal', () { 1361 _ut.test('test_substitute_equal', () {
953 final __test = new InterfaceTypeImplTest(); 1362 final __test = new InterfaceTypeImplTest();
954 runJUnitTest(__test, __test.test_substitute_equal); 1363 runJUnitTest(__test, __test.test_substitute_equal);
955 }); 1364 });
956 _ut.test('test_substitute_notEqual', () { 1365 _ut.test('test_substitute_notEqual', () {
957 final __test = new InterfaceTypeImplTest(); 1366 final __test = new InterfaceTypeImplTest();
958 runJUnitTest(__test, __test.test_substitute_notEqual); 1367 runJUnitTest(__test, __test.test_substitute_notEqual);
959 }); 1368 });
960 }); 1369 });
961 } 1370 }
962 } 1371 }
963 class TypeVariableTypeImplTest extends EngineTestCase { 1372 class TypeVariableTypeImplTest extends EngineTestCase {
964 void test_creation() { 1373 void test_creation() {
965 JUnitTestCase.assertNotNull(new TypeVariableTypeImpl(new TypeVariableElement Impl(ASTFactory.identifier2("E")))); 1374 JUnitTestCase.assertNotNull(new TypeVariableTypeImpl(new TypeVariableElement Impl(ASTFactory.identifier3("E"))));
966 } 1375 }
967 void test_getElement() { 1376 void test_getElement() {
968 TypeVariableElementImpl element = new TypeVariableElementImpl(ASTFactory.ide ntifier2("E")); 1377 TypeVariableElementImpl element = new TypeVariableElementImpl(ASTFactory.ide ntifier3("E"));
969 TypeVariableTypeImpl type = new TypeVariableTypeImpl(element); 1378 TypeVariableTypeImpl type = new TypeVariableTypeImpl(element);
970 JUnitTestCase.assertEquals(element, type.element); 1379 JUnitTestCase.assertEquals(element, type.element);
971 } 1380 }
972 void test_substitute_equal() { 1381 void test_substitute_equal() {
973 TypeVariableElementImpl element = new TypeVariableElementImpl(ASTFactory.ide ntifier2("E")); 1382 TypeVariableElementImpl element = new TypeVariableElementImpl(ASTFactory.ide ntifier3("E"));
974 TypeVariableTypeImpl type = new TypeVariableTypeImpl(element); 1383 TypeVariableTypeImpl type = new TypeVariableTypeImpl(element);
975 InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl (ASTFactory.identifier2("A"))); 1384 InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl (ASTFactory.identifier3("A")));
976 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(element); 1385 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(element);
977 JUnitTestCase.assertSame(argument, type.substitute2(<Type2> [argument], <Typ e2> [parameter])); 1386 JUnitTestCase.assertSame(argument, type.substitute2(<Type2> [argument], <Typ e2> [parameter]));
978 } 1387 }
979 void test_substitute_notEqual() { 1388 void test_substitute_notEqual() {
980 TypeVariableTypeImpl type = new TypeVariableTypeImpl(new TypeVariableElement Impl(ASTFactory.identifier2("E"))); 1389 TypeVariableTypeImpl type = new TypeVariableTypeImpl(new TypeVariableElement Impl(ASTFactory.identifier3("E")));
981 InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl (ASTFactory.identifier2("A"))); 1390 InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl (ASTFactory.identifier3("A")));
982 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(new TypeVariableEl ementImpl(ASTFactory.identifier2("F"))); 1391 TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(new TypeVariableEl ementImpl(ASTFactory.identifier3("F")));
983 JUnitTestCase.assertSame(type, type.substitute2(<Type2> [argument], <Type2> [parameter])); 1392 JUnitTestCase.assertSame(type, type.substitute2(<Type2> [argument], <Type2> [parameter]));
984 } 1393 }
985 static dartSuite() { 1394 static dartSuite() {
986 _ut.group('TypeVariableTypeImplTest', () { 1395 _ut.group('TypeVariableTypeImplTest', () {
987 _ut.test('test_creation', () { 1396 _ut.test('test_creation', () {
988 final __test = new TypeVariableTypeImplTest(); 1397 final __test = new TypeVariableTypeImplTest();
989 runJUnitTest(__test, __test.test_creation); 1398 runJUnitTest(__test, __test.test_creation);
990 }); 1399 });
991 _ut.test('test_getElement', () { 1400 _ut.test('test_getElement', () {
992 final __test = new TypeVariableTypeImplTest(); 1401 final __test = new TypeVariableTypeImplTest();
(...skipping 14 matching lines...) Expand all
1007 * The class {@code ElementFactory} defines utility methods used to create eleme nts for testing 1416 * The class {@code ElementFactory} defines utility methods used to create eleme nts for testing
1008 * purposes. The elements that are created are complete in the sense that as muc h of the element 1417 * purposes. The elements that are created are complete in the sense that as muc h of the element
1009 * model as can be created, given the provided information, has been created. 1418 * model as can be created, given the provided information, has been created.
1010 */ 1419 */
1011 class ElementFactory { 1420 class ElementFactory {
1012 /** 1421 /**
1013 * The element representing the class 'Object'. 1422 * The element representing the class 'Object'.
1014 */ 1423 */
1015 static ClassElementImpl _objectElement; 1424 static ClassElementImpl _objectElement;
1016 static ClassElementImpl classElement(String typeName, InterfaceType superclass Type, List<String> parameterNames) { 1425 static ClassElementImpl classElement(String typeName, InterfaceType superclass Type, List<String> parameterNames) {
1017 ClassElementImpl element = new ClassElementImpl(ASTFactory.identifier2(typeN ame)); 1426 ClassElementImpl element = new ClassElementImpl(ASTFactory.identifier3(typeN ame));
1018 element.supertype = superclassType; 1427 element.supertype = superclassType;
1019 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element); 1428 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element);
1020 element.type = type; 1429 element.type = type;
1021 int count = parameterNames.length; 1430 int count = parameterNames.length;
1022 if (count > 0) { 1431 if (count > 0) {
1023 List<TypeVariableElementImpl> typeVariables = new List<TypeVariableElement Impl>(count); 1432 List<TypeVariableElementImpl> typeVariables = new List<TypeVariableElement Impl>(count);
1024 List<TypeVariableTypeImpl> typeArguments = new List<TypeVariableTypeImpl>( count); 1433 List<TypeVariableTypeImpl> typeArguments = new List<TypeVariableTypeImpl>( count);
1025 for (int i = 0; i < count; i++) { 1434 for (int i = 0; i < count; i++) {
1026 TypeVariableElementImpl variable = new TypeVariableElementImpl(ASTFactor y.identifier2(parameterNames[i])); 1435 TypeVariableElementImpl variable = new TypeVariableElementImpl(ASTFactor y.identifier3(parameterNames[i]));
1027 typeVariables[i] = variable; 1436 typeVariables[i] = variable;
1028 typeArguments[i] = new TypeVariableTypeImpl(variable); 1437 typeArguments[i] = new TypeVariableTypeImpl(variable);
1029 variable.type = typeArguments[i]; 1438 variable.type = typeArguments[i];
1030 } 1439 }
1031 element.typeVariables = typeVariables; 1440 element.typeVariables = typeVariables;
1032 type.typeArguments = typeArguments; 1441 type.typeArguments = typeArguments;
1033 } 1442 }
1034 return element; 1443 return element;
1035 } 1444 }
1036 static ClassElementImpl classElement2(String typeName, List<String> parameterN ames) => classElement(typeName, object.type, parameterNames); 1445 static ClassElementImpl classElement2(String typeName, List<String> parameterN ames) => classElement(typeName, object.type, parameterNames);
1037 static ConstructorElementImpl constructorElement(String name) => new Construct orElementImpl(name == null ? null : ASTFactory.identifier2(name)); 1446 static ConstructorElementImpl constructorElement(String name) => new Construct orElementImpl(name == null ? null : ASTFactory.identifier3(name));
1038 static ExportElementImpl exportFor(LibraryElement exportedLibrary4, List<Names paceCombinator> combinators4) { 1447 static ExportElementImpl exportFor(LibraryElement exportedLibrary4, List<Names paceCombinator> combinators4) {
1039 ExportElementImpl spec = new ExportElementImpl(); 1448 ExportElementImpl spec = new ExportElementImpl();
1040 spec.exportedLibrary = exportedLibrary4; 1449 spec.exportedLibrary = exportedLibrary4;
1041 spec.combinators = combinators4; 1450 spec.combinators = combinators4;
1042 return spec; 1451 return spec;
1043 } 1452 }
1044 static FieldElementImpl fieldElement(String name, bool isStatic, bool isFinal, bool isConst, Type2 type34) { 1453 static FieldElementImpl fieldElement(String name, bool isStatic, bool isFinal, bool isConst, Type2 type43) {
1045 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier2(na me)); 1454 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier3(na me));
1046 field.const3 = isConst; 1455 field.const3 = isConst;
1047 field.final2 = isFinal; 1456 field.final2 = isFinal;
1048 field.static = isStatic; 1457 field.static = isStatic;
1049 field.type = type34; 1458 field.type = type43;
1050 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi eld); 1459 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi eld);
1051 getter.getter = true; 1460 getter.getter = true;
1052 getter.synthetic = true; 1461 getter.synthetic = true;
1053 field.getter = getter; 1462 field.getter = getter;
1054 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); 1463 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
1055 getterType.returnType = type34; 1464 getterType.returnType = type43;
1056 getter.type = getterType; 1465 getter.type = getterType;
1057 if (!isConst && !isFinal) { 1466 if (!isConst && !isFinal) {
1058 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2( field); 1467 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2( field);
1059 setter.setter = true; 1468 setter.setter = true;
1060 setter.synthetic = true; 1469 setter.synthetic = true;
1061 field.setter = setter; 1470 field.setter = setter;
1062 FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter); 1471 FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter);
1063 setterType.normalParameterTypes = <Type2> [type34]; 1472 setterType.normalParameterTypes = <Type2> [type43];
1064 setterType.returnType = VoidTypeImpl.instance; 1473 setterType.returnType = VoidTypeImpl.instance;
1065 setter.type = setterType; 1474 setter.type = setterType;
1066 } 1475 }
1067 return field; 1476 return field;
1068 } 1477 }
1069 static FunctionElementImpl functionElement(String functionName) => functionEle ment4(functionName, null, null, null, null); 1478 static FunctionElementImpl functionElement(String functionName) => functionEle ment4(functionName, null, null, null, null);
1070 static FunctionElementImpl functionElement2(String functionName, ClassElement returnElement) => functionElement3(functionName, returnElement, null, null); 1479 static FunctionElementImpl functionElement2(String functionName, ClassElement returnElement) => functionElement3(functionName, returnElement, null, null);
1071 static FunctionElementImpl functionElement3(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<ClassElement> optionalP arameters) { 1480 static FunctionElementImpl functionElement3(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<ClassElement> optionalP arameters) {
1072 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor y.identifier2(functionName)); 1481 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor y.identifier3(functionName));
1073 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); 1482 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
1074 functionElement.type = functionType; 1483 functionElement.type = functionType;
1075 if (returnElement != null) { 1484 if (returnElement != null) {
1076 functionType.returnType = returnElement.type; 1485 functionType.returnType = returnElement.type;
1077 } 1486 }
1078 int count = normalParameters == null ? 0 : normalParameters.length; 1487 int count = normalParameters == null ? 0 : normalParameters.length;
1079 if (count > 0) { 1488 if (count > 0) {
1080 List<InterfaceType> normalParameterTypes = new List<InterfaceType>(count); 1489 List<InterfaceType> normalParameterTypes = new List<InterfaceType>(count);
1081 for (int i = 0; i < count; i++) { 1490 for (int i = 0; i < count; i++) {
1082 normalParameterTypes[i] = normalParameters[i].type; 1491 normalParameterTypes[i] = normalParameters[i].type;
1083 } 1492 }
1084 functionType.normalParameterTypes = normalParameterTypes; 1493 functionType.normalParameterTypes = normalParameterTypes;
1085 } 1494 }
1086 count = optionalParameters == null ? 0 : optionalParameters.length; 1495 count = optionalParameters == null ? 0 : optionalParameters.length;
1087 if (count > 0) { 1496 if (count > 0) {
1088 List<InterfaceType> optionalParameterTypes = new List<InterfaceType>(count ); 1497 List<InterfaceType> optionalParameterTypes = new List<InterfaceType>(count );
1089 for (int i = 0; i < count; i++) { 1498 for (int i = 0; i < count; i++) {
1090 optionalParameterTypes[i] = optionalParameters[i].type; 1499 optionalParameterTypes[i] = optionalParameters[i].type;
1091 } 1500 }
1092 functionType.optionalParameterTypes = optionalParameterTypes; 1501 functionType.optionalParameterTypes = optionalParameterTypes;
1093 } 1502 }
1094 return functionElement; 1503 return functionElement;
1095 } 1504 }
1096 static FunctionElementImpl functionElement4(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<String> names, List<Cla ssElement> namedParameters) { 1505 static FunctionElementImpl functionElement4(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<String> names, List<Cla ssElement> namedParameters) {
1097 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor y.identifier2(functionName)); 1506 FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactor y.identifier3(functionName));
1098 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); 1507 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement);
1099 functionElement.type = functionType; 1508 functionElement.type = functionType;
1100 if (returnElement != null) { 1509 if (returnElement != null) {
1101 functionType.returnType = returnElement.type; 1510 functionType.returnType = returnElement.type;
1102 } 1511 }
1103 int count = normalParameters == null ? 0 : normalParameters.length; 1512 int count = normalParameters == null ? 0 : normalParameters.length;
1104 if (count > 0) { 1513 if (count > 0) {
1105 List<InterfaceType> normalParameterTypes = new List<InterfaceType>(count); 1514 List<InterfaceType> normalParameterTypes = new List<InterfaceType>(count);
1106 for (int i = 0; i < count; i++) { 1515 for (int i = 0; i < count; i++) {
1107 normalParameterTypes[i] = normalParameters[i].type; 1516 normalParameterTypes[i] = normalParameters[i].type;
(...skipping 13 matching lines...) Expand all
1121 } 1530 }
1122 static FunctionElementImpl functionElement5(String functionName, List<ClassEle ment> normalParameters) => functionElement3(functionName, null, normalParameters , null); 1531 static FunctionElementImpl functionElement5(String functionName, List<ClassEle ment> normalParameters) => functionElement3(functionName, null, normalParameters , null);
1123 static FunctionElementImpl functionElement6(String functionName, List<ClassEle ment> normalParameters, List<ClassElement> optionalParameters) => functionElemen t3(functionName, null, normalParameters, optionalParameters); 1532 static FunctionElementImpl functionElement6(String functionName, List<ClassEle ment> normalParameters, List<ClassElement> optionalParameters) => functionElemen t3(functionName, null, normalParameters, optionalParameters);
1124 static FunctionElementImpl functionElement7(String functionName, List<ClassEle ment> normalParameters, List<String> names, List<ClassElement> namedParameters) => functionElement4(functionName, null, normalParameters, names, namedParameters ); 1533 static FunctionElementImpl functionElement7(String functionName, List<ClassEle ment> normalParameters, List<String> names, List<ClassElement> namedParameters) => functionElement4(functionName, null, normalParameters, names, namedParameters );
1125 static ClassElementImpl get object { 1534 static ClassElementImpl get object {
1126 if (_objectElement == null) { 1535 if (_objectElement == null) {
1127 _objectElement = classElement("Object", (null as InterfaceType), []); 1536 _objectElement = classElement("Object", (null as InterfaceType), []);
1128 } 1537 }
1129 return _objectElement; 1538 return _objectElement;
1130 } 1539 }
1131 static PropertyAccessorElementImpl getterElement(String name, bool isStatic, T ype2 type35) { 1540 static PropertyAccessorElementImpl getterElement(String name, bool isStatic, T ype2 type44) {
1132 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier2(na me)); 1541 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier3(na me));
1133 field.static = isStatic; 1542 field.static = isStatic;
1134 field.synthetic = true; 1543 field.synthetic = true;
1135 field.type = type35; 1544 field.type = type44;
1136 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi eld); 1545 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi eld);
1137 getter.getter = true; 1546 getter.getter = true;
1138 field.getter = getter; 1547 field.getter = getter;
1139 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); 1548 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
1140 getterType.returnType = type35; 1549 getterType.returnType = type44;
1141 getter.type = getterType; 1550 getter.type = getterType;
1142 return getter; 1551 return getter;
1143 } 1552 }
1144 static ImportElementImpl importFor(LibraryElement importedLibrary5, PrefixElem ent prefix13, List<NamespaceCombinator> combinators5) { 1553 static ImportElementImpl importFor(LibraryElement importedLibrary5, PrefixElem ent prefix13, List<NamespaceCombinator> combinators5) {
1145 ImportElementImpl spec = new ImportElementImpl(); 1554 ImportElementImpl spec = new ImportElementImpl();
1146 spec.importedLibrary = importedLibrary5; 1555 spec.importedLibrary = importedLibrary5;
1147 spec.prefix = prefix13; 1556 spec.prefix = prefix13;
1148 spec.combinators = combinators5; 1557 spec.combinators = combinators5;
1149 return spec; 1558 return spec;
1150 } 1559 }
1151 static LibraryElementImpl library(AnalysisContext context, String libraryName) { 1560 static LibraryElementImpl library(AnalysisContext context, String libraryName) {
1152 String fileName = "${libraryName}.dart"; 1561 String fileName = "${libraryName}.dart";
1153 FileBasedSource source = new FileBasedSource.con1(context.sourceFactory, Fil eUtilities2.createFile(fileName)); 1562 FileBasedSource source = new FileBasedSource.con1(context.sourceFactory.cont entCache, FileUtilities2.createFile(fileName));
1154 CompilationUnitElementImpl unit = new CompilationUnitElementImpl(fileName); 1563 CompilationUnitElementImpl unit = new CompilationUnitElementImpl(fileName);
1155 unit.source = source; 1564 unit.source = source;
1156 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr aryIdentifier2([libraryName])); 1565 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr aryIdentifier2([libraryName]));
1157 library.definingCompilationUnit = unit; 1566 library.definingCompilationUnit = unit;
1158 return library; 1567 return library;
1159 } 1568 }
1160 static LocalVariableElementImpl localVariableElement(Identifier name) => new L ocalVariableElementImpl(name); 1569 static LocalVariableElementImpl localVariableElement(Identifier name) => new L ocalVariableElementImpl(name);
1161 static LocalVariableElementImpl localVariableElement2(String name) => new Loca lVariableElementImpl(ASTFactory.identifier2(name)); 1570 static LocalVariableElementImpl localVariableElement2(String name) => new Loca lVariableElementImpl(ASTFactory.identifier3(name));
1162 static MethodElementImpl methodElement(String methodName, Type2 returnType14, List<Type2> argumentTypes) { 1571 static MethodElementImpl methodElement(String methodName, Type2 returnType16, List<Type2> argumentTypes) {
1163 MethodElementImpl method = new MethodElementImpl.con1(ASTFactory.identifier2 (methodName)); 1572 MethodElementImpl method = new MethodElementImpl.con1(ASTFactory.identifier3 (methodName));
1164 int count = argumentTypes.length; 1573 int count = argumentTypes.length;
1165 List<ParameterElement> parameters = new List<ParameterElement>(count); 1574 List<ParameterElement> parameters = new List<ParameterElement>(count);
1166 for (int i = 0; i < count; i++) { 1575 for (int i = 0; i < count; i++) {
1167 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.ident ifier2("a${i}")); 1576 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.ident ifier3("a${i}"));
1168 parameter.type = argumentTypes[i]; 1577 parameter.type = argumentTypes[i];
1169 parameter.parameterKind = ParameterKind.REQUIRED; 1578 parameter.parameterKind = ParameterKind.REQUIRED;
1170 parameters[i] = parameter; 1579 parameters[i] = parameter;
1171 } 1580 }
1172 method.parameters = parameters; 1581 method.parameters = parameters;
1173 FunctionTypeImpl methodType = new FunctionTypeImpl.con1(method); 1582 FunctionTypeImpl methodType = new FunctionTypeImpl.con1(method);
1174 methodType.normalParameterTypes = argumentTypes; 1583 methodType.normalParameterTypes = argumentTypes;
1175 methodType.returnType = returnType14; 1584 methodType.returnType = returnType16;
1176 method.type = methodType; 1585 method.type = methodType;
1177 return method; 1586 return method;
1178 } 1587 }
1179 static ParameterElementImpl namedParameter(String name) { 1588 static ParameterElementImpl namedParameter(String name) {
1180 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identif ier2(name)); 1589 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identif ier3(name));
1181 parameter.parameterKind = ParameterKind.NAMED; 1590 parameter.parameterKind = ParameterKind.NAMED;
1182 return parameter; 1591 return parameter;
1183 } 1592 }
1184 static ParameterElementImpl positionalParameter(String name) { 1593 static ParameterElementImpl positionalParameter(String name) {
1185 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identif ier2(name)); 1594 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identif ier3(name));
1186 parameter.parameterKind = ParameterKind.POSITIONAL; 1595 parameter.parameterKind = ParameterKind.POSITIONAL;
1187 return parameter; 1596 return parameter;
1188 } 1597 }
1189 static PrefixElementImpl prefix(String name) => new PrefixElementImpl(ASTFacto ry.identifier2(name)); 1598 static PrefixElementImpl prefix(String name) => new PrefixElementImpl(ASTFacto ry.identifier3(name));
1190 static ParameterElementImpl requiredParameter(String name) { 1599 static ParameterElementImpl requiredParameter(String name) {
1191 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identif ier2(name)); 1600 ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identif ier3(name));
1192 parameter.parameterKind = ParameterKind.REQUIRED; 1601 parameter.parameterKind = ParameterKind.REQUIRED;
1193 return parameter; 1602 return parameter;
1194 } 1603 }
1195 static PropertyAccessorElementImpl setterElement(String name, bool isStatic, T ype2 type36) { 1604 static PropertyAccessorElementImpl setterElement(String name, bool isStatic, T ype2 type45) {
1196 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier2(na me)); 1605 FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier3(na me));
1197 field.static = isStatic; 1606 field.static = isStatic;
1198 field.synthetic = true; 1607 field.synthetic = true;
1199 field.type = type36; 1608 field.type = type45;
1200 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi eld); 1609 PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(fi eld);
1201 getter.getter = true; 1610 getter.getter = true;
1202 field.getter = getter; 1611 field.getter = getter;
1203 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); 1612 FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
1204 getterType.returnType = type36; 1613 getterType.returnType = type45;
1205 getter.type = getterType; 1614 getter.type = getterType;
1206 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(fi eld); 1615 PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(fi eld);
1207 setter.setter = true; 1616 setter.setter = true;
1208 setter.synthetic = true; 1617 setter.synthetic = true;
1209 field.setter = setter; 1618 field.setter = setter;
1210 FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter); 1619 FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter);
1211 setterType.normalParameterTypes = <Type2> [type36]; 1620 setterType.normalParameterTypes = <Type2> [type45];
1212 setterType.returnType = VoidTypeImpl.instance; 1621 setterType.returnType = VoidTypeImpl.instance;
1213 setter.type = setterType; 1622 setter.type = setterType;
1214 return setter; 1623 return setter;
1215 } 1624 }
1216 static TopLevelVariableElementImpl topLevelVariableElement(Identifier name) => new TopLevelVariableElementImpl.con1(name); 1625 static TopLevelVariableElementImpl topLevelVariableElement(Identifier name) => new TopLevelVariableElementImpl.con1(name);
1217 static TopLevelVariableElementImpl topLevelVariableElement2(String name) => ne w TopLevelVariableElementImpl.con2(name); 1626 static TopLevelVariableElementImpl topLevelVariableElement2(String name) => ne w TopLevelVariableElementImpl.con2(name);
1218 /** 1627 /**
1219 * Prevent the creation of instances of this class. 1628 * Prevent the creation of instances of this class.
1220 */ 1629 */
1221 ElementFactory() { 1630 ElementFactory() {
1222 } 1631 }
1223 } 1632 }
1224 class ClassElementImplTest extends EngineTestCase { 1633 class ClassElementImplTest extends EngineTestCase {
1225 void test_allSupertypes_interface() { 1634 void test_getAllSupertypes_interface() {
1226 ClassElement elementA = ElementFactory.classElement2("A", []); 1635 ClassElement classA = ElementFactory.classElement2("A", []);
1227 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 1636 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
1228 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 1637 ClassElementImpl elementC = ElementFactory.classElement2("C", []);
1229 InterfaceType typeObject = elementA.supertype; 1638 InterfaceType typeObject = classA.supertype;
1230 InterfaceType typeA = elementA.type; 1639 InterfaceType typeA = classA.type;
1231 InterfaceType typeB = elementB.type; 1640 InterfaceType typeB = classB.type;
1232 InterfaceType typeC = elementC.type; 1641 InterfaceType typeC = elementC.type;
1233 elementC.interfaces = <InterfaceType> [typeB]; 1642 elementC.interfaces = <InterfaceType> [typeB];
1234 List<InterfaceType> supers = elementC.allSupertypes; 1643 List<InterfaceType> supers = elementC.allSupertypes;
1235 List<InterfaceType> types = new List<InterfaceType>(); 1644 List<InterfaceType> types = new List<InterfaceType>();
1236 types.addAll(supers); 1645 types.addAll(supers);
1237 JUnitTestCase.assertTrue(types.contains(typeA)); 1646 JUnitTestCase.assertTrue(types.contains(typeA));
1238 JUnitTestCase.assertTrue(types.contains(typeB)); 1647 JUnitTestCase.assertTrue(types.contains(typeB));
1239 JUnitTestCase.assertTrue(types.contains(typeObject)); 1648 JUnitTestCase.assertTrue(types.contains(typeObject));
1240 JUnitTestCase.assertFalse(types.contains(typeC)); 1649 JUnitTestCase.assertFalse(types.contains(typeC));
1241 } 1650 }
1242 void test_allSupertypes_mixins() { 1651 void test_getAllSupertypes_mixins() {
1243 ClassElement elementA = ElementFactory.classElement2("A", []); 1652 ClassElement classA = ElementFactory.classElement2("A", []);
1244 ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); 1653 ClassElement classB = ElementFactory.classElement("B", classA.type, []);
1245 ClassElementImpl elementC = ElementFactory.classElement2("C", []); 1654 ClassElementImpl classC = ElementFactory.classElement2("C", []);
1246 InterfaceType typeObject = elementA.supertype; 1655 InterfaceType typeObject = classA.supertype;
1247 InterfaceType typeA = elementA.type; 1656 InterfaceType typeA = classA.type;
1248 InterfaceType typeB = elementB.type; 1657 InterfaceType typeB = classB.type;
1249 InterfaceType typeC = elementC.type; 1658 InterfaceType typeC = classC.type;
1250 elementC.mixins = <InterfaceType> [typeB]; 1659 classC.mixins = <InterfaceType> [typeB];
1251 List<InterfaceType> supers = elementC.allSupertypes; 1660 List<InterfaceType> supers = classC.allSupertypes;
1252 List<InterfaceType> types = new List<InterfaceType>(); 1661 List<InterfaceType> types = new List<InterfaceType>();
1253 types.addAll(supers); 1662 types.addAll(supers);
1254 JUnitTestCase.assertFalse(types.contains(typeA)); 1663 JUnitTestCase.assertFalse(types.contains(typeA));
1255 JUnitTestCase.assertTrue(types.contains(typeB)); 1664 JUnitTestCase.assertTrue(types.contains(typeB));
1256 JUnitTestCase.assertTrue(types.contains(typeObject)); 1665 JUnitTestCase.assertTrue(types.contains(typeObject));
1257 JUnitTestCase.assertFalse(types.contains(typeC)); 1666 JUnitTestCase.assertFalse(types.contains(typeC));
1258 } 1667 }
1668 void test_getMethod_declared() {
1669 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1670 String methodName = "m";
1671 MethodElement method = ElementFactory.methodElement(methodName, null, []);
1672 classA.methods = <MethodElement> [method];
1673 JUnitTestCase.assertSame(method, classA.getMethod(methodName));
1674 }
1675 void test_getMethod_undeclared() {
1676 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1677 String methodName = "m";
1678 MethodElement method = ElementFactory.methodElement(methodName, null, []);
1679 classA.methods = <MethodElement> [method];
1680 JUnitTestCase.assertNull(classA.getMethod("${methodName}x"));
1681 }
1259 void test_lookUpGetter_declared() { 1682 void test_lookUpGetter_declared() {
1260 LibraryElementImpl library6 = ElementFactory.library(new AnalysisContextImpl (), "lib"); 1683 LibraryElementImpl library6 = ElementFactory.library(createAnalysisContext() , "lib");
1261 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1684 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1262 String getterName = "g"; 1685 String getterName = "g";
1263 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa lse, null); 1686 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa lse, null);
1264 classA.accessors = <PropertyAccessorElement> [getter]; 1687 classA.accessors = <PropertyAccessorElement> [getter];
1265 ((library6.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA]; 1688 ((library6.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA];
1266 JUnitTestCase.assertSame(getter, classA.lookUpGetter(getterName, library6)); 1689 JUnitTestCase.assertSame(getter, classA.lookUpGetter(getterName, library6));
1267 } 1690 }
1268 void test_lookUpGetter_inherited() { 1691 void test_lookUpGetter_inherited() {
1269 LibraryElementImpl library7 = ElementFactory.library(new AnalysisContextImpl (), "lib"); 1692 LibraryElementImpl library7 = ElementFactory.library(createAnalysisContext() , "lib");
1270 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1693 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1271 String getterName = "g"; 1694 String getterName = "g";
1272 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa lse, null); 1695 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa lse, null);
1273 classA.accessors = <PropertyAccessorElement> [getter]; 1696 classA.accessors = <PropertyAccessorElement> [getter];
1274 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); 1697 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
1275 ((library7.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA, classB]; 1698 ((library7.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA, classB];
1276 JUnitTestCase.assertSame(getter, classB.lookUpGetter(getterName, library7)); 1699 JUnitTestCase.assertSame(getter, classB.lookUpGetter(getterName, library7));
1277 } 1700 }
1278 void test_lookUpGetter_undeclared() { 1701 void test_lookUpGetter_undeclared() {
1279 LibraryElementImpl library8 = ElementFactory.library(new AnalysisContextImpl (), "lib"); 1702 LibraryElementImpl library8 = ElementFactory.library(createAnalysisContext() , "lib");
1280 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1703 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1281 ((library8.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA]; 1704 ((library8.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA];
1282 JUnitTestCase.assertNull(classA.lookUpGetter("g", library8)); 1705 JUnitTestCase.assertNull(classA.lookUpGetter("g", library8));
1283 } 1706 }
1284 void test_lookUpMethod_declared() { 1707 void test_lookUpMethod_declared() {
1285 LibraryElementImpl library9 = ElementFactory.library(new AnalysisContextImpl (), "lib"); 1708 LibraryElementImpl library9 = ElementFactory.library(createAnalysisContext() , "lib");
1286 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1709 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1287 String methodName = "m"; 1710 String methodName = "m";
1288 MethodElement method = ElementFactory.methodElement(methodName, null, []); 1711 MethodElement method = ElementFactory.methodElement(methodName, null, []);
1289 classA.methods = <MethodElement> [method]; 1712 classA.methods = <MethodElement> [method];
1290 ((library9.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA]; 1713 ((library9.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classA];
1291 JUnitTestCase.assertSame(method, classA.lookUpMethod(methodName, library9)); 1714 JUnitTestCase.assertSame(method, classA.lookUpMethod(methodName, library9));
1292 } 1715 }
1293 void test_lookUpMethod_inherited() { 1716 void test_lookUpMethod_inherited() {
1294 LibraryElementImpl library10 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1717 LibraryElementImpl library10 = ElementFactory.library(createAnalysisContext( ), "lib");
1295 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1718 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1296 String methodName = "m"; 1719 String methodName = "m";
1297 MethodElement method = ElementFactory.methodElement(methodName, null, []); 1720 MethodElement method = ElementFactory.methodElement(methodName, null, []);
1298 classA.methods = <MethodElement> [method]; 1721 classA.methods = <MethodElement> [method];
1299 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); 1722 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
1300 ((library10.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB]; 1723 ((library10.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
1301 JUnitTestCase.assertSame(method, classB.lookUpMethod(methodName, library10)) ; 1724 JUnitTestCase.assertSame(method, classB.lookUpMethod(methodName, library10)) ;
1302 } 1725 }
1303 void test_lookUpMethod_undeclared() { 1726 void test_lookUpMethod_undeclared() {
1304 LibraryElementImpl library11 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1727 LibraryElementImpl library11 = ElementFactory.library(createAnalysisContext( ), "lib");
1305 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1728 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1306 ((library11.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; 1729 ((library11.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
1307 JUnitTestCase.assertNull(classA.lookUpMethod("m", library11)); 1730 JUnitTestCase.assertNull(classA.lookUpMethod("m", library11));
1308 } 1731 }
1309 void test_lookUpSetter_declared() { 1732 void test_lookUpSetter_declared() {
1310 LibraryElementImpl library12 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1733 LibraryElementImpl library12 = ElementFactory.library(createAnalysisContext( ), "lib");
1311 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1734 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1312 String setterName = "s"; 1735 String setterName = "s";
1313 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa lse, null); 1736 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa lse, null);
1314 classA.accessors = <PropertyAccessorElement> [setter]; 1737 classA.accessors = <PropertyAccessorElement> [setter];
1315 ((library12.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; 1738 ((library12.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
1316 JUnitTestCase.assertSame(setter, classA.lookUpSetter(setterName, library12)) ; 1739 JUnitTestCase.assertSame(setter, classA.lookUpSetter(setterName, library12)) ;
1317 } 1740 }
1318 void test_lookUpSetter_inherited() { 1741 void test_lookUpSetter_inherited() {
1319 LibraryElementImpl library13 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1742 LibraryElementImpl library13 = ElementFactory.library(createAnalysisContext( ), "lib");
1320 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1743 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1321 String setterName = "s"; 1744 String setterName = "s";
1322 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa lse, null); 1745 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa lse, null);
1323 classA.accessors = <PropertyAccessorElement> [setter]; 1746 classA.accessors = <PropertyAccessorElement> [setter];
1324 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); 1747 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
1325 ((library13.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB]; 1748 ((library13.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
1326 JUnitTestCase.assertSame(setter, classB.lookUpSetter(setterName, library13)) ; 1749 JUnitTestCase.assertSame(setter, classB.lookUpSetter(setterName, library13)) ;
1327 } 1750 }
1328 void test_lookUpSetter_undeclared() { 1751 void test_lookUpSetter_undeclared() {
1329 LibraryElementImpl library14 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1752 LibraryElementImpl library14 = ElementFactory.library(createAnalysisContext( ), "lib");
1330 ClassElementImpl classA = ElementFactory.classElement2("A", []); 1753 ClassElementImpl classA = ElementFactory.classElement2("A", []);
1331 ((library14.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; 1754 ((library14.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
1332 JUnitTestCase.assertNull(classA.lookUpSetter("s", library14)); 1755 JUnitTestCase.assertNull(classA.lookUpSetter("s", library14));
1333 } 1756 }
1334 static dartSuite() { 1757 static dartSuite() {
1335 _ut.group('ClassElementImplTest', () { 1758 _ut.group('ClassElementImplTest', () {
1336 _ut.test('test_allSupertypes_interface', () { 1759 _ut.test('test_getAllSupertypes_interface', () {
1337 final __test = new ClassElementImplTest(); 1760 final __test = new ClassElementImplTest();
1338 runJUnitTest(__test, __test.test_allSupertypes_interface); 1761 runJUnitTest(__test, __test.test_getAllSupertypes_interface);
1339 }); 1762 });
1340 _ut.test('test_allSupertypes_mixins', () { 1763 _ut.test('test_getAllSupertypes_mixins', () {
1341 final __test = new ClassElementImplTest(); 1764 final __test = new ClassElementImplTest();
1342 runJUnitTest(__test, __test.test_allSupertypes_mixins); 1765 runJUnitTest(__test, __test.test_getAllSupertypes_mixins);
1766 });
1767 _ut.test('test_getMethod_declared', () {
1768 final __test = new ClassElementImplTest();
1769 runJUnitTest(__test, __test.test_getMethod_declared);
1770 });
1771 _ut.test('test_getMethod_undeclared', () {
1772 final __test = new ClassElementImplTest();
1773 runJUnitTest(__test, __test.test_getMethod_undeclared);
1343 }); 1774 });
1344 _ut.test('test_lookUpGetter_declared', () { 1775 _ut.test('test_lookUpGetter_declared', () {
1345 final __test = new ClassElementImplTest(); 1776 final __test = new ClassElementImplTest();
1346 runJUnitTest(__test, __test.test_lookUpGetter_declared); 1777 runJUnitTest(__test, __test.test_lookUpGetter_declared);
1347 }); 1778 });
1348 _ut.test('test_lookUpGetter_inherited', () { 1779 _ut.test('test_lookUpGetter_inherited', () {
1349 final __test = new ClassElementImplTest(); 1780 final __test = new ClassElementImplTest();
1350 runJUnitTest(__test, __test.test_lookUpGetter_inherited); 1781 runJUnitTest(__test, __test.test_lookUpGetter_inherited);
1351 }); 1782 });
1352 _ut.test('test_lookUpGetter_undeclared', () { 1783 _ut.test('test_lookUpGetter_undeclared', () {
(...skipping 22 matching lines...) Expand all
1375 }); 1806 });
1376 _ut.test('test_lookUpSetter_undeclared', () { 1807 _ut.test('test_lookUpSetter_undeclared', () {
1377 final __test = new ClassElementImplTest(); 1808 final __test = new ClassElementImplTest();
1378 runJUnitTest(__test, __test.test_lookUpSetter_undeclared); 1809 runJUnitTest(__test, __test.test_lookUpSetter_undeclared);
1379 }); 1810 });
1380 }); 1811 });
1381 } 1812 }
1382 } 1813 }
1383 class ElementImplTest extends EngineTestCase { 1814 class ElementImplTest extends EngineTestCase {
1384 void test_equals() { 1815 void test_equals() {
1385 LibraryElementImpl library15 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1816 LibraryElementImpl library15 = ElementFactory.library(createAnalysisContext( ), "lib");
1386 ClassElementImpl classElement = ElementFactory.classElement2("C", []); 1817 ClassElementImpl classElement = ElementFactory.classElement2("C", []);
1387 ((library15.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; 1818 ((library15.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement];
1388 FieldElement field = ElementFactory.fieldElement("next", false, false, false , classElement.type); 1819 FieldElement field = ElementFactory.fieldElement("next", false, false, false , classElement.type);
1389 classElement.fields = <FieldElement> [field]; 1820 classElement.fields = <FieldElement> [field];
1390 JUnitTestCase.assertTrue(field == field); 1821 JUnitTestCase.assertTrue(field == field);
1391 JUnitTestCase.assertFalse(field == field.getter); 1822 JUnitTestCase.assertFalse(field == field.getter);
1392 JUnitTestCase.assertFalse(field == field.setter); 1823 JUnitTestCase.assertFalse(field == field.setter);
1393 JUnitTestCase.assertFalse(field.getter == field.setter); 1824 JUnitTestCase.assertFalse(field.getter == field.setter);
1394 } 1825 }
1395 void test_isAccessibleIn_private_differentLibrary() { 1826 void test_isAccessibleIn_private_differentLibrary() {
1396 AnalysisContextImpl context = new AnalysisContextImpl(); 1827 AnalysisContextImpl context = createAnalysisContext();
1397 LibraryElementImpl library1 = ElementFactory.library(context, "lib1"); 1828 LibraryElementImpl library1 = ElementFactory.library(context, "lib1");
1398 ClassElement classElement = ElementFactory.classElement2("_C", []); 1829 ClassElement classElement = ElementFactory.classElement2("_C", []);
1399 ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classElement]; 1830 ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classElement];
1400 LibraryElementImpl library2 = ElementFactory.library(context, "lib2"); 1831 LibraryElementImpl library2 = ElementFactory.library(context, "lib2");
1401 JUnitTestCase.assertFalse(classElement.isAccessibleIn(library2)); 1832 JUnitTestCase.assertFalse(classElement.isAccessibleIn(library2));
1402 } 1833 }
1403 void test_isAccessibleIn_private_sameLibrary() { 1834 void test_isAccessibleIn_private_sameLibrary() {
1404 LibraryElementImpl library16 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1835 LibraryElementImpl library16 = ElementFactory.library(createAnalysisContext( ), "lib");
1405 ClassElement classElement = ElementFactory.classElement2("_C", []); 1836 ClassElement classElement = ElementFactory.classElement2("_C", []);
1406 ((library16.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; 1837 ((library16.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement];
1407 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library16)); 1838 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library16));
1408 } 1839 }
1409 void test_isAccessibleIn_public_differentLibrary() { 1840 void test_isAccessibleIn_public_differentLibrary() {
1410 AnalysisContextImpl context = new AnalysisContextImpl(); 1841 AnalysisContextImpl context = createAnalysisContext();
1411 LibraryElementImpl library1 = ElementFactory.library(context, "lib1"); 1842 LibraryElementImpl library1 = ElementFactory.library(context, "lib1");
1412 ClassElement classElement = ElementFactory.classElement2("C", []); 1843 ClassElement classElement = ElementFactory.classElement2("C", []);
1413 ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classElement]; 1844 ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = < ClassElement> [classElement];
1414 LibraryElementImpl library2 = ElementFactory.library(context, "lib2"); 1845 LibraryElementImpl library2 = ElementFactory.library(context, "lib2");
1415 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library2)); 1846 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library2));
1416 } 1847 }
1417 void test_isAccessibleIn_public_sameLibrary() { 1848 void test_isAccessibleIn_public_sameLibrary() {
1418 LibraryElementImpl library17 = ElementFactory.library(new AnalysisContextImp l(), "lib"); 1849 LibraryElementImpl library17 = ElementFactory.library(createAnalysisContext( ), "lib");
1419 ClassElement classElement = ElementFactory.classElement2("C", []); 1850 ClassElement classElement = ElementFactory.classElement2("C", []);
1420 ((library17.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; 1851 ((library17.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement];
1421 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library17)); 1852 JUnitTestCase.assertTrue(classElement.isAccessibleIn(library17));
1422 } 1853 }
1423 static dartSuite() { 1854 static dartSuite() {
1424 _ut.group('ElementImplTest', () { 1855 _ut.group('ElementImplTest', () {
1425 _ut.test('test_equals', () { 1856 _ut.test('test_equals', () {
1426 final __test = new ElementImplTest(); 1857 final __test = new ElementImplTest();
1427 runJUnitTest(__test, __test.test_equals); 1858 runJUnitTest(__test, __test.test_equals);
1428 }); 1859 });
(...skipping 11 matching lines...) Expand all
1440 }); 1871 });
1441 _ut.test('test_isAccessibleIn_public_sameLibrary', () { 1872 _ut.test('test_isAccessibleIn_public_sameLibrary', () {
1442 final __test = new ElementImplTest(); 1873 final __test = new ElementImplTest();
1443 runJUnitTest(__test, __test.test_isAccessibleIn_public_sameLibrary); 1874 runJUnitTest(__test, __test.test_isAccessibleIn_public_sameLibrary);
1444 }); 1875 });
1445 }); 1876 });
1446 } 1877 }
1447 } 1878 }
1448 class FunctionTypeImplTest extends EngineTestCase { 1879 class FunctionTypeImplTest extends EngineTestCase {
1449 void test_creation() { 1880 void test_creation() {
1450 JUnitTestCase.assertNotNull(new FunctionTypeImpl.con1(new FunctionElementImp l.con1(ASTFactory.identifier2("f")))); 1881 JUnitTestCase.assertNotNull(new FunctionTypeImpl.con1(new FunctionElementImp l.con1(ASTFactory.identifier3("f"))));
1451 } 1882 }
1452 void test_getElement() { 1883 void test_getElement() {
1453 FunctionElementImpl typeElement = new FunctionElementImpl.con1(ASTFactory.id entifier2("f")); 1884 FunctionElementImpl typeElement = new FunctionElementImpl.con1(ASTFactory.id entifier3("f"));
1454 FunctionTypeImpl type = new FunctionTypeImpl.con1(typeElement); 1885 FunctionTypeImpl type = new FunctionTypeImpl.con1(typeElement);
1455 JUnitTestCase.assertEquals(typeElement, type.element); 1886 JUnitTestCase.assertEquals(typeElement, type.element);
1456 } 1887 }
1457 void test_getNamedParameterTypes() { 1888 void test_getNamedParameterTypes() {
1458 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 1889 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1459 Map<String, Type2> types = type.namedParameterTypes; 1890 Map<String, Type2> types = type.namedParameterTypes;
1460 EngineTestCase.assertSize2(0, types); 1891 EngineTestCase.assertSize2(0, types);
1461 } 1892 }
1462 void test_getNormalParameterTypes() { 1893 void test_getNormalParameterTypes() {
1463 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 1894 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1464 List<Type2> types = type.normalParameterTypes; 1895 List<Type2> types = type.normalParameterTypes;
1465 EngineTestCase.assertLength(0, types); 1896 EngineTestCase.assertLength(0, types);
1466 } 1897 }
1467 void test_getReturnType() { 1898 void test_getReturnType() {
1468 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 1899 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1469 Type2 returnType10 = type.returnType; 1900 Type2 returnType12 = type.returnType;
1470 JUnitTestCase.assertEquals(VoidTypeImpl.instance, returnType10); 1901 JUnitTestCase.assertEquals(VoidTypeImpl.instance, returnType12);
1471 } 1902 }
1472 void test_getTypeArguments() { 1903 void test_getTypeArguments() {
1473 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 1904 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1474 List<Type2> types = type.typeArguments; 1905 List<Type2> types = type.typeArguments;
1475 EngineTestCase.assertLength(0, types); 1906 EngineTestCase.assertLength(0, types);
1476 } 1907 }
1477 void test_hashCode_element() { 1908 void test_hashCode_element() {
1478 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 1909 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1479 type.hashCode; 1910 type.hashCode;
1480 } 1911 }
1481 void test_hashCode_noElement() { 1912 void test_hashCode_noElement() {
1482 FunctionTypeImpl type = new FunctionTypeImpl.con1((null as ExecutableElement )); 1913 FunctionTypeImpl type = new FunctionTypeImpl.con1((null as ExecutableElement ));
1483 type.hashCode; 1914 type.hashCode;
1484 } 1915 }
1485 void test_isSubtypeOf_baseCase_classFunction() { 1916 void test_isSubtypeOf_baseCase_classFunction() {
1486 ClassElementImpl functionElement = ElementFactory.classElement2("Function", []); 1917 ClassElementImpl functionElement = ElementFactory.classElement2("Function", []);
1487 InterfaceTypeImpl functionType = new InterfaceTypeImpl_14(functionElement); 1918 InterfaceTypeImpl functionType = new InterfaceTypeImpl_18(functionElement);
1488 FunctionType f = ElementFactory.functionElement("f").type; 1919 FunctionType f = ElementFactory.functionElement("f").type;
1489 JUnitTestCase.assertTrue(f.isSubtypeOf(functionType)); 1920 JUnitTestCase.assertTrue(f.isSubtypeOf(functionType));
1490 } 1921 }
1491 void test_isSubtypeOf_baseCase_notFunctionType() { 1922 void test_isSubtypeOf_baseCase_notFunctionType() {
1492 FunctionType f = ElementFactory.functionElement("f").type; 1923 FunctionType f = ElementFactory.functionElement("f").type;
1493 InterfaceType t = ElementFactory.classElement2("C", []).type; 1924 InterfaceType t = ElementFactory.classElement2("C", []).type;
1494 JUnitTestCase.assertFalse(f.isSubtypeOf(t)); 1925 JUnitTestCase.assertFalse(f.isSubtypeOf(t));
1495 } 1926 }
1496 void test_isSubtypeOf_baseCase_null() { 1927 void test_isSubtypeOf_baseCase_null() {
1497 FunctionType f = ElementFactory.functionElement("f").type; 1928 FunctionType f = ElementFactory.functionElement("f").type;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); 2076 JUnitTestCase.assertFalse(s.isSubtypeOf(t));
1646 } 2077 }
1647 void test_isSubtypeOf_wrongFunctionType_optional_named() { 2078 void test_isSubtypeOf_wrongFunctionType_optional_named() {
1648 ClassElement a = ElementFactory.classElement2("A", []); 2079 ClassElement a = ElementFactory.classElement2("A", []);
1649 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [ a]).type; 2080 FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [ a]).type;
1650 FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name" ], <ClassElement> [a]).type; 2081 FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name" ], <ClassElement> [a]).type;
1651 JUnitTestCase.assertFalse(t.isSubtypeOf(s)); 2082 JUnitTestCase.assertFalse(t.isSubtypeOf(s));
1652 JUnitTestCase.assertFalse(s.isSubtypeOf(t)); 2083 JUnitTestCase.assertFalse(s.isSubtypeOf(t));
1653 } 2084 }
1654 void test_setNamedParameterTypes() { 2085 void test_setNamedParameterTypes() {
1655 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 2086 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1656 LinkedHashMap<String, Type2> expectedTypes = new LinkedHashMap<String, Type2 >(); 2087 LinkedHashMap<String, Type2> expectedTypes = new LinkedHashMap<String, Type2 >();
1657 expectedTypes["a"] = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFact ory.identifier2("C"))); 2088 expectedTypes["a"] = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFact ory.identifier3("C")));
1658 type.namedParameterTypes = expectedTypes; 2089 type.namedParameterTypes = expectedTypes;
1659 Map<String, Type2> types = type.namedParameterTypes; 2090 Map<String, Type2> types = type.namedParameterTypes;
1660 JUnitTestCase.assertEquals(expectedTypes, types); 2091 JUnitTestCase.assertEquals(expectedTypes, types);
1661 } 2092 }
1662 void test_setNormalParameterTypes() { 2093 void test_setNormalParameterTypes() {
1663 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 2094 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1664 List<Type2> expectedTypes = <Type2> [new InterfaceTypeImpl.con1(new ClassEle mentImpl(ASTFactory.identifier2("C")))]; 2095 List<Type2> expectedTypes = <Type2> [new InterfaceTypeImpl.con1(new ClassEle mentImpl(ASTFactory.identifier3("C")))];
1665 type.normalParameterTypes = expectedTypes; 2096 type.normalParameterTypes = expectedTypes;
1666 List<Type2> types = type.normalParameterTypes; 2097 List<Type2> types = type.normalParameterTypes;
1667 JUnitTestCase.assertEquals(expectedTypes, types); 2098 JUnitTestCase.assertEquals(expectedTypes, types);
1668 } 2099 }
1669 void test_setReturnType() { 2100 void test_setReturnType() {
1670 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 2101 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1671 Type2 expectedType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFact ory.identifier2("C"))); 2102 Type2 expectedType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFact ory.identifier3("C")));
1672 type.returnType = expectedType; 2103 type.returnType = expectedType;
1673 Type2 returnType11 = type.returnType; 2104 Type2 returnType13 = type.returnType;
1674 JUnitTestCase.assertEquals(expectedType, returnType11); 2105 JUnitTestCase.assertEquals(expectedType, returnType13);
1675 } 2106 }
1676 void test_setTypeArguments() { 2107 void test_setTypeArguments() {
1677 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier2("f"))); 2108 FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.co n1(ASTFactory.identifier3("f")));
1678 Type2 expectedType = new TypeVariableTypeImpl(new TypeVariableElementImpl(AS TFactory.identifier2("C"))); 2109 Type2 expectedType = new TypeVariableTypeImpl(new TypeVariableElementImpl(AS TFactory.identifier3("C")));
1679 type.typeArguments = <Type2> [expectedType]; 2110 type.typeArguments = <Type2> [expectedType];
1680 List<Type2> arguments = type.typeArguments; 2111 List<Type2> arguments = type.typeArguments;
1681 EngineTestCase.assertLength(1, arguments); 2112 EngineTestCase.assertLength(1, arguments);
1682 JUnitTestCase.assertEquals(expectedType, arguments[0]); 2113 JUnitTestCase.assertEquals(expectedType, arguments[0]);
1683 } 2114 }
1684 void test_substitute2_equal() { 2115 void test_substitute2_equal() {
1685 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen tImpl.con1(ASTFactory.identifier2("f"))); 2116 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen tImpl.con1(ASTFactory.identifier3("f")));
1686 TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariab leElementImpl(ASTFactory.identifier2("E"))); 2117 TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariab leElementImpl(ASTFactory.identifier3("E")));
1687 functionType.returnType = parameterType; 2118 functionType.returnType = parameterType;
1688 functionType.normalParameterTypes = <Type2> [parameterType]; 2119 functionType.normalParameterTypes = <Type2> [parameterType];
1689 functionType.optionalParameterTypes = <Type2> [parameterType]; 2120 functionType.optionalParameterTypes = <Type2> [parameterType];
1690 LinkedHashMap<String, Type2> namedParameterTypes = new LinkedHashMap<String, Type2>(); 2121 LinkedHashMap<String, Type2> namedParameterTypes = new LinkedHashMap<String, Type2>();
1691 String namedParameterName = "c"; 2122 String namedParameterName = "c";
1692 namedParameterTypes[namedParameterName] = parameterType; 2123 namedParameterTypes[namedParameterName] = parameterType;
1693 functionType.namedParameterTypes = namedParameterTypes; 2124 functionType.namedParameterTypes = namedParameterTypes;
1694 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement Impl(ASTFactory.identifier2("D"))); 2125 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement Impl(ASTFactory.identifier3("D")));
1695 FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type 2> [parameterType]); 2126 FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type 2> [parameterType]);
1696 JUnitTestCase.assertEquals(argumentType, result.returnType); 2127 JUnitTestCase.assertEquals(argumentType, result.returnType);
1697 List<Type2> normalParameters = result.normalParameterTypes; 2128 List<Type2> normalParameters = result.normalParameterTypes;
1698 EngineTestCase.assertLength(1, normalParameters); 2129 EngineTestCase.assertLength(1, normalParameters);
1699 JUnitTestCase.assertEquals(argumentType, normalParameters[0]); 2130 JUnitTestCase.assertEquals(argumentType, normalParameters[0]);
1700 List<Type2> optionalParameters = result.optionalParameterTypes; 2131 List<Type2> optionalParameters = result.optionalParameterTypes;
1701 EngineTestCase.assertLength(1, optionalParameters); 2132 EngineTestCase.assertLength(1, optionalParameters);
1702 JUnitTestCase.assertEquals(argumentType, optionalParameters[0]); 2133 JUnitTestCase.assertEquals(argumentType, optionalParameters[0]);
1703 Map<String, Type2> namedParameters = result.namedParameterTypes; 2134 Map<String, Type2> namedParameters = result.namedParameterTypes;
1704 EngineTestCase.assertSize2(1, namedParameters); 2135 EngineTestCase.assertSize2(1, namedParameters);
1705 JUnitTestCase.assertEquals(argumentType, namedParameters[namedParameterName] ); 2136 JUnitTestCase.assertEquals(argumentType, namedParameters[namedParameterName] );
1706 } 2137 }
1707 void test_substitute2_notEqual() { 2138 void test_substitute2_notEqual() {
1708 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen tImpl.con1(ASTFactory.identifier2("f"))); 2139 FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElemen tImpl.con1(ASTFactory.identifier3("f")));
1709 Type2 returnType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactor y.identifier2("R"))); 2140 Type2 returnType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactor y.identifier3("R")));
1710 Type2 normalParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl( ASTFactory.identifier2("A"))); 2141 Type2 normalParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl( ASTFactory.identifier3("A")));
1711 Type2 optionalParameterType = new InterfaceTypeImpl.con1(new ClassElementImp l(ASTFactory.identifier2("B"))); 2142 Type2 optionalParameterType = new InterfaceTypeImpl.con1(new ClassElementImp l(ASTFactory.identifier3("B")));
1712 Type2 namedParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(A STFactory.identifier2("C"))); 2143 Type2 namedParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(A STFactory.identifier3("C")));
1713 functionType.returnType = returnType; 2144 functionType.returnType = returnType;
1714 functionType.normalParameterTypes = <Type2> [normalParameterType]; 2145 functionType.normalParameterTypes = <Type2> [normalParameterType];
1715 functionType.optionalParameterTypes = <Type2> [optionalParameterType]; 2146 functionType.optionalParameterTypes = <Type2> [optionalParameterType];
1716 LinkedHashMap<String, Type2> namedParameterTypes = new LinkedHashMap<String, Type2>(); 2147 LinkedHashMap<String, Type2> namedParameterTypes = new LinkedHashMap<String, Type2>();
1717 String namedParameterName = "c"; 2148 String namedParameterName = "c";
1718 namedParameterTypes[namedParameterName] = namedParameterType; 2149 namedParameterTypes[namedParameterName] = namedParameterType;
1719 functionType.namedParameterTypes = namedParameterTypes; 2150 functionType.namedParameterTypes = namedParameterTypes;
1720 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement Impl(ASTFactory.identifier2("D"))); 2151 InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElement Impl(ASTFactory.identifier3("D")));
1721 TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariab leElementImpl(ASTFactory.identifier2("E"))); 2152 TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariab leElementImpl(ASTFactory.identifier3("E")));
1722 FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type 2> [parameterType]); 2153 FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type 2> [parameterType]);
1723 JUnitTestCase.assertEquals(returnType, result.returnType); 2154 JUnitTestCase.assertEquals(returnType, result.returnType);
1724 List<Type2> normalParameters = result.normalParameterTypes; 2155 List<Type2> normalParameters = result.normalParameterTypes;
1725 EngineTestCase.assertLength(1, normalParameters); 2156 EngineTestCase.assertLength(1, normalParameters);
1726 JUnitTestCase.assertEquals(normalParameterType, normalParameters[0]); 2157 JUnitTestCase.assertEquals(normalParameterType, normalParameters[0]);
1727 List<Type2> optionalParameters = result.optionalParameterTypes; 2158 List<Type2> optionalParameters = result.optionalParameterTypes;
1728 EngineTestCase.assertLength(1, optionalParameters); 2159 EngineTestCase.assertLength(1, optionalParameters);
1729 JUnitTestCase.assertEquals(optionalParameterType, optionalParameters[0]); 2160 JUnitTestCase.assertEquals(optionalParameterType, optionalParameters[0]);
1730 Map<String, Type2> namedParameters = result.namedParameterTypes; 2161 Map<String, Type2> namedParameters = result.namedParameterTypes;
1731 EngineTestCase.assertSize2(1, namedParameters); 2162 EngineTestCase.assertSize2(1, namedParameters);
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
1889 final __test = new FunctionTypeImplTest(); 2320 final __test = new FunctionTypeImplTest();
1890 runJUnitTest(__test, __test.test_substitute2_equal); 2321 runJUnitTest(__test, __test.test_substitute2_equal);
1891 }); 2322 });
1892 _ut.test('test_substitute2_notEqual', () { 2323 _ut.test('test_substitute2_notEqual', () {
1893 final __test = new FunctionTypeImplTest(); 2324 final __test = new FunctionTypeImplTest();
1894 runJUnitTest(__test, __test.test_substitute2_notEqual); 2325 runJUnitTest(__test, __test.test_substitute2_notEqual);
1895 }); 2326 });
1896 }); 2327 });
1897 } 2328 }
1898 } 2329 }
1899 class InterfaceTypeImpl_14 extends InterfaceTypeImpl { 2330 class InterfaceTypeImpl_18 extends InterfaceTypeImpl {
1900 InterfaceTypeImpl_14(ClassElement arg0) : super.con1(arg0); 2331 InterfaceTypeImpl_18(ClassElement arg0) : super.con1(arg0);
1901 bool isDartCoreFunction() => true; 2332 bool isDartCoreFunction() => true;
1902 } 2333 }
1903 main() { 2334 main() {
1904 FunctionTypeImplTest.dartSuite(); 2335 FunctionTypeImplTest.dartSuite();
1905 InterfaceTypeImplTest.dartSuite(); 2336 InterfaceTypeImplTest.dartSuite();
1906 TypeVariableTypeImplTest.dartSuite(); 2337 TypeVariableTypeImplTest.dartSuite();
1907 ClassElementImplTest.dartSuite(); 2338 ClassElementImplTest.dartSuite();
1908 ElementLocationImplTest.dartSuite(); 2339 ElementLocationImplTest.dartSuite();
1909 ElementImplTest.dartSuite(); 2340 ElementImplTest.dartSuite();
1910 LibraryElementImplTest.dartSuite(); 2341 LibraryElementImplTest.dartSuite();
1911 } 2342 }
OLDNEW
« no previous file with comments | « pkg/analyzer_experimental/test/generated/ast_test.dart ('k') | pkg/analyzer_experimental/test/generated/parser_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698