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

Unified Diff: tests/compiler/dart2js/equivalence/check_functions.dart

Issue 2954493002: Less inequivalence on Hello World! (Closed)
Patch Set: Updated cf. comments Created 3 years, 6 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 | « pkg/compiler/lib/src/world.dart ('k') | tests/compiler/dart2js/equivalence/check_helpers.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..626aee7e140e589d4e6d704e2a61d5cdeea87f16 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 checkEmitterPrograms(Program program1, Program program2) {
+ checkLists(program1.fragments, program2.fragments, 'fragments',
+ (a, b) => a.outputFileName == b.outputFileName,
+ onSameElement: checkEmitterFragments);
+}
+
+// TODO(johnniwinther): Check all fragment properties.
+void checkEmitterFragments(Fragment fragment1, Fragment fragment2) {
+ checkLists(fragment1.libraries, fragment2.libraries, 'libraries',
+ (a, b) => a.element.canonicalUri == b.element.canonicalUri,
+ onSameElement: checkEmitterLibraries);
+}
+
+// TODO(johnniwinther): Check all library properties.
+void checkEmitterLibraries(Library library1, Library library2) {
+ checkLists(library1.classes, library2.classes, 'classes',
+ (a, b) => a.element.name == b.element.name,
+ onSameElement: checkEmitterClasses);
+// 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 checkEmitterClasses(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);
+}
« no previous file with comments | « pkg/compiler/lib/src/world.dart ('k') | tests/compiler/dart2js/equivalence/check_helpers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698