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

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

Issue 2577423002: Further reduce use of Compiler.closedWorld. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« 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/names.dart'; 10 import 'package:compiler/src/common/names.dart';
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 new C(); 42 new C();
43 new D(); 43 new D();
44 new E(); 44 new E();
45 new F(); 45 new F();
46 new G(); 46 new G();
47 html.window; 47 html.window;
48 new html.Worker(''); 48 new html.Worker('');
49 } 49 }
50 """, 50 """,
51 useMockCompiler: false); 51 useMockCompiler: false);
52 ClosedWorld closedWorld = env.compiler.closedWorld; 52 ClosedWorld closedWorld = env.closedWorld;
53 53
54 ClassElement Object_ = env.getElement("Object"); 54 ClassElement Object_ = env.getElement("Object");
55 ClassElement A = env.getElement("A"); 55 ClassElement A = env.getElement("A");
56 ClassElement B = env.getElement("B"); 56 ClassElement B = env.getElement("B");
57 ClassElement C = env.getElement("C"); 57 ClassElement C = env.getElement("C");
58 ClassElement D = env.getElement("D"); 58 ClassElement D = env.getElement("D");
59 ClassElement E = env.getElement("E"); 59 ClassElement E = env.getElement("E");
60 ClassElement F = env.getElement("F"); 60 ClassElement F = env.getElement("F");
61 ClassElement G = env.getElement("G"); 61 ClassElement G = env.getElement("G");
62 ClassElement X = env.getElement("X"); 62 ClassElement X = env.getElement("X");
63 63
64 void checkClasses(String property, ClassElement cls, 64 void checkClasses(String property, ClassElement cls,
65 Iterable<ClassElement> foundClasses, List<ClassElement> expectedClasses, 65 Iterable<ClassElement> foundClasses, List<ClassElement> expectedClasses,
66 {bool exact: true}) { 66 {bool exact: true}) {
67 for (ClassElement expectedClass in expectedClasses) { 67 for (ClassElement expectedClass in expectedClasses) {
68 Expect.isTrue( 68 Expect.isTrue(
69 foundClasses.contains(expectedClass), 69 foundClasses.contains(expectedClass),
70 "Expect $expectedClass in '$property' on $cls. " 70 "Expect $expectedClass in '$property' on $cls. "
71 "Found:\n ${foundClasses.join('\n ')}\n" 71 "Found:\n ${foundClasses.join('\n ')}\n"
72 "${env.compiler.closedWorld.dump(cls)}"); 72 "${closedWorld.dump(cls)}");
73 } 73 }
74 if (exact) { 74 if (exact) {
75 Expect.equals( 75 Expect.equals(
76 expectedClasses.length, 76 expectedClasses.length,
77 foundClasses.length, 77 foundClasses.length,
78 "Unexpected classes " 78 "Unexpected classes "
79 "${foundClasses.where((c) => !expectedClasses.contains(c))} " 79 "${foundClasses.where((c) => !expectedClasses.contains(c))} "
80 "in '$property' on $cls.\n" 80 "in '$property' on $cls.\n"
81 "${env.compiler.closedWorld.dump(cls)}"); 81 "${closedWorld.dump(cls)}");
82 } 82 }
83 } 83 }
84 84
85 void check(String property, ClassElement cls, 85 void check(String property, ClassElement cls,
86 Iterable<ClassElement> foundClasses, List<ClassElement> expectedClasses, 86 Iterable<ClassElement> foundClasses, List<ClassElement> expectedClasses,
87 {bool exact: true, 87 {bool exact: true,
88 void forEach(ClassElement cls, ForEachFunction f), 88 void forEach(ClassElement cls, ForEachFunction f),
89 int getCount(ClassElement cls)}) { 89 int getCount(ClassElement cls)}) {
90 checkClasses(property, cls, foundClasses, expectedClasses, exact: exact); 90 checkClasses(property, cls, foundClasses, expectedClasses, exact: exact);
91 91
92 if (forEach != null) { 92 if (forEach != null) {
93 List<ClassElement> visited = <ClassElement>[]; 93 List<ClassElement> visited = <ClassElement>[];
94 forEach(cls, (ClassElement c) { 94 forEach(cls, (ClassElement c) {
95 visited.add(c); 95 visited.add(c);
96 }); 96 });
97 checkClasses('forEach($property)', cls, visited, expectedClasses, 97 checkClasses('forEach($property)', cls, visited, expectedClasses,
98 exact: exact); 98 exact: exact);
99 } 99 }
100 100
101 if (getCount != null && exact) { 101 if (getCount != null && exact) {
102 int count = getCount(cls); 102 int count = getCount(cls);
103 Expect.equals( 103 Expect.equals(
104 expectedClasses.length, 104 expectedClasses.length,
105 count, 105 count,
106 "Unexpected class count in '$property' on $cls.\n" 106 "Unexpected class count in '$property' on $cls.\n"
107 "${env.compiler.closedWorld.dump(cls)}"); 107 "${closedWorld.dump(cls)}");
108 } 108 }
109 } 109 }
110 110
111 void testSubclasses(ClassElement cls, List<ClassElement> expectedClasses, 111 void testSubclasses(ClassElement cls, List<ClassElement> expectedClasses,
112 {bool exact: true}) { 112 {bool exact: true}) {
113 check('subclassesOf', cls, closedWorld.subclassesOf(cls), expectedClasses, 113 check('subclassesOf', cls, closedWorld.subclassesOf(cls), expectedClasses,
114 exact: exact); 114 exact: exact);
115 } 115 }
116 116
117 void testStrictSubclasses( 117 void testStrictSubclasses(
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 new D2(); 232 new D2();
233 new E3(); 233 new E3();
234 new F1(); 234 new F1();
235 new F2(); 235 new F2();
236 new G2(); 236 new G2();
237 new G3(); 237 new G3();
238 new H4(); 238 new H4();
239 } 239 }
240 """, 240 """,
241 useMockCompiler: false); 241 useMockCompiler: false);
242 ClosedWorld closedWorld = env.compiler.closedWorld; 242 ClosedWorld closedWorld = env.closedWorld;
243 243
244 check(String name, {bool hasStrictSubtype, bool hasOnlySubclasses}) { 244 check(String name, {bool hasStrictSubtype, bool hasOnlySubclasses}) {
245 ClassElement cls = env.getElement(name); 245 ClassElement cls = env.getElement(name);
246 Expect.equals(hasStrictSubtype, closedWorld.hasAnyStrictSubtype(cls), 246 Expect.equals(hasStrictSubtype, closedWorld.hasAnyStrictSubtype(cls),
247 "Unexpected hasAnyStrictSubtype property on $cls."); 247 "Unexpected hasAnyStrictSubtype property on $cls.");
248 Expect.equals(hasOnlySubclasses, closedWorld.hasOnlySubclasses(cls), 248 Expect.equals(hasOnlySubclasses, closedWorld.hasOnlySubclasses(cls),
249 "Unexpected hasOnlySubclasses property on $cls."); 249 "Unexpected hasOnlySubclasses property on $cls.");
250 } 250 }
251 251
252 check("Object", hasStrictSubtype: true, hasOnlySubclasses: true); 252 check("Object", hasStrictSubtype: true, hasOnlySubclasses: true);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 mainSource: r""" 309 mainSource: r"""
310 import 'dart:html' as html; 310 import 'dart:html' as html;
311 main() { 311 main() {
312 html.window; // Creates 'Window'. 312 html.window; // Creates 'Window'.
313 new html.Worker(''); // Creates 'Worker'. 313 new html.Worker(''); // Creates 'Worker'.
314 new html.CanvasElement() // Creates CanvasElement 314 new html.CanvasElement() // Creates CanvasElement
315 ..getContext(''); // Creates CanvasRenderingContext2D 315 ..getContext(''); // Creates CanvasRenderingContext2D
316 } 316 }
317 """, 317 """,
318 useMockCompiler: false); 318 useMockCompiler: false);
319 ClosedWorld closedWorld = env.compiler.closedWorld; 319 ClosedWorld closedWorld = env.closedWorld;
320 LibraryElement dart_html = 320 LibraryElement dart_html =
321 env.compiler.libraryLoader.lookupLibrary(Uris.dart_html); 321 env.compiler.libraryLoader.lookupLibrary(Uris.dart_html);
322 322
323 ClassElement clsEventTarget = dart_html.findExported('EventTarget'); 323 ClassElement clsEventTarget = dart_html.findExported('EventTarget');
324 ClassElement clsWindow = dart_html.findExported('Window'); 324 ClassElement clsWindow = dart_html.findExported('Window');
325 ClassElement clsAbstractWorker = dart_html.findExported('AbstractWorker'); 325 ClassElement clsAbstractWorker = dart_html.findExported('AbstractWorker');
326 ClassElement clsWorker = dart_html.findExported('Worker'); 326 ClassElement clsWorker = dart_html.findExported('Worker');
327 ClassElement clsCanvasElement = dart_html.findExported('CanvasElement'); 327 ClassElement clsCanvasElement = dart_html.findExported('CanvasElement');
328 ClassElement clsCanvasRenderingContext = 328 ClassElement clsCanvasRenderingContext =
329 dart_html.findExported('CanvasRenderingContext'); 329 dart_html.findExported('CanvasRenderingContext');
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 isDirectlyInstantiated: false, 503 isDirectlyInstantiated: false,
504 isAbstractlyInstantiated: true, 504 isAbstractlyInstantiated: true,
505 isIndirectlyInstantiated: false, 505 isIndirectlyInstantiated: false,
506 hasStrictSubtype: false, 506 hasStrictSubtype: false,
507 hasOnlySubclasses: true, 507 hasOnlySubclasses: true,
508 lubOfInstantiatedSubclasses: clsCanvasRenderingContext2D, 508 lubOfInstantiatedSubclasses: clsCanvasRenderingContext2D,
509 lubOfInstantiatedSubtypes: clsCanvasRenderingContext2D, 509 lubOfInstantiatedSubtypes: clsCanvasRenderingContext2D,
510 instantiatedSubclassCount: 0, 510 instantiatedSubclassCount: 0,
511 instantiatedSubtypeCount: 0); 511 instantiatedSubtypeCount: 0);
512 } 512 }
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