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

Side by Side Diff: tests/compiler/dart2js/serialization/model_test_helper.dart

Issue 2814663002: Use ClassEntity in ClassHierarchyNode (Closed)
Patch Set: Created 3 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
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 dart2js.serialization_model_test; 5 library dart2js.serialization_model_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:expect/expect.dart'; 10 import 'package:expect/expect.dart';
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 311
312 void checkClassHierarchyNodes( 312 void checkClassHierarchyNodes(
313 ClosedWorld closedWorld1, 313 ClosedWorld closedWorld1,
314 ClosedWorld closedWorld2, 314 ClosedWorld closedWorld2,
315 ClassHierarchyNode node1, 315 ClassHierarchyNode node1,
316 ClassHierarchyNode node2, 316 ClassHierarchyNode node2,
317 {bool verbose: false}) { 317 {bool verbose: false}) {
318 if (verbose) { 318 if (verbose) {
319 print('Checking $node1 vs $node2'); 319 print('Checking $node1 vs $node2');
320 } 320 }
321 Expect.isTrue(areElementsEquivalent(node1.cls, node2.cls), 321 ClassElement cls1 = node1.cls;
322 "Element identity mismatch for ${node1.cls} vs ${node2.cls}."); 322 ClassElement cls2 = node2.cls;
323 Expect.isTrue(areElementsEquivalent(cls1, cls2),
324 "Element identity mismatch for ${cls1} vs ${cls2}.");
323 Expect.equals( 325 Expect.equals(
324 node1.isDirectlyInstantiated, 326 node1.isDirectlyInstantiated,
325 node2.isDirectlyInstantiated, 327 node2.isDirectlyInstantiated,
326 "Value mismatch for 'isDirectlyInstantiated' " 328 "Value mismatch for 'isDirectlyInstantiated' "
327 "for ${node1.cls} vs ${node2.cls}."); 329 "for ${cls1} vs ${cls2}.");
328 Expect.equals( 330 Expect.equals(
329 node1.isIndirectlyInstantiated, 331 node1.isIndirectlyInstantiated,
330 node2.isIndirectlyInstantiated, 332 node2.isIndirectlyInstantiated,
331 "Value mismatch for 'isIndirectlyInstantiated' " 333 "Value mismatch for 'isIndirectlyInstantiated' "
332 "for ${node1.cls} vs ${node2.cls}."); 334 "for ${node1.cls} vs ${node2.cls}.");
333 // TODO(johnniwinther): Enforce a canonical and stable order on direct 335 // TODO(johnniwinther): Enforce a canonical and stable order on direct
334 // subclasses. 336 // subclasses.
335 for (ClassHierarchyNode child in node1.directSubclasses) { 337 for (ClassHierarchyNode child in node1.directSubclasses) {
336 bool found = false; 338 bool found = false;
337 for (ClassHierarchyNode other in node2.directSubclasses) { 339 for (ClassHierarchyNode other in node2.directSubclasses) {
338 if (areElementsEquivalent(child.cls, other.cls)) { 340 ClassElement child1 = child.cls;
341 ClassElement child2 = other.cls;
342 if (areElementsEquivalent(child1, child2)) {
339 checkClassHierarchyNodes(closedWorld1, closedWorld2, child, other, 343 checkClassHierarchyNodes(closedWorld1, closedWorld2, child, other,
340 verbose: verbose); 344 verbose: verbose);
341 found = true; 345 found = true;
342 break; 346 break;
343 } 347 }
344 } 348 }
345 if (!found) { 349 if (!found) {
346 if (child.isInstantiated) { 350 if (child.isInstantiated) {
347 print('Missing subclass ${child.cls} of ${node1.cls} ' 351 print('Missing subclass ${child.cls} of ${node1.cls} '
348 'in ${node2.directSubclasses}'); 352 'in ${node2.directSubclasses}');
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 } 454 }
451 455
452 bool areInstancesEquivalent(Instance instance1, Instance instance2, 456 bool areInstancesEquivalent(Instance instance1, Instance instance2,
453 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) { 457 bool typeEquivalence(ResolutionDartType a, ResolutionDartType b)) {
454 ResolutionInterfaceType type1 = instance1.type; 458 ResolutionInterfaceType type1 = instance1.type;
455 ResolutionInterfaceType type2 = instance2.type; 459 ResolutionInterfaceType type2 = instance2.type;
456 return typeEquivalence(type1, type2) && 460 return typeEquivalence(type1, type2) &&
457 instance1.kind == instance2.kind && 461 instance1.kind == instance2.kind &&
458 instance1.isRedirection == instance2.isRedirection; 462 instance1.isRedirection == instance2.isRedirection;
459 } 463 }
OLDNEW
« pkg/compiler/lib/src/universe/class_set.dart ('K') | « pkg/compiler/lib/src/world.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698