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 ad8f1f1d96e42349cf731c0678a9010c5b9762a0..1b853e2d5096fdc9be0f09ce6cc5733eca327030 100644 |
| --- a/tests/compiler/dart2js/equivalence/check_functions.dart |
| +++ b/tests/compiler/dart2js/equivalence/check_functions.dart |
| @@ -18,6 +18,8 @@ import 'package:compiler/src/js_backend/backend_usage.dart'; |
| import 'package:compiler/src/js_backend/enqueuer.dart'; |
| import 'package:compiler/src/js_backend/native_data.dart'; |
| import 'package:compiler/src/js_backend/interceptor_data.dart'; |
| +import 'package:compiler/src/js_emitter/code_emitter_task.dart'; |
| +import 'package:compiler/src/js_emitter/model.dart'; |
| import 'package:compiler/src/serialization/equivalence.dart'; |
| import 'package:compiler/src/universe/class_set.dart'; |
| import 'package:compiler/src/universe/world_builder.dart'; |
| @@ -633,7 +635,7 @@ void checkResolutionEnqueuers( |
| ResolutionEnqueuer enqueuer2, |
| {bool elementEquivalence(Entity a, Entity b): _areEntitiesEquivalent, |
| bool typeEquivalence(DartType a, DartType b): areTypesEquivalent, |
| - bool elementFilter(Element element), |
| + bool elementFilter(Entity element), |
| bool verbose: false, |
| bool skipClassUsageTesting: false}) { |
| elementFilter ??= (_) => true; |
| @@ -796,3 +798,66 @@ void checkCodegenEnqueuers(CodegenEnqueuer enqueuer1, CodegenEnqueuer enqueuer2, |
| areAbstractUsagesEquivalent, |
| verbose: verbose); |
| } |
| + |
| +// TODO(johnniwinther): Check all emitter properties. |
| +void checkEmitters(CodeEmitterTask emitter1, CodeEmitterTask emitter2, |
| + {bool elementEquivalence(Entity a, Entity b): _areEntitiesEquivalent, |
| + bool typeEquivalence(DartType a, DartType b): areTypesEquivalent, |
| + bool elementFilter(Element element), |
| + bool verbose: false}) { |
| + checkPrograms( |
| + emitter1.emitter.programForTesting, emitter2.emitter.programForTesting); |
| + |
| + checkSets( |
| + emitter1.typeTestRegistry.rtiNeededClasses, |
| + emitter2.typeTestRegistry.rtiNeededClasses, |
| + "TypeTestRegistry rti needed classes mismatch", |
| + elementEquivalence, |
| + verbose: verbose); |
| + |
| + checkSets( |
| + emitter1.typeTestRegistry.checkedFunctionTypes, |
| + emitter2.typeTestRegistry.checkedFunctionTypes, |
| + "TypeTestRegistry checked function types mismatch", |
| + typeEquivalence, |
| + verbose: verbose); |
| + |
| + checkSets( |
| + emitter1.typeTestRegistry.checkedClasses, |
| + emitter2.typeTestRegistry.checkedClasses, |
| + "TypeTestRegistry checked classes mismatch", |
| + elementEquivalence, |
| + verbose: verbose); |
| +} |
| + |
| +// TODO(johnniwinther): Check all program properties. |
| +void checkPrograms(Program program1, Program program2) { |
| + checkLists(program1.fragments, program2.fragments, 'fragments', |
| + (a, b) => a.outputFileName == b.outputFileName, |
| + onSameElement: checkFragments); |
| +} |
| + |
| +// TODO(johnniwinther): Check all fragment properties. |
| +void checkFragments(Fragment fragment1, Fragment fragment2) { |
| + checkLists(fragment1.libraries, fragment2.libraries, 'libraries', |
| + (a, b) => a.element.canonicalUri == b.element.canonicalUri, |
| + onSameElement: checkLibraries); |
| +} |
| + |
| +// TODO(johnniwinther): Check all library properties. |
| +void checkLibraries(Library library1, Library library2) { |
|
Siggi Cherem (dart-lang)
2017/06/23 19:49:28
suggestion
- possibly rename to checkEmittedLibra
Johnni Winther
2017/06/26 09:17:44
Renamed functions to checkEmitter*
|
| + checkLists(library1.classes, library2.classes, 'classes', |
| + (a, b) => a.element.name == b.element.name, |
| + onSameElement: checkClasses); |
| +// TODO(johnniwinther): Check static method properties. |
| + checkLists(library1.statics, library2.statics, 'statics', |
| + (a, b) => a.name.key == b.name.key); |
| +} |
| + |
| +// TODO(johnniwinther): Check all class properties. |
| +void checkClasses(Class class1, Class class2) { |
| + checkLists(class1.methods, class2.methods, 'methods', |
| + (a, b) => a.name.key == b.name.key); |
| + checkLists(class1.isChecks, class2.isChecks, 'isChecks', |
| + (a, b) => a.name.key == b.name.key); |
| +} |