Chromium Code Reviews| Index: tests/compiler/dart2js/equivalence/check_functions.dart |
| diff --git a/tests/compiler/dart2js/equivalence/check_functions.dart b/tests/compiler/dart2js/equivalence/check_functions.dart |
| index 4f82bde0ff62a82929215ac5616a924934a7047a..7ae88cc611d336b23e4555e5fc38f501e5c857ee 100644 |
| --- a/tests/compiler/dart2js/equivalence/check_functions.dart |
| +++ b/tests/compiler/dart2js/equivalence/check_functions.dart |
| @@ -429,6 +429,11 @@ void checkBackendUsage( |
| checkElementEnvironment( |
| ElementEnvironment env1, ElementEnvironment env2, TestStrategy strategy) { |
| + strategy.testElements( |
| + env1, env2, 'mainLibrary', env1.mainLibrary, env2.mainLibrary); |
| + strategy.testElements( |
| + env1, env2, 'mainFunction', env1.mainFunction, env2.mainFunction); |
| + |
| checkMembers(MemberEntity member1, MemberEntity member2) { |
| Expect.equals(env1.isDeferredLoadLibraryGetter(member1), |
| env2.isDeferredLoadLibraryGetter(member2)); |
| @@ -519,11 +524,64 @@ checkElementEnvironment( |
| return result; |
| }, strategy.elementEquivalence); |
| + List<ConstructorEntity> constructors2 = <ConstructorEntity>[]; |
| + env1.forEachConstructor(cls1, (ConstructorEntity constructor1) { |
| + Expect.identical( |
| + constructor1, env1.lookupConstructor(cls1, constructor1.name)); |
| + |
| + String constructorName = constructor1.name; |
| + ConstructorEntity constructor2 = |
| + env2.lookupConstructor(cls2, constructorName); |
| + Expect.isNotNull( |
| + constructor2, "Missing constructor for $constructor1 in $cls2 "); |
| + Expect.identical( |
| + constructor2, env2.lookupConstructor(cls2, constructor2.name)); |
| + |
| + constructors2.add(constructor2); |
| + |
| + check(cls1, cls2, 'constructor:${constructorName}', constructor1, |
| + constructor2, strategy.elementEquivalence); |
| + |
| + checkMembers(constructor1, constructor2); |
| + }); |
| + env2.forEachConstructor(cls2, (ConstructorEntity constructor2) { |
| + Expect.isTrue(constructors2.contains(constructor2), |
|
Siggi Cherem (dart-lang)
2017/05/12 16:48:38
maybe use a Set for constructors2 instead?
Johnni Winther
2017/05/15 07:55:51
Done.
|
| + "Extra constructor $constructor2 in $cls2"); |
| + }); |
| + |
| classes2.add(cls2); |
| }); |
| env2.forEachClass(lib2, (ClassEntity cls2) { |
| Expect.isTrue(classes2.contains(cls2), "Extra class $cls2 in $lib2"); |
| }); |
| + |
| + List<MemberEntity> members2 = <MemberEntity>[]; |
|
Siggi Cherem (dart-lang)
2017/05/12 16:48:38
likewise, use a Set for fast lookup in `contains`?
Johnni Winther
2017/05/15 07:55:51
Done.
|
| + env1.forEachLibraryMember(lib1, (MemberEntity member1) { |
| + Expect.identical( |
| + member1, |
| + env1.lookupLibraryMember(lib1, member1.name, |
| + setter: member1.isSetter)); |
| + |
| + String memberName = member1.name; |
| + MemberEntity member2 = |
| + env2.lookupLibraryMember(lib2, memberName, setter: member1.isSetter); |
| + Expect.isNotNull(member2, 'Missing member for $member1 in $lib2'); |
| + Expect.identical( |
| + member2, |
| + env2.lookupLibraryMember(lib2, member2.name, |
| + setter: member2.isSetter)); |
| + |
| + members2.add(member2); |
| + |
| + check(lib1, lib2, 'member:${memberName}', member1, member2, |
| + strategy.elementEquivalence); |
| + |
| + checkMembers(member1, member2); |
| + }); |
| + env2.forEachLibraryMember(lib2, (MemberEntity member2) { |
| + Expect.isTrue( |
| + members2.contains(member2), "Extra member $member2 in $lib2"); |
| + }); |
| }); |
| // TODO(johnniwinther): Test the remaining properties of [ElementEnvironment]. |
| } |