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

Unified Diff: tests/compiler/dart2js/kernel/closed_world2_test.dart

Issue 2874973003: Add more equivalence tests for ElementEnvironment (Closed)
Patch Set: Created 3 years, 7 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
Index: tests/compiler/dart2js/kernel/closed_world2_test.dart
diff --git a/tests/compiler/dart2js/kernel/closed_world2_test.dart b/tests/compiler/dart2js/kernel/closed_world2_test.dart
index 998f01c43668d9cab99601afdde7a5d744249c4a..39b26e302486890d23ed46541cf41c382034b622 100644
--- a/tests/compiler/dart2js/kernel/closed_world2_test.dart
+++ b/tests/compiler/dart2js/kernel/closed_world2_test.dart
@@ -271,32 +271,95 @@ void checkBackendUsage(BackendUsageImpl usage1, BackendUsageImpl usage2,
checkElementEnvironment(ElementEnvironment env1, ElementEnvironment env2,
KernelEquivalence equivalence) {
+ checkMembers(MemberEntity member1, MemberEntity member2) {
+ Expect.equals(env1.isDeferredLoadLibraryGetter(member1),
+ env2.isDeferredLoadLibraryGetter(member2));
+
+ checkListEquivalence(
+ member1,
+ member2,
+ 'metadata',
+ env1.getMemberMetadata(member1),
+ env2.getMemberMetadata(member2),
+ equivalence.defaultStrategy.testConstantValues);
+ }
+
checkSetEquivalence(env1, env2, 'libraries', env1.libraries, env2.libraries,
equivalence.entityEquivalence,
onSameElement: (LibraryEntity lib1, LibraryEntity lib2) {
+ Expect.identical(lib1, env1.lookupLibrary(lib1.canonicalUri));
+ Expect.identical(lib2, env2.lookupLibrary(lib2.canonicalUri));
+
List<ClassEntity> classes2 = <ClassEntity>[];
env1.forEachClass(lib1, (ClassEntity cls1) {
+ Expect.identical(cls1, env1.lookupClass(lib1, cls1.name));
+
String className = cls1.name;
ClassEntity cls2 = env2.lookupClass(lib2, className);
Expect.isNotNull(cls2, 'Missing class $className in $lib2');
+ Expect.identical(cls2, env2.lookupClass(lib2, cls2.name));
+
check(lib1, lib2, 'class:${className}', cls1, cls2,
equivalence.entityEquivalence);
- check(cls1, cls2, 'superclass', env1.getSuperClass(cls1),
- env2.getSuperClass(cls2), equivalence.entityEquivalence);
+ Expect.equals(env1.isGenericClass(cls1), env2.isGenericClass(cls2));
+
+ check(
+ cls1,
+ cls2,
+ 'superclass',
+ env1.getSuperClass(cls1, skipUnnamedMixinApplications: false),
+ env2.getSuperClass(cls2, skipUnnamedMixinApplications: false),
+ equivalence.entityEquivalence);
+ check(
+ cls1,
+ cls2,
+ 'superclass',
+ env1.getSuperClass(cls1, skipUnnamedMixinApplications: true),
+ env2.getSuperClass(cls2, skipUnnamedMixinApplications: true),
+ equivalence.entityEquivalence);
+
+ List<InterfaceType> supertypes1 = <InterfaceType>[];
+ env1.forEachSupertype(cls1, supertypes1.add);
+ List<InterfaceType> supertypes2 = <InterfaceType>[];
+ env2.forEachSupertype(cls2, supertypes1.add);
+ equivalence.defaultStrategy
+ .testTypeLists(cls1, cls2, 'supertypes', supertypes1, supertypes2);
+
+ List<ClassEntity> mixins1 = <ClassEntity>[];
+ env1.forEachMixin(cls1, mixins1.add);
+ List<ClassEntity> mixins2 = <ClassEntity>[];
+ env2.forEachMixin(cls2, mixins2.add);
+ equivalence.defaultStrategy.testLists(cls1, cls2, 'mixins', mixins1,
+ mixins2, equivalence.entityEquivalence);
Map<MemberEntity, ClassEntity> members1 = <MemberEntity, ClassEntity>{};
Map<MemberEntity, ClassEntity> members2 = <MemberEntity, ClassEntity>{};
env1.forEachClassMember(cls1,
(ClassEntity declarer1, MemberEntity member1) {
+ if (cls1 == declarer1) {
+ Expect.identical(
+ member1,
+ env1.lookupClassMember(cls1, member1.name,
+ setter: member1.isSetter));
+ }
members1[member1] = declarer1;
});
env2.forEachClassMember(cls2,
(ClassEntity declarer2, MemberEntity member2) {
+ if (cls2 == declarer2) {
+ Expect.identical(
+ member2,
+ env2.lookupClassMember(cls2, member2.name,
+ setter: member2.isSetter));
+ }
members2[member2] = declarer2;
});
- checkMapEquivalence(cls1, cls2, 'members', members1, members2,
- equivalence.entityEquivalence, equivalence.entityEquivalence);
+ checkMapEquivalence(cls1, cls2, 'members', members1, members2, (a, b) {
+ bool result = equivalence.entityEquivalence(a, b);
+ if (result) checkMembers(a, b);
+ return result;
+ }, equivalence.entityEquivalence);
classes2.add(cls2);
});
@@ -304,6 +367,5 @@ checkElementEnvironment(ElementEnvironment env1, ElementEnvironment env2,
Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2");
});
});
-
// TODO(johnniwinther): Test the remaining properties of [ElementEnvironment].
}

Powered by Google App Engine
This is Rietveld 408576698