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

Unified Diff: tests/compiler/dart2js/serialization/model_test_helper.dart

Issue 2829223003: Check equivalence of closed world based on kernel elements. (Closed)
Patch Set: Updated cf. comments. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/compiler/dart2js/kernel/closed_world_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js/serialization/model_test_helper.dart
diff --git a/tests/compiler/dart2js/serialization/model_test_helper.dart b/tests/compiler/dart2js/serialization/model_test_helper.dart
index 695b8083747a7f972f4384ffa4c1faee6036f7ac..e6cdc5a3bb9b8997648e5309c1d7f39f7c258bc1 100644
--- a/tests/compiler/dart2js/serialization/model_test_helper.dart
+++ b/tests/compiler/dart2js/serialization/model_test_helper.dart
@@ -107,6 +107,7 @@ Future checkModels(Uri entryPoint,
checkClosedWorlds(
compilerNormal.resolutionWorldBuilder.closedWorldForTesting,
compilerDeserialized.resolutionWorldBuilder.closedWorldForTesting,
+ areElementsEquivalent,
verbose: verbose);
checkBackendInfo(compilerNormal, compilerDeserialized, verbose: verbose);
});
@@ -171,7 +172,12 @@ void checkResolutionEnqueuers(
}
void checkClosedWorlds(ClosedWorld closedWorld1, ClosedWorld closedWorld2,
+ bool elementEquivalence(Entity a, Entity b),
{bool verbose: false}) {
+ if (verbose) {
+ print(closedWorld1.dump());
+ print(closedWorld2.dump());
+ }
checkClassHierarchyNodes(
closedWorld1,
closedWorld2,
@@ -179,6 +185,7 @@ void checkClosedWorlds(ClosedWorld closedWorld1, ClosedWorld closedWorld2,
.getClassHierarchyNode(closedWorld1.commonElements.objectClass),
closedWorld2
.getClassHierarchyNode(closedWorld2.commonElements.objectClass),
+ elementEquivalence,
verbose: verbose);
}
@@ -304,11 +311,15 @@ void checkElements(
checkElementOutputUnits(compiler1, compiler2, element1, element2);
}
-void checkMixinUses(ClosedWorld closedWorld1, ClosedWorld closedWorld2,
- ClassElement class1, ClassElement class2,
+void checkMixinUses(
+ ClosedWorld closedWorld1,
+ ClosedWorld closedWorld2,
+ ClassEntity class1,
+ ClassEntity class2,
+ bool elementEquivalence(Entity a, Entity b),
{bool verbose: false}) {
checkSets(closedWorld1.mixinUsesOf(class1), closedWorld2.mixinUsesOf(class2),
- "Mixin uses of $class1 vs $class2", areElementsEquivalent,
+ "Mixin uses of $class1 vs $class2", elementEquivalence,
verbose: verbose);
}
@@ -317,13 +328,14 @@ void checkClassHierarchyNodes(
ClosedWorld closedWorld2,
ClassHierarchyNode node1,
ClassHierarchyNode node2,
+ bool elementEquivalence(Entity a, Entity b),
{bool verbose: false}) {
if (verbose) {
print('Checking $node1 vs $node2');
}
- ClassElement cls1 = node1.cls;
- ClassElement cls2 = node2.cls;
- Expect.isTrue(areElementsEquivalent(cls1, cls2),
+ ClassEntity cls1 = node1.cls;
+ ClassEntity cls2 = node2.cls;
+ Expect.isTrue(elementEquivalence(cls1, cls2),
"Element identity mismatch for ${cls1} vs ${cls2}.");
Expect.equals(
node1.isDirectlyInstantiated,
@@ -340,10 +352,11 @@ void checkClassHierarchyNodes(
for (ClassHierarchyNode child in node1.directSubclasses) {
bool found = false;
for (ClassHierarchyNode other in node2.directSubclasses) {
- ClassElement child1 = child.cls;
- ClassElement child2 = other.cls;
- if (areElementsEquivalent(child1, child2)) {
- checkClassHierarchyNodes(closedWorld1, closedWorld2, child, other,
+ ClassEntity child1 = child.cls;
+ ClassEntity child2 = other.cls;
+ if (elementEquivalence(child1, child2)) {
+ checkClassHierarchyNodes(
+ closedWorld1, closedWorld2, child, other, elementEquivalence,
verbose: verbose);
found = true;
break;
@@ -364,7 +377,8 @@ void checkClassHierarchyNodes(
'${node2.directSubclasses}');
}
}
- checkMixinUses(closedWorld1, closedWorld2, node1.cls, node2.cls,
+ checkMixinUses(
+ closedWorld1, closedWorld2, node1.cls, node2.cls, elementEquivalence,
verbose: verbose);
}
« no previous file with comments | « tests/compiler/dart2js/kernel/closed_world_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698