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

Side by Side Diff: tests/compiler/dart2js/world_test.dart

Issue 2314703002: Split World usage into open, inference, and closed world. (Closed)
Patch Set: Updated cf. comments Created 4 years, 3 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
« no previous file with comments | « tests/compiler/dart2js/union_type_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library world_test; 5 library world_test;
6 6
7 import 'package:expect/expect.dart'; 7 import 'package:expect/expect.dart';
8 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
9 import 'type_test_helper.dart'; 9 import 'type_test_helper.dart';
10 import 'package:compiler/src/common.dart'; 10 import 'package:compiler/src/common.dart';
(...skipping 26 matching lines...) Expand all
37 new A(); 37 new A();
38 new B(); 38 new B();
39 new C(); 39 new C();
40 new D(); 40 new D();
41 new E(); 41 new E();
42 new F(); 42 new F();
43 new G(); 43 new G();
44 } 44 }
45 """, 45 """,
46 useMockCompiler: false); 46 useMockCompiler: false);
47 ClassWorld classWorld = env.compiler.world; 47 ClassWorld classWorld = env.compiler.closedWorld;
48 48
49 ClassElement Object_ = env.getElement("Object"); 49 ClassElement Object_ = env.getElement("Object");
50 ClassElement A = env.getElement("A"); 50 ClassElement A = env.getElement("A");
51 ClassElement B = env.getElement("B"); 51 ClassElement B = env.getElement("B");
52 ClassElement C = env.getElement("C"); 52 ClassElement C = env.getElement("C");
53 ClassElement D = env.getElement("D"); 53 ClassElement D = env.getElement("D");
54 ClassElement E = env.getElement("E"); 54 ClassElement E = env.getElement("E");
55 ClassElement F = env.getElement("F"); 55 ClassElement F = env.getElement("F");
56 ClassElement G = env.getElement("G"); 56 ClassElement G = env.getElement("G");
57 ClassElement X = env.getElement("X"); 57 ClassElement X = env.getElement("X");
58 58
59 void checkClasses( 59 void checkClasses(
60 String property, 60 String property,
61 ClassElement cls, 61 ClassElement cls,
62 Iterable<ClassElement> foundClasses, 62 Iterable<ClassElement> foundClasses,
63 List<ClassElement> expectedClasses, 63 List<ClassElement> expectedClasses,
64 {bool exact: true}) { 64 {bool exact: true}) {
65 65
66 for (ClassElement expectedClass in expectedClasses) { 66 for (ClassElement expectedClass in expectedClasses) {
67 Expect.isTrue(foundClasses.contains(expectedClass), 67 Expect.isTrue(foundClasses.contains(expectedClass),
68 "Expect $expectedClass in '$property' on $cls. " 68 "Expect $expectedClass in '$property' on $cls. "
69 "Found:\n ${foundClasses.join('\n ')}\n" 69 "Found:\n ${foundClasses.join('\n ')}\n"
70 "${env.compiler.world.dump(cls)}"); 70 "${env.compiler.closedWorld.dump(cls)}");
71 } 71 }
72 if (exact) { 72 if (exact) {
73 Expect.equals(expectedClasses.length, foundClasses.length, 73 Expect.equals(expectedClasses.length, foundClasses.length,
74 "Unexpected classes " 74 "Unexpected classes "
75 "${foundClasses.where((c) => !expectedClasses.contains(c))} " 75 "${foundClasses.where((c) => !expectedClasses.contains(c))} "
76 "in '$property' on $cls.\n" 76 "in '$property' on $cls.\n"
77 "${env.compiler.world.dump(cls)}"); 77 "${env.compiler.closedWorld.dump(cls)}");
78 } 78 }
79 } 79 }
80 80
81 void check( 81 void check(
82 String property, 82 String property,
83 ClassElement cls, 83 ClassElement cls,
84 Iterable<ClassElement> foundClasses, 84 Iterable<ClassElement> foundClasses,
85 List<ClassElement> expectedClasses, 85 List<ClassElement> expectedClasses,
86 {bool exact: true, 86 {bool exact: true,
87 void forEach(ClassElement cls, ForEachFunction f), 87 void forEach(ClassElement cls, ForEachFunction f),
88 int getCount(ClassElement cls)}) { 88 int getCount(ClassElement cls)}) {
89 checkClasses(property, cls, foundClasses, expectedClasses, exact: exact); 89 checkClasses(property, cls, foundClasses, expectedClasses, exact: exact);
90 90
91 if (forEach != null) { 91 if (forEach != null) {
92 List<ClassElement> visited = <ClassElement>[]; 92 List<ClassElement> visited = <ClassElement>[];
93 forEach(cls, (ClassElement c) { 93 forEach(cls, (ClassElement c) {
94 visited.add(c); 94 visited.add(c);
95 }); 95 });
96 checkClasses( 96 checkClasses(
97 'forEach($property)', cls, visited, expectedClasses, exact: exact); 97 'forEach($property)', cls, visited, expectedClasses, exact: exact);
98 } 98 }
99 99
100 if (getCount != null && exact) { 100 if (getCount != null && exact) {
101 int count = getCount(cls); 101 int count = getCount(cls);
102 Expect.equals(expectedClasses.length, count, 102 Expect.equals(expectedClasses.length, count,
103 "Unexpected class count in '$property' on $cls.\n" 103 "Unexpected class count in '$property' on $cls.\n"
104 "${env.compiler.world.dump(cls)}"); 104 "${env.compiler.closedWorld.dump(cls)}");
105 } 105 }
106 106
107 } 107 }
108 108
109 void testSubclasses( 109 void testSubclasses(
110 ClassElement cls, 110 ClassElement cls,
111 List<ClassElement> expectedClasses, 111 List<ClassElement> expectedClasses,
112 {bool exact: true}) { 112 {bool exact: true}) {
113 check( 113 check(
114 'subclassesOf', 114 'subclassesOf',
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 new D2(); 250 new D2();
251 new E3(); 251 new E3();
252 new F1(); 252 new F1();
253 new F2(); 253 new F2();
254 new G2(); 254 new G2();
255 new G3(); 255 new G3();
256 new H4(); 256 new H4();
257 } 257 }
258 """, 258 """,
259 useMockCompiler: false); 259 useMockCompiler: false);
260 ClassWorld classWorld = env.compiler.world; 260 ClassWorld classWorld = env.compiler.closedWorld;
261 261
262 check(String name, 262 check(String name,
263 {bool hasStrictSubtype, 263 {bool hasStrictSubtype,
264 bool hasOnlySubclasses}) { 264 bool hasOnlySubclasses}) {
265 ClassElement cls = env.getElement(name); 265 ClassElement cls = env.getElement(name);
266 Expect.equals(hasStrictSubtype, classWorld.hasAnyStrictSubtype(cls), 266 Expect.equals(hasStrictSubtype, classWorld.hasAnyStrictSubtype(cls),
267 "Unexpected hasAnyStrictSubtype property on $cls."); 267 "Unexpected hasAnyStrictSubtype property on $cls.");
268 Expect.equals(hasOnlySubclasses, classWorld.hasOnlySubclasses(cls), 268 Expect.equals(hasOnlySubclasses, classWorld.hasOnlySubclasses(cls),
269 "Unexpected hasOnlySubclasses property on $cls."); 269 "Unexpected hasOnlySubclasses property on $cls.");
270 } 270 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 check("G3", hasStrictSubtype: false, hasOnlySubclasses: true); 316 check("G3", hasStrictSubtype: false, hasOnlySubclasses: true);
317 check("G4", hasStrictSubtype: false, hasOnlySubclasses: true); 317 check("G4", hasStrictSubtype: false, hasOnlySubclasses: true);
318 318
319 // class H4 extends H2 with H extends H1 extends H instantiated 319 // class H4 extends H2 with H extends H1 extends H instantiated
320 check("H", hasStrictSubtype: true, hasOnlySubclasses: true); 320 check("H", hasStrictSubtype: true, hasOnlySubclasses: true);
321 check("H1", hasStrictSubtype: true, hasOnlySubclasses: true); 321 check("H1", hasStrictSubtype: true, hasOnlySubclasses: true);
322 check("H2", hasStrictSubtype: true, hasOnlySubclasses: true); 322 check("H2", hasStrictSubtype: true, hasOnlySubclasses: true);
323 check("H3", hasStrictSubtype: false, hasOnlySubclasses: true); 323 check("H3", hasStrictSubtype: false, hasOnlySubclasses: true);
324 check("H4", hasStrictSubtype: false, hasOnlySubclasses: true); 324 check("H4", hasStrictSubtype: false, hasOnlySubclasses: true);
325 } 325 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/union_type_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698