[dart2js] Extends the graph_isomorphizer with more coverage.
This cl adds support for generating classes, classes used only for
types, mixins, closures, and constants, to the graph_isomorphizer.
Change-Id: I04e5590a9ff903b0b32daf1f4607fb1b0920e0cc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/189841
Commit-Queue: Joshua Litt <joshualitt@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
diff --git a/pkg/compiler/pubspec.yaml b/pkg/compiler/pubspec.yaml
index 0f826c1..1073c93 100644
--- a/pkg/compiler/pubspec.yaml
+++ b/pkg/compiler/pubspec.yaml
@@ -31,6 +31,7 @@
dev_dependencies:
# Published packages - repo version ensured via dependency_overrides
args: any
+ dart_style: any
http: any
js:
path: ../js
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib1.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib1.dart
index 91a0c15..5f3aa4b 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib1.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib1.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_100_0.dart' deferred as b1;
entryLib1() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib2.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib2.dart
index 37a0a7c..20313e2 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib2.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib2.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_010_0.dart' deferred as b2;
entryLib2() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib3.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib3.dart
index 597682a..feeeeff 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib3.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib3.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_001_0.dart' deferred as b3;
entryLib3() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib4.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib4.dart
index 41a32f6..fbbe564 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib4.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib4.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_000_1.dart' deferred as b4;
entryLib4() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/libImport.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/libImport.dart
index 5731c13..4a2d52a 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/libImport.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/libImport.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
void v(Set<String> u, String name, int bit) {
@@ -11,6 +10,854 @@
Expect.equals(name[bit], '1');
}
+class C_100_0 {
+ const C_100_0();
+}
+
+class M_100_0 {}
+
+class T_100_0 {}
+
+const C_100_0 iC_100_0 = const C_100_0();
+closureC_100_0(foo) =>
+ (C_100_0 unused) => iC_100_0.toString() == foo.toString();
+
+class C_110_0 {
+ const C_110_0();
+}
+
+class M_110_0 {}
+
+class T_110_0 {}
+
+const C_110_0 iC_110_0 = const C_110_0();
+closureC_110_0(foo) =>
+ (C_110_0 unused) => iC_110_0.toString() == foo.toString();
+
+class C_101_1 {
+ const C_101_1();
+}
+
+class M_101_1 {}
+
+class T_101_1 {}
+
+const C_101_1 iC_101_1 = const C_101_1();
+closureC_101_1(foo) =>
+ (C_101_1 unused) => iC_101_1.toString() == foo.toString();
+
+class C_111_1 {
+ const C_111_1();
+}
+
+class M_111_1 {}
+
+class T_111_1 {}
+
+const C_111_1 iC_111_1 = const C_111_1();
+closureC_111_1(foo) =>
+ (C_111_1 unused) => iC_111_1.toString() == foo.toString();
+
+class C_010_0 {
+ const C_010_0();
+}
+
+class M_010_0 {}
+
+class T_010_0 {}
+
+const C_010_0 iC_010_0 = const C_010_0();
+closureC_010_0(foo) =>
+ (C_010_0 unused) => iC_010_0.toString() == foo.toString();
+
+class C_010_1 {
+ const C_010_1();
+}
+
+class M_010_1 {}
+
+class T_010_1 {}
+
+const C_010_1 iC_010_1 = const C_010_1();
+closureC_010_1(foo) =>
+ (C_010_1 unused) => iC_010_1.toString() == foo.toString();
+
+class C_011_1 {
+ const C_011_1();
+}
+
+class M_011_1 {}
+
+class T_011_1 {}
+
+const C_011_1 iC_011_1 = const C_011_1();
+closureC_011_1(foo) =>
+ (C_011_1 unused) => iC_011_1.toString() == foo.toString();
+
+class C_001_0 {
+ const C_001_0();
+}
+
+class M_001_0 {}
+
+class T_001_0 {}
+
+const C_001_0 iC_001_0 = const C_001_0();
+closureC_001_0(foo) =>
+ (C_001_0 unused) => iC_001_0.toString() == foo.toString();
+
+class C_000_1 {
+ const C_000_1();
+}
+
+class M_000_1 {}
+
+class T_000_1 {}
+
+const C_000_1 iC_000_1 = const C_000_1();
+closureC_000_1(foo) =>
+ (C_000_1 unused) => iC_000_1.toString() == foo.toString();
+
+class C_110_0_class_1 extends C_100_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_110_0, C_101_1, C_111_1, C_010_0, C_010_1, C_011_1 {
+ const C_110_0_class_1();
+}
+
+const C_110_0_class_1 iC_110_0_class_1 = const C_110_0_class_1();
+closureC_110_0_class_1(foo) =>
+ (C_110_0_class_1 unused) => iC_110_0_class_1.toString() == foo.toString();
+
+class T_110_0_type__1 extends T_100_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_110_0, T_101_1, T_111_1, T_010_0, T_010_1, T_011_1 {}
+
+class C_110_0_class_2 extends C_110_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_100_0, C_101_1, C_111_1, C_010_0, C_010_1, C_011_1 {
+ const C_110_0_class_2();
+}
+
+const C_110_0_class_2 iC_110_0_class_2 = const C_110_0_class_2();
+closureC_110_0_class_2(foo) =>
+ (C_110_0_class_2 unused) => iC_110_0_class_2.toString() == foo.toString();
+
+class T_110_0_type__2 extends T_110_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_100_0, T_101_1, T_111_1, T_010_0, T_010_1, T_011_1 {}
+
+class C_110_0_class_3 extends C_101_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_100_0, C_110_0, C_111_1, C_010_0, C_010_1, C_011_1 {
+ const C_110_0_class_3();
+}
+
+const C_110_0_class_3 iC_110_0_class_3 = const C_110_0_class_3();
+closureC_110_0_class_3(foo) =>
+ (C_110_0_class_3 unused) => iC_110_0_class_3.toString() == foo.toString();
+
+class T_110_0_type__3 extends T_101_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_100_0, T_110_0, T_111_1, T_010_0, T_010_1, T_011_1 {}
+
+class C_110_0_class_4 extends C_111_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_100_0, C_110_0, C_101_1, C_010_0, C_010_1, C_011_1 {
+ const C_110_0_class_4();
+}
+
+const C_110_0_class_4 iC_110_0_class_4 = const C_110_0_class_4();
+closureC_110_0_class_4(foo) =>
+ (C_110_0_class_4 unused) => iC_110_0_class_4.toString() == foo.toString();
+
+class T_110_0_type__4 extends T_111_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_100_0, T_110_0, T_101_1, T_010_0, T_010_1, T_011_1 {}
+
+class C_110_0_class_5 extends C_010_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_100_0, C_110_0, C_101_1, C_111_1, C_010_1, C_011_1 {
+ const C_110_0_class_5();
+}
+
+const C_110_0_class_5 iC_110_0_class_5 = const C_110_0_class_5();
+closureC_110_0_class_5(foo) =>
+ (C_110_0_class_5 unused) => iC_110_0_class_5.toString() == foo.toString();
+
+class T_110_0_type__5 extends T_010_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_100_0, T_110_0, T_101_1, T_111_1, T_010_1, T_011_1 {}
+
+class C_110_0_class_6 extends C_010_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_100_0, C_110_0, C_101_1, C_111_1, C_010_0, C_011_1 {
+ const C_110_0_class_6();
+}
+
+const C_110_0_class_6 iC_110_0_class_6 = const C_110_0_class_6();
+closureC_110_0_class_6(foo) =>
+ (C_110_0_class_6 unused) => iC_110_0_class_6.toString() == foo.toString();
+
+class T_110_0_type__6 extends T_010_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_100_0, T_110_0, T_101_1, T_111_1, T_010_0, T_011_1 {}
+
+class C_110_0_class_7 extends C_011_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements C_100_0, C_110_0, C_101_1, C_111_1, C_010_0, C_010_1 {
+ const C_110_0_class_7();
+}
+
+const C_110_0_class_7 iC_110_0_class_7 = const C_110_0_class_7();
+closureC_110_0_class_7(foo) =>
+ (C_110_0_class_7 unused) => iC_110_0_class_7.toString() == foo.toString();
+
+class T_110_0_type__7 extends T_011_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_010_0, M_010_1, M_011_1
+ implements T_100_0, T_110_0, T_101_1, T_111_1, T_010_0, T_010_1 {}
+
+class C_101_1_class_1 extends C_100_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements C_110_0, C_101_1, C_111_1, C_001_0, C_000_1 {
+ const C_101_1_class_1();
+}
+
+const C_101_1_class_1 iC_101_1_class_1 = const C_101_1_class_1();
+closureC_101_1_class_1(foo) =>
+ (C_101_1_class_1 unused) => iC_101_1_class_1.toString() == foo.toString();
+
+class T_101_1_type__1 extends T_100_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements T_110_0, T_101_1, T_111_1, T_001_0, T_000_1 {}
+
+class C_101_1_class_2 extends C_110_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements C_100_0, C_101_1, C_111_1, C_001_0, C_000_1 {
+ const C_101_1_class_2();
+}
+
+const C_101_1_class_2 iC_101_1_class_2 = const C_101_1_class_2();
+closureC_101_1_class_2(foo) =>
+ (C_101_1_class_2 unused) => iC_101_1_class_2.toString() == foo.toString();
+
+class T_101_1_type__2 extends T_110_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements T_100_0, T_101_1, T_111_1, T_001_0, T_000_1 {}
+
+class C_101_1_class_3 extends C_101_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements C_100_0, C_110_0, C_111_1, C_001_0, C_000_1 {
+ const C_101_1_class_3();
+}
+
+const C_101_1_class_3 iC_101_1_class_3 = const C_101_1_class_3();
+closureC_101_1_class_3(foo) =>
+ (C_101_1_class_3 unused) => iC_101_1_class_3.toString() == foo.toString();
+
+class T_101_1_type__3 extends T_101_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements T_100_0, T_110_0, T_111_1, T_001_0, T_000_1 {}
+
+class C_101_1_class_4 extends C_111_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements C_100_0, C_110_0, C_101_1, C_001_0, C_000_1 {
+ const C_101_1_class_4();
+}
+
+const C_101_1_class_4 iC_101_1_class_4 = const C_101_1_class_4();
+closureC_101_1_class_4(foo) =>
+ (C_101_1_class_4 unused) => iC_101_1_class_4.toString() == foo.toString();
+
+class T_101_1_type__4 extends T_111_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements T_100_0, T_110_0, T_101_1, T_001_0, T_000_1 {}
+
+class C_101_1_class_5 extends C_001_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements C_100_0, C_110_0, C_101_1, C_111_1, C_000_1 {
+ const C_101_1_class_5();
+}
+
+const C_101_1_class_5 iC_101_1_class_5 = const C_101_1_class_5();
+closureC_101_1_class_5(foo) =>
+ (C_101_1_class_5 unused) => iC_101_1_class_5.toString() == foo.toString();
+
+class T_101_1_type__5 extends T_001_0
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements T_100_0, T_110_0, T_101_1, T_111_1, T_000_1 {}
+
+class C_101_1_class_6 extends C_000_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements C_100_0, C_110_0, C_101_1, C_111_1, C_001_0 {
+ const C_101_1_class_6();
+}
+
+const C_101_1_class_6 iC_101_1_class_6 = const C_101_1_class_6();
+closureC_101_1_class_6(foo) =>
+ (C_101_1_class_6 unused) => iC_101_1_class_6.toString() == foo.toString();
+
+class T_101_1_type__6 extends T_000_1
+ with M_100_0, M_110_0, M_101_1, M_111_1, M_001_0, M_000_1
+ implements T_100_0, T_110_0, T_101_1, T_111_1, T_001_0 {}
+
+class C_111_1_class_1 extends C_100_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_110_0,
+ C_101_1,
+ C_111_1,
+ C_010_0,
+ C_010_1,
+ C_011_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_1();
+}
+
+const C_111_1_class_1 iC_111_1_class_1 = const C_111_1_class_1();
+closureC_111_1_class_1(foo) =>
+ (C_111_1_class_1 unused) => iC_111_1_class_1.toString() == foo.toString();
+
+class T_111_1_type__1 extends T_100_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_110_0,
+ T_101_1,
+ T_111_1,
+ T_010_0,
+ T_010_1,
+ T_011_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_2 extends C_110_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_101_1,
+ C_111_1,
+ C_010_0,
+ C_010_1,
+ C_011_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_2();
+}
+
+const C_111_1_class_2 iC_111_1_class_2 = const C_111_1_class_2();
+closureC_111_1_class_2(foo) =>
+ (C_111_1_class_2 unused) => iC_111_1_class_2.toString() == foo.toString();
+
+class T_111_1_type__2 extends T_110_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_101_1,
+ T_111_1,
+ T_010_0,
+ T_010_1,
+ T_011_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_3 extends C_101_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_111_1,
+ C_010_0,
+ C_010_1,
+ C_011_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_3();
+}
+
+const C_111_1_class_3 iC_111_1_class_3 = const C_111_1_class_3();
+closureC_111_1_class_3(foo) =>
+ (C_111_1_class_3 unused) => iC_111_1_class_3.toString() == foo.toString();
+
+class T_111_1_type__3 extends T_101_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_111_1,
+ T_010_0,
+ T_010_1,
+ T_011_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_4 extends C_111_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_101_1,
+ C_010_0,
+ C_010_1,
+ C_011_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_4();
+}
+
+const C_111_1_class_4 iC_111_1_class_4 = const C_111_1_class_4();
+closureC_111_1_class_4(foo) =>
+ (C_111_1_class_4 unused) => iC_111_1_class_4.toString() == foo.toString();
+
+class T_111_1_type__4 extends T_111_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_101_1,
+ T_010_0,
+ T_010_1,
+ T_011_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_5 extends C_010_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_101_1,
+ C_111_1,
+ C_010_1,
+ C_011_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_5();
+}
+
+const C_111_1_class_5 iC_111_1_class_5 = const C_111_1_class_5();
+closureC_111_1_class_5(foo) =>
+ (C_111_1_class_5 unused) => iC_111_1_class_5.toString() == foo.toString();
+
+class T_111_1_type__5 extends T_010_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_101_1,
+ T_111_1,
+ T_010_1,
+ T_011_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_6 extends C_010_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_101_1,
+ C_111_1,
+ C_010_0,
+ C_011_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_6();
+}
+
+const C_111_1_class_6 iC_111_1_class_6 = const C_111_1_class_6();
+closureC_111_1_class_6(foo) =>
+ (C_111_1_class_6 unused) => iC_111_1_class_6.toString() == foo.toString();
+
+class T_111_1_type__6 extends T_010_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_101_1,
+ T_111_1,
+ T_010_0,
+ T_011_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_7 extends C_011_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_101_1,
+ C_111_1,
+ C_010_0,
+ C_010_1,
+ C_001_0,
+ C_000_1 {
+ const C_111_1_class_7();
+}
+
+const C_111_1_class_7 iC_111_1_class_7 = const C_111_1_class_7();
+closureC_111_1_class_7(foo) =>
+ (C_111_1_class_7 unused) => iC_111_1_class_7.toString() == foo.toString();
+
+class T_111_1_type__7 extends T_011_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_101_1,
+ T_111_1,
+ T_010_0,
+ T_010_1,
+ T_001_0,
+ T_000_1 {}
+
+class C_111_1_class_8 extends C_001_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_101_1,
+ C_111_1,
+ C_010_0,
+ C_010_1,
+ C_011_1,
+ C_000_1 {
+ const C_111_1_class_8();
+}
+
+const C_111_1_class_8 iC_111_1_class_8 = const C_111_1_class_8();
+closureC_111_1_class_8(foo) =>
+ (C_111_1_class_8 unused) => iC_111_1_class_8.toString() == foo.toString();
+
+class T_111_1_type__8 extends T_001_0
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_101_1,
+ T_111_1,
+ T_010_0,
+ T_010_1,
+ T_011_1,
+ T_000_1 {}
+
+class C_111_1_class_9 extends C_000_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ C_100_0,
+ C_110_0,
+ C_101_1,
+ C_111_1,
+ C_010_0,
+ C_010_1,
+ C_011_1,
+ C_001_0 {
+ const C_111_1_class_9();
+}
+
+const C_111_1_class_9 iC_111_1_class_9 = const C_111_1_class_9();
+closureC_111_1_class_9(foo) =>
+ (C_111_1_class_9 unused) => iC_111_1_class_9.toString() == foo.toString();
+
+class T_111_1_type__9 extends T_000_1
+ with
+ M_100_0,
+ M_110_0,
+ M_101_1,
+ M_111_1,
+ M_010_0,
+ M_010_1,
+ M_011_1,
+ M_001_0,
+ M_000_1
+ implements
+ T_100_0,
+ T_110_0,
+ T_101_1,
+ T_111_1,
+ T_010_0,
+ T_010_1,
+ T_011_1,
+ T_001_0 {}
+
+class C_010_1_class_1 extends C_010_0
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements C_010_1, C_011_1, C_000_1 {
+ const C_010_1_class_1();
+}
+
+const C_010_1_class_1 iC_010_1_class_1 = const C_010_1_class_1();
+closureC_010_1_class_1(foo) =>
+ (C_010_1_class_1 unused) => iC_010_1_class_1.toString() == foo.toString();
+
+class T_010_1_type__1 extends T_010_0
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements T_010_1, T_011_1, T_000_1 {}
+
+class C_010_1_class_2 extends C_010_1
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements C_010_0, C_011_1, C_000_1 {
+ const C_010_1_class_2();
+}
+
+const C_010_1_class_2 iC_010_1_class_2 = const C_010_1_class_2();
+closureC_010_1_class_2(foo) =>
+ (C_010_1_class_2 unused) => iC_010_1_class_2.toString() == foo.toString();
+
+class T_010_1_type__2 extends T_010_1
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements T_010_0, T_011_1, T_000_1 {}
+
+class C_010_1_class_3 extends C_011_1
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements C_010_0, C_010_1, C_000_1 {
+ const C_010_1_class_3();
+}
+
+const C_010_1_class_3 iC_010_1_class_3 = const C_010_1_class_3();
+closureC_010_1_class_3(foo) =>
+ (C_010_1_class_3 unused) => iC_010_1_class_3.toString() == foo.toString();
+
+class T_010_1_type__3 extends T_011_1
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements T_010_0, T_010_1, T_000_1 {}
+
+class C_010_1_class_4 extends C_000_1
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements C_010_0, C_010_1, C_011_1 {
+ const C_010_1_class_4();
+}
+
+const C_010_1_class_4 iC_010_1_class_4 = const C_010_1_class_4();
+closureC_010_1_class_4(foo) =>
+ (C_010_1_class_4 unused) => iC_010_1_class_4.toString() == foo.toString();
+
+class T_010_1_type__4 extends T_000_1
+ with M_010_0, M_010_1, M_011_1, M_000_1
+ implements T_010_0, T_010_1, T_011_1 {}
+
+class C_011_1_class_1 extends C_010_0
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements C_010_1, C_011_1, C_001_0, C_000_1 {
+ const C_011_1_class_1();
+}
+
+const C_011_1_class_1 iC_011_1_class_1 = const C_011_1_class_1();
+closureC_011_1_class_1(foo) =>
+ (C_011_1_class_1 unused) => iC_011_1_class_1.toString() == foo.toString();
+
+class T_011_1_type__1 extends T_010_0
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements T_010_1, T_011_1, T_001_0, T_000_1 {}
+
+class C_011_1_class_2 extends C_010_1
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements C_010_0, C_011_1, C_001_0, C_000_1 {
+ const C_011_1_class_2();
+}
+
+const C_011_1_class_2 iC_011_1_class_2 = const C_011_1_class_2();
+closureC_011_1_class_2(foo) =>
+ (C_011_1_class_2 unused) => iC_011_1_class_2.toString() == foo.toString();
+
+class T_011_1_type__2 extends T_010_1
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements T_010_0, T_011_1, T_001_0, T_000_1 {}
+
+class C_011_1_class_3 extends C_011_1
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements C_010_0, C_010_1, C_001_0, C_000_1 {
+ const C_011_1_class_3();
+}
+
+const C_011_1_class_3 iC_011_1_class_3 = const C_011_1_class_3();
+closureC_011_1_class_3(foo) =>
+ (C_011_1_class_3 unused) => iC_011_1_class_3.toString() == foo.toString();
+
+class T_011_1_type__3 extends T_011_1
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements T_010_0, T_010_1, T_001_0, T_000_1 {}
+
+class C_011_1_class_4 extends C_001_0
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements C_010_0, C_010_1, C_011_1, C_000_1 {
+ const C_011_1_class_4();
+}
+
+const C_011_1_class_4 iC_011_1_class_4 = const C_011_1_class_4();
+closureC_011_1_class_4(foo) =>
+ (C_011_1_class_4 unused) => iC_011_1_class_4.toString() == foo.toString();
+
+class T_011_1_type__4 extends T_001_0
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements T_010_0, T_010_1, T_011_1, T_000_1 {}
+
+class C_011_1_class_5 extends C_000_1
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements C_010_0, C_010_1, C_011_1, C_001_0 {
+ const C_011_1_class_5();
+}
+
+const C_011_1_class_5 iC_011_1_class_5 = const C_011_1_class_5();
+closureC_011_1_class_5(foo) =>
+ (C_011_1_class_5 unused) => iC_011_1_class_5.toString() == foo.toString();
+
+class T_011_1_type__5 extends T_000_1
+ with M_010_0, M_010_1, M_011_1, M_001_0, M_000_1
+ implements T_010_0, T_010_1, T_011_1, T_001_0 {}
+
@pragma('dart2js:noInline')
f_100_0(Set<String> u, int b) => v(u, '1000', b);
@pragma('dart2js:noInline')
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_000_1.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_000_1.dart
index 37a1c2e..c67496e 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_000_1.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_000_1.dart
@@ -3,13 +3,220 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_000_1) {
+ return true;
+ }
+ if (t is T_101_1_type__1) {
+ return true;
+ }
+ if (t is T_101_1_type__2) {
+ return true;
+ }
+ if (t is T_101_1_type__3) {
+ return true;
+ }
+ if (t is T_101_1_type__4) {
+ return true;
+ }
+ if (t is T_101_1_type__5) {
+ return true;
+ }
+ if (t is T_101_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__1) {
+ return true;
+ }
+ if (t is T_111_1_type__2) {
+ return true;
+ }
+ if (t is T_111_1_type__3) {
+ return true;
+ }
+ if (t is T_111_1_type__4) {
+ return true;
+ }
+ if (t is T_111_1_type__5) {
+ return true;
+ }
+ if (t is T_111_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__7) {
+ return true;
+ }
+ if (t is T_111_1_type__8) {
+ return true;
+ }
+ if (t is T_111_1_type__9) {
+ return true;
+ }
+ if (t is T_010_1_type__1) {
+ return true;
+ }
+ if (t is T_010_1_type__2) {
+ return true;
+ }
+ if (t is T_010_1_type__3) {
+ return true;
+ }
+ if (t is T_010_1_type__4) {
+ return true;
+ }
+ if (t is T_011_1_type__1) {
+ return true;
+ }
+ if (t is T_011_1_type__2) {
+ return true;
+ }
+ if (t is T_011_1_type__3) {
+ return true;
+ }
+ if (t is T_011_1_type__4) {
+ return true;
+ }
+ if (t is T_011_1_type__5) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_000_1() {
+ // C_***_1;
+ Expect.isFalse(typeTest(C_000_1()));
+ Expect.isFalse(typeTest(C_101_1_class_1()));
+ Expect.isFalse(typeTest(C_101_1_class_2()));
+ Expect.isFalse(typeTest(C_101_1_class_3()));
+ Expect.isFalse(typeTest(C_101_1_class_4()));
+ Expect.isFalse(typeTest(C_101_1_class_5()));
+ Expect.isFalse(typeTest(C_101_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_1()));
+ Expect.isFalse(typeTest(C_111_1_class_2()));
+ Expect.isFalse(typeTest(C_111_1_class_3()));
+ Expect.isFalse(typeTest(C_111_1_class_4()));
+ Expect.isFalse(typeTest(C_111_1_class_5()));
+ Expect.isFalse(typeTest(C_111_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_7()));
+ Expect.isFalse(typeTest(C_111_1_class_8()));
+ Expect.isFalse(typeTest(C_111_1_class_9()));
+ Expect.isFalse(typeTest(C_010_1_class_1()));
+ Expect.isFalse(typeTest(C_010_1_class_2()));
+ Expect.isFalse(typeTest(C_010_1_class_3()));
+ Expect.isFalse(typeTest(C_010_1_class_4()));
+ Expect.isFalse(typeTest(C_011_1_class_1()));
+ Expect.isFalse(typeTest(C_011_1_class_2()));
+ Expect.isFalse(typeTest(C_011_1_class_3()));
+ Expect.isFalse(typeTest(C_011_1_class_4()));
+ Expect.isFalse(typeTest(C_011_1_class_5()));
+
+ Expect.isTrue(closureC_000_1(C_000_1())(C_000_1()));
+ Expect.isTrue(closureC_101_1_class_1(C_101_1_class_1())(C_101_1_class_1()));
+ Expect.isTrue(closureC_101_1_class_2(C_101_1_class_2())(C_101_1_class_2()));
+ Expect.isTrue(closureC_101_1_class_3(C_101_1_class_3())(C_101_1_class_3()));
+ Expect.isTrue(closureC_101_1_class_4(C_101_1_class_4())(C_101_1_class_4()));
+ Expect.isTrue(closureC_101_1_class_5(C_101_1_class_5())(C_101_1_class_5()));
+ Expect.isTrue(closureC_101_1_class_6(C_101_1_class_6())(C_101_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_1(C_111_1_class_1())(C_111_1_class_1()));
+ Expect.isTrue(closureC_111_1_class_2(C_111_1_class_2())(C_111_1_class_2()));
+ Expect.isTrue(closureC_111_1_class_3(C_111_1_class_3())(C_111_1_class_3()));
+ Expect.isTrue(closureC_111_1_class_4(C_111_1_class_4())(C_111_1_class_4()));
+ Expect.isTrue(closureC_111_1_class_5(C_111_1_class_5())(C_111_1_class_5()));
+ Expect.isTrue(closureC_111_1_class_6(C_111_1_class_6())(C_111_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_7(C_111_1_class_7())(C_111_1_class_7()));
+ Expect.isTrue(closureC_111_1_class_8(C_111_1_class_8())(C_111_1_class_8()));
+ Expect.isTrue(closureC_111_1_class_9(C_111_1_class_9())(C_111_1_class_9()));
+ Expect.isTrue(closureC_010_1_class_1(C_010_1_class_1())(C_010_1_class_1()));
+ Expect.isTrue(closureC_010_1_class_2(C_010_1_class_2())(C_010_1_class_2()));
+ Expect.isTrue(closureC_010_1_class_3(C_010_1_class_3())(C_010_1_class_3()));
+ Expect.isTrue(closureC_010_1_class_4(C_010_1_class_4())(C_010_1_class_4()));
+ Expect.isTrue(closureC_011_1_class_1(C_011_1_class_1())(C_011_1_class_1()));
+ Expect.isTrue(closureC_011_1_class_2(C_011_1_class_2())(C_011_1_class_2()));
+ Expect.isTrue(closureC_011_1_class_3(C_011_1_class_3())(C_011_1_class_3()));
+ Expect.isTrue(closureC_011_1_class_4(C_011_1_class_4())(C_011_1_class_4()));
+ Expect.isTrue(closureC_011_1_class_5(C_011_1_class_5())(C_011_1_class_5()));
+
+ Expect.equals(
+ closureC_000_1(C_000_1()).runtimeType.toString(), '(C_000_1) => bool');
+ Expect.equals(
+ closureC_101_1_class_1(C_101_1_class_1()).runtimeType.toString(),
+ '(C_101_1_class_1) => bool');
+ Expect.equals(
+ closureC_101_1_class_2(C_101_1_class_2()).runtimeType.toString(),
+ '(C_101_1_class_2) => bool');
+ Expect.equals(
+ closureC_101_1_class_3(C_101_1_class_3()).runtimeType.toString(),
+ '(C_101_1_class_3) => bool');
+ Expect.equals(
+ closureC_101_1_class_4(C_101_1_class_4()).runtimeType.toString(),
+ '(C_101_1_class_4) => bool');
+ Expect.equals(
+ closureC_101_1_class_5(C_101_1_class_5()).runtimeType.toString(),
+ '(C_101_1_class_5) => bool');
+ Expect.equals(
+ closureC_101_1_class_6(C_101_1_class_6()).runtimeType.toString(),
+ '(C_101_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_1(C_111_1_class_1()).runtimeType.toString(),
+ '(C_111_1_class_1) => bool');
+ Expect.equals(
+ closureC_111_1_class_2(C_111_1_class_2()).runtimeType.toString(),
+ '(C_111_1_class_2) => bool');
+ Expect.equals(
+ closureC_111_1_class_3(C_111_1_class_3()).runtimeType.toString(),
+ '(C_111_1_class_3) => bool');
+ Expect.equals(
+ closureC_111_1_class_4(C_111_1_class_4()).runtimeType.toString(),
+ '(C_111_1_class_4) => bool');
+ Expect.equals(
+ closureC_111_1_class_5(C_111_1_class_5()).runtimeType.toString(),
+ '(C_111_1_class_5) => bool');
+ Expect.equals(
+ closureC_111_1_class_6(C_111_1_class_6()).runtimeType.toString(),
+ '(C_111_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_7(C_111_1_class_7()).runtimeType.toString(),
+ '(C_111_1_class_7) => bool');
+ Expect.equals(
+ closureC_111_1_class_8(C_111_1_class_8()).runtimeType.toString(),
+ '(C_111_1_class_8) => bool');
+ Expect.equals(
+ closureC_111_1_class_9(C_111_1_class_9()).runtimeType.toString(),
+ '(C_111_1_class_9) => bool');
+ Expect.equals(
+ closureC_010_1_class_1(C_010_1_class_1()).runtimeType.toString(),
+ '(C_010_1_class_1) => bool');
+ Expect.equals(
+ closureC_010_1_class_2(C_010_1_class_2()).runtimeType.toString(),
+ '(C_010_1_class_2) => bool');
+ Expect.equals(
+ closureC_010_1_class_3(C_010_1_class_3()).runtimeType.toString(),
+ '(C_010_1_class_3) => bool');
+ Expect.equals(
+ closureC_010_1_class_4(C_010_1_class_4()).runtimeType.toString(),
+ '(C_010_1_class_4) => bool');
+ Expect.equals(
+ closureC_011_1_class_1(C_011_1_class_1()).runtimeType.toString(),
+ '(C_011_1_class_1) => bool');
+ Expect.equals(
+ closureC_011_1_class_2(C_011_1_class_2()).runtimeType.toString(),
+ '(C_011_1_class_2) => bool');
+ Expect.equals(
+ closureC_011_1_class_3(C_011_1_class_3()).runtimeType.toString(),
+ '(C_011_1_class_3) => bool');
+ Expect.equals(
+ closureC_011_1_class_4(C_011_1_class_4()).runtimeType.toString(),
+ '(C_011_1_class_4) => bool');
+ Expect.equals(
+ closureC_011_1_class_5(C_011_1_class_5()).runtimeType.toString(),
+ '(C_011_1_class_5) => bool');
+
Set<String> uniques = {};
// f_***_1;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_001_0.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_001_0.dart
index 3534e43..93b13b2 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_001_0.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_001_0.dart
@@ -3,13 +3,188 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_001_0) {
+ return true;
+ }
+ if (t is T_101_1_type__1) {
+ return true;
+ }
+ if (t is T_101_1_type__2) {
+ return true;
+ }
+ if (t is T_101_1_type__3) {
+ return true;
+ }
+ if (t is T_101_1_type__4) {
+ return true;
+ }
+ if (t is T_101_1_type__5) {
+ return true;
+ }
+ if (t is T_101_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__1) {
+ return true;
+ }
+ if (t is T_111_1_type__2) {
+ return true;
+ }
+ if (t is T_111_1_type__3) {
+ return true;
+ }
+ if (t is T_111_1_type__4) {
+ return true;
+ }
+ if (t is T_111_1_type__5) {
+ return true;
+ }
+ if (t is T_111_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__7) {
+ return true;
+ }
+ if (t is T_111_1_type__8) {
+ return true;
+ }
+ if (t is T_111_1_type__9) {
+ return true;
+ }
+ if (t is T_011_1_type__1) {
+ return true;
+ }
+ if (t is T_011_1_type__2) {
+ return true;
+ }
+ if (t is T_011_1_type__3) {
+ return true;
+ }
+ if (t is T_011_1_type__4) {
+ return true;
+ }
+ if (t is T_011_1_type__5) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_001_0() {
+ // C_**1_*;
+ Expect.isFalse(typeTest(C_001_0()));
+ Expect.isFalse(typeTest(C_101_1_class_1()));
+ Expect.isFalse(typeTest(C_101_1_class_2()));
+ Expect.isFalse(typeTest(C_101_1_class_3()));
+ Expect.isFalse(typeTest(C_101_1_class_4()));
+ Expect.isFalse(typeTest(C_101_1_class_5()));
+ Expect.isFalse(typeTest(C_101_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_1()));
+ Expect.isFalse(typeTest(C_111_1_class_2()));
+ Expect.isFalse(typeTest(C_111_1_class_3()));
+ Expect.isFalse(typeTest(C_111_1_class_4()));
+ Expect.isFalse(typeTest(C_111_1_class_5()));
+ Expect.isFalse(typeTest(C_111_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_7()));
+ Expect.isFalse(typeTest(C_111_1_class_8()));
+ Expect.isFalse(typeTest(C_111_1_class_9()));
+ Expect.isFalse(typeTest(C_011_1_class_1()));
+ Expect.isFalse(typeTest(C_011_1_class_2()));
+ Expect.isFalse(typeTest(C_011_1_class_3()));
+ Expect.isFalse(typeTest(C_011_1_class_4()));
+ Expect.isFalse(typeTest(C_011_1_class_5()));
+
+ Expect.isTrue(closureC_001_0(C_001_0())(C_001_0()));
+ Expect.isTrue(closureC_101_1_class_1(C_101_1_class_1())(C_101_1_class_1()));
+ Expect.isTrue(closureC_101_1_class_2(C_101_1_class_2())(C_101_1_class_2()));
+ Expect.isTrue(closureC_101_1_class_3(C_101_1_class_3())(C_101_1_class_3()));
+ Expect.isTrue(closureC_101_1_class_4(C_101_1_class_4())(C_101_1_class_4()));
+ Expect.isTrue(closureC_101_1_class_5(C_101_1_class_5())(C_101_1_class_5()));
+ Expect.isTrue(closureC_101_1_class_6(C_101_1_class_6())(C_101_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_1(C_111_1_class_1())(C_111_1_class_1()));
+ Expect.isTrue(closureC_111_1_class_2(C_111_1_class_2())(C_111_1_class_2()));
+ Expect.isTrue(closureC_111_1_class_3(C_111_1_class_3())(C_111_1_class_3()));
+ Expect.isTrue(closureC_111_1_class_4(C_111_1_class_4())(C_111_1_class_4()));
+ Expect.isTrue(closureC_111_1_class_5(C_111_1_class_5())(C_111_1_class_5()));
+ Expect.isTrue(closureC_111_1_class_6(C_111_1_class_6())(C_111_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_7(C_111_1_class_7())(C_111_1_class_7()));
+ Expect.isTrue(closureC_111_1_class_8(C_111_1_class_8())(C_111_1_class_8()));
+ Expect.isTrue(closureC_111_1_class_9(C_111_1_class_9())(C_111_1_class_9()));
+ Expect.isTrue(closureC_011_1_class_1(C_011_1_class_1())(C_011_1_class_1()));
+ Expect.isTrue(closureC_011_1_class_2(C_011_1_class_2())(C_011_1_class_2()));
+ Expect.isTrue(closureC_011_1_class_3(C_011_1_class_3())(C_011_1_class_3()));
+ Expect.isTrue(closureC_011_1_class_4(C_011_1_class_4())(C_011_1_class_4()));
+ Expect.isTrue(closureC_011_1_class_5(C_011_1_class_5())(C_011_1_class_5()));
+
+ Expect.equals(
+ closureC_001_0(C_001_0()).runtimeType.toString(), '(C_001_0) => bool');
+ Expect.equals(
+ closureC_101_1_class_1(C_101_1_class_1()).runtimeType.toString(),
+ '(C_101_1_class_1) => bool');
+ Expect.equals(
+ closureC_101_1_class_2(C_101_1_class_2()).runtimeType.toString(),
+ '(C_101_1_class_2) => bool');
+ Expect.equals(
+ closureC_101_1_class_3(C_101_1_class_3()).runtimeType.toString(),
+ '(C_101_1_class_3) => bool');
+ Expect.equals(
+ closureC_101_1_class_4(C_101_1_class_4()).runtimeType.toString(),
+ '(C_101_1_class_4) => bool');
+ Expect.equals(
+ closureC_101_1_class_5(C_101_1_class_5()).runtimeType.toString(),
+ '(C_101_1_class_5) => bool');
+ Expect.equals(
+ closureC_101_1_class_6(C_101_1_class_6()).runtimeType.toString(),
+ '(C_101_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_1(C_111_1_class_1()).runtimeType.toString(),
+ '(C_111_1_class_1) => bool');
+ Expect.equals(
+ closureC_111_1_class_2(C_111_1_class_2()).runtimeType.toString(),
+ '(C_111_1_class_2) => bool');
+ Expect.equals(
+ closureC_111_1_class_3(C_111_1_class_3()).runtimeType.toString(),
+ '(C_111_1_class_3) => bool');
+ Expect.equals(
+ closureC_111_1_class_4(C_111_1_class_4()).runtimeType.toString(),
+ '(C_111_1_class_4) => bool');
+ Expect.equals(
+ closureC_111_1_class_5(C_111_1_class_5()).runtimeType.toString(),
+ '(C_111_1_class_5) => bool');
+ Expect.equals(
+ closureC_111_1_class_6(C_111_1_class_6()).runtimeType.toString(),
+ '(C_111_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_7(C_111_1_class_7()).runtimeType.toString(),
+ '(C_111_1_class_7) => bool');
+ Expect.equals(
+ closureC_111_1_class_8(C_111_1_class_8()).runtimeType.toString(),
+ '(C_111_1_class_8) => bool');
+ Expect.equals(
+ closureC_111_1_class_9(C_111_1_class_9()).runtimeType.toString(),
+ '(C_111_1_class_9) => bool');
+ Expect.equals(
+ closureC_011_1_class_1(C_011_1_class_1()).runtimeType.toString(),
+ '(C_011_1_class_1) => bool');
+ Expect.equals(
+ closureC_011_1_class_2(C_011_1_class_2()).runtimeType.toString(),
+ '(C_011_1_class_2) => bool');
+ Expect.equals(
+ closureC_011_1_class_3(C_011_1_class_3()).runtimeType.toString(),
+ '(C_011_1_class_3) => bool');
+ Expect.equals(
+ closureC_011_1_class_4(C_011_1_class_4()).runtimeType.toString(),
+ '(C_011_1_class_4) => bool');
+ Expect.equals(
+ closureC_011_1_class_5(C_011_1_class_5()).runtimeType.toString(),
+ '(C_011_1_class_5) => bool');
+
Set<String> uniques = {};
// f_**1_*;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_010_0.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_010_0.dart
index d9ef060..600809f 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_010_0.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_010_0.dart
@@ -3,13 +3,242 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_010_0) {
+ return true;
+ }
+ if (t is T_010_1) {
+ return true;
+ }
+ if (t is T_011_1) {
+ return true;
+ }
+ if (t is T_110_0_type__1) {
+ return true;
+ }
+ if (t is T_110_0_type__2) {
+ return true;
+ }
+ if (t is T_110_0_type__3) {
+ return true;
+ }
+ if (t is T_110_0_type__4) {
+ return true;
+ }
+ if (t is T_110_0_type__5) {
+ return true;
+ }
+ if (t is T_110_0_type__6) {
+ return true;
+ }
+ if (t is T_110_0_type__7) {
+ return true;
+ }
+ if (t is T_111_1_type__1) {
+ return true;
+ }
+ if (t is T_111_1_type__2) {
+ return true;
+ }
+ if (t is T_111_1_type__3) {
+ return true;
+ }
+ if (t is T_111_1_type__4) {
+ return true;
+ }
+ if (t is T_111_1_type__5) {
+ return true;
+ }
+ if (t is T_111_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__7) {
+ return true;
+ }
+ if (t is T_111_1_type__8) {
+ return true;
+ }
+ if (t is T_111_1_type__9) {
+ return true;
+ }
+ if (t is T_010_1_type__1) {
+ return true;
+ }
+ if (t is T_010_1_type__2) {
+ return true;
+ }
+ if (t is T_010_1_type__3) {
+ return true;
+ }
+ if (t is T_010_1_type__4) {
+ return true;
+ }
+ if (t is T_011_1_type__1) {
+ return true;
+ }
+ if (t is T_011_1_type__2) {
+ return true;
+ }
+ if (t is T_011_1_type__3) {
+ return true;
+ }
+ if (t is T_011_1_type__4) {
+ return true;
+ }
+ if (t is T_011_1_type__5) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_010_0() {
+ // C_*1*_*;
+ Expect.isFalse(typeTest(C_010_0()));
+ Expect.isFalse(typeTest(C_010_1()));
+ Expect.isFalse(typeTest(C_011_1()));
+ Expect.isFalse(typeTest(C_110_0_class_1()));
+ Expect.isFalse(typeTest(C_110_0_class_2()));
+ Expect.isFalse(typeTest(C_110_0_class_3()));
+ Expect.isFalse(typeTest(C_110_0_class_4()));
+ Expect.isFalse(typeTest(C_110_0_class_5()));
+ Expect.isFalse(typeTest(C_110_0_class_6()));
+ Expect.isFalse(typeTest(C_110_0_class_7()));
+ Expect.isFalse(typeTest(C_111_1_class_1()));
+ Expect.isFalse(typeTest(C_111_1_class_2()));
+ Expect.isFalse(typeTest(C_111_1_class_3()));
+ Expect.isFalse(typeTest(C_111_1_class_4()));
+ Expect.isFalse(typeTest(C_111_1_class_5()));
+ Expect.isFalse(typeTest(C_111_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_7()));
+ Expect.isFalse(typeTest(C_111_1_class_8()));
+ Expect.isFalse(typeTest(C_111_1_class_9()));
+ Expect.isFalse(typeTest(C_010_1_class_1()));
+ Expect.isFalse(typeTest(C_010_1_class_2()));
+ Expect.isFalse(typeTest(C_010_1_class_3()));
+ Expect.isFalse(typeTest(C_010_1_class_4()));
+ Expect.isFalse(typeTest(C_011_1_class_1()));
+ Expect.isFalse(typeTest(C_011_1_class_2()));
+ Expect.isFalse(typeTest(C_011_1_class_3()));
+ Expect.isFalse(typeTest(C_011_1_class_4()));
+ Expect.isFalse(typeTest(C_011_1_class_5()));
+
+ Expect.isTrue(closureC_010_0(C_010_0())(C_010_0()));
+ Expect.isTrue(closureC_010_1(C_010_1())(C_010_1()));
+ Expect.isTrue(closureC_011_1(C_011_1())(C_011_1()));
+ Expect.isTrue(closureC_110_0_class_1(C_110_0_class_1())(C_110_0_class_1()));
+ Expect.isTrue(closureC_110_0_class_2(C_110_0_class_2())(C_110_0_class_2()));
+ Expect.isTrue(closureC_110_0_class_3(C_110_0_class_3())(C_110_0_class_3()));
+ Expect.isTrue(closureC_110_0_class_4(C_110_0_class_4())(C_110_0_class_4()));
+ Expect.isTrue(closureC_110_0_class_5(C_110_0_class_5())(C_110_0_class_5()));
+ Expect.isTrue(closureC_110_0_class_6(C_110_0_class_6())(C_110_0_class_6()));
+ Expect.isTrue(closureC_110_0_class_7(C_110_0_class_7())(C_110_0_class_7()));
+ Expect.isTrue(closureC_111_1_class_1(C_111_1_class_1())(C_111_1_class_1()));
+ Expect.isTrue(closureC_111_1_class_2(C_111_1_class_2())(C_111_1_class_2()));
+ Expect.isTrue(closureC_111_1_class_3(C_111_1_class_3())(C_111_1_class_3()));
+ Expect.isTrue(closureC_111_1_class_4(C_111_1_class_4())(C_111_1_class_4()));
+ Expect.isTrue(closureC_111_1_class_5(C_111_1_class_5())(C_111_1_class_5()));
+ Expect.isTrue(closureC_111_1_class_6(C_111_1_class_6())(C_111_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_7(C_111_1_class_7())(C_111_1_class_7()));
+ Expect.isTrue(closureC_111_1_class_8(C_111_1_class_8())(C_111_1_class_8()));
+ Expect.isTrue(closureC_111_1_class_9(C_111_1_class_9())(C_111_1_class_9()));
+ Expect.isTrue(closureC_010_1_class_1(C_010_1_class_1())(C_010_1_class_1()));
+ Expect.isTrue(closureC_010_1_class_2(C_010_1_class_2())(C_010_1_class_2()));
+ Expect.isTrue(closureC_010_1_class_3(C_010_1_class_3())(C_010_1_class_3()));
+ Expect.isTrue(closureC_010_1_class_4(C_010_1_class_4())(C_010_1_class_4()));
+ Expect.isTrue(closureC_011_1_class_1(C_011_1_class_1())(C_011_1_class_1()));
+ Expect.isTrue(closureC_011_1_class_2(C_011_1_class_2())(C_011_1_class_2()));
+ Expect.isTrue(closureC_011_1_class_3(C_011_1_class_3())(C_011_1_class_3()));
+ Expect.isTrue(closureC_011_1_class_4(C_011_1_class_4())(C_011_1_class_4()));
+ Expect.isTrue(closureC_011_1_class_5(C_011_1_class_5())(C_011_1_class_5()));
+
+ Expect.equals(
+ closureC_010_0(C_010_0()).runtimeType.toString(), '(C_010_0) => bool');
+ Expect.equals(
+ closureC_010_1(C_010_1()).runtimeType.toString(), '(C_010_1) => bool');
+ Expect.equals(
+ closureC_011_1(C_011_1()).runtimeType.toString(), '(C_011_1) => bool');
+ Expect.equals(
+ closureC_110_0_class_1(C_110_0_class_1()).runtimeType.toString(),
+ '(C_110_0_class_1) => bool');
+ Expect.equals(
+ closureC_110_0_class_2(C_110_0_class_2()).runtimeType.toString(),
+ '(C_110_0_class_2) => bool');
+ Expect.equals(
+ closureC_110_0_class_3(C_110_0_class_3()).runtimeType.toString(),
+ '(C_110_0_class_3) => bool');
+ Expect.equals(
+ closureC_110_0_class_4(C_110_0_class_4()).runtimeType.toString(),
+ '(C_110_0_class_4) => bool');
+ Expect.equals(
+ closureC_110_0_class_5(C_110_0_class_5()).runtimeType.toString(),
+ '(C_110_0_class_5) => bool');
+ Expect.equals(
+ closureC_110_0_class_6(C_110_0_class_6()).runtimeType.toString(),
+ '(C_110_0_class_6) => bool');
+ Expect.equals(
+ closureC_110_0_class_7(C_110_0_class_7()).runtimeType.toString(),
+ '(C_110_0_class_7) => bool');
+ Expect.equals(
+ closureC_111_1_class_1(C_111_1_class_1()).runtimeType.toString(),
+ '(C_111_1_class_1) => bool');
+ Expect.equals(
+ closureC_111_1_class_2(C_111_1_class_2()).runtimeType.toString(),
+ '(C_111_1_class_2) => bool');
+ Expect.equals(
+ closureC_111_1_class_3(C_111_1_class_3()).runtimeType.toString(),
+ '(C_111_1_class_3) => bool');
+ Expect.equals(
+ closureC_111_1_class_4(C_111_1_class_4()).runtimeType.toString(),
+ '(C_111_1_class_4) => bool');
+ Expect.equals(
+ closureC_111_1_class_5(C_111_1_class_5()).runtimeType.toString(),
+ '(C_111_1_class_5) => bool');
+ Expect.equals(
+ closureC_111_1_class_6(C_111_1_class_6()).runtimeType.toString(),
+ '(C_111_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_7(C_111_1_class_7()).runtimeType.toString(),
+ '(C_111_1_class_7) => bool');
+ Expect.equals(
+ closureC_111_1_class_8(C_111_1_class_8()).runtimeType.toString(),
+ '(C_111_1_class_8) => bool');
+ Expect.equals(
+ closureC_111_1_class_9(C_111_1_class_9()).runtimeType.toString(),
+ '(C_111_1_class_9) => bool');
+ Expect.equals(
+ closureC_010_1_class_1(C_010_1_class_1()).runtimeType.toString(),
+ '(C_010_1_class_1) => bool');
+ Expect.equals(
+ closureC_010_1_class_2(C_010_1_class_2()).runtimeType.toString(),
+ '(C_010_1_class_2) => bool');
+ Expect.equals(
+ closureC_010_1_class_3(C_010_1_class_3()).runtimeType.toString(),
+ '(C_010_1_class_3) => bool');
+ Expect.equals(
+ closureC_010_1_class_4(C_010_1_class_4()).runtimeType.toString(),
+ '(C_010_1_class_4) => bool');
+ Expect.equals(
+ closureC_011_1_class_1(C_011_1_class_1()).runtimeType.toString(),
+ '(C_011_1_class_1) => bool');
+ Expect.equals(
+ closureC_011_1_class_2(C_011_1_class_2()).runtimeType.toString(),
+ '(C_011_1_class_2) => bool');
+ Expect.equals(
+ closureC_011_1_class_3(C_011_1_class_3()).runtimeType.toString(),
+ '(C_011_1_class_3) => bool');
+ Expect.equals(
+ closureC_011_1_class_4(C_011_1_class_4()).runtimeType.toString(),
+ '(C_011_1_class_4) => bool');
+ Expect.equals(
+ closureC_011_1_class_5(C_011_1_class_5()).runtimeType.toString(),
+ '(C_011_1_class_5) => bool');
+
Set<String> uniques = {};
// f_*1*_*;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_100_0.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_100_0.dart
index 6d2c07f..bbf23b8 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_100_0.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/lib_100_0.dart
@@ -3,13 +3,225 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_100_0) {
+ return true;
+ }
+ if (t is T_110_0) {
+ return true;
+ }
+ if (t is T_101_1) {
+ return true;
+ }
+ if (t is T_111_1) {
+ return true;
+ }
+ if (t is T_110_0_type__1) {
+ return true;
+ }
+ if (t is T_110_0_type__2) {
+ return true;
+ }
+ if (t is T_110_0_type__3) {
+ return true;
+ }
+ if (t is T_110_0_type__4) {
+ return true;
+ }
+ if (t is T_110_0_type__5) {
+ return true;
+ }
+ if (t is T_110_0_type__6) {
+ return true;
+ }
+ if (t is T_110_0_type__7) {
+ return true;
+ }
+ if (t is T_101_1_type__1) {
+ return true;
+ }
+ if (t is T_101_1_type__2) {
+ return true;
+ }
+ if (t is T_101_1_type__3) {
+ return true;
+ }
+ if (t is T_101_1_type__4) {
+ return true;
+ }
+ if (t is T_101_1_type__5) {
+ return true;
+ }
+ if (t is T_101_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__1) {
+ return true;
+ }
+ if (t is T_111_1_type__2) {
+ return true;
+ }
+ if (t is T_111_1_type__3) {
+ return true;
+ }
+ if (t is T_111_1_type__4) {
+ return true;
+ }
+ if (t is T_111_1_type__5) {
+ return true;
+ }
+ if (t is T_111_1_type__6) {
+ return true;
+ }
+ if (t is T_111_1_type__7) {
+ return true;
+ }
+ if (t is T_111_1_type__8) {
+ return true;
+ }
+ if (t is T_111_1_type__9) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_100_0() {
+ // C_1**_*;
+ Expect.isFalse(typeTest(C_100_0()));
+ Expect.isFalse(typeTest(C_110_0()));
+ Expect.isFalse(typeTest(C_101_1()));
+ Expect.isFalse(typeTest(C_111_1()));
+ Expect.isFalse(typeTest(C_110_0_class_1()));
+ Expect.isFalse(typeTest(C_110_0_class_2()));
+ Expect.isFalse(typeTest(C_110_0_class_3()));
+ Expect.isFalse(typeTest(C_110_0_class_4()));
+ Expect.isFalse(typeTest(C_110_0_class_5()));
+ Expect.isFalse(typeTest(C_110_0_class_6()));
+ Expect.isFalse(typeTest(C_110_0_class_7()));
+ Expect.isFalse(typeTest(C_101_1_class_1()));
+ Expect.isFalse(typeTest(C_101_1_class_2()));
+ Expect.isFalse(typeTest(C_101_1_class_3()));
+ Expect.isFalse(typeTest(C_101_1_class_4()));
+ Expect.isFalse(typeTest(C_101_1_class_5()));
+ Expect.isFalse(typeTest(C_101_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_1()));
+ Expect.isFalse(typeTest(C_111_1_class_2()));
+ Expect.isFalse(typeTest(C_111_1_class_3()));
+ Expect.isFalse(typeTest(C_111_1_class_4()));
+ Expect.isFalse(typeTest(C_111_1_class_5()));
+ Expect.isFalse(typeTest(C_111_1_class_6()));
+ Expect.isFalse(typeTest(C_111_1_class_7()));
+ Expect.isFalse(typeTest(C_111_1_class_8()));
+ Expect.isFalse(typeTest(C_111_1_class_9()));
+
+ Expect.isTrue(closureC_100_0(C_100_0())(C_100_0()));
+ Expect.isTrue(closureC_110_0(C_110_0())(C_110_0()));
+ Expect.isTrue(closureC_101_1(C_101_1())(C_101_1()));
+ Expect.isTrue(closureC_111_1(C_111_1())(C_111_1()));
+ Expect.isTrue(closureC_110_0_class_1(C_110_0_class_1())(C_110_0_class_1()));
+ Expect.isTrue(closureC_110_0_class_2(C_110_0_class_2())(C_110_0_class_2()));
+ Expect.isTrue(closureC_110_0_class_3(C_110_0_class_3())(C_110_0_class_3()));
+ Expect.isTrue(closureC_110_0_class_4(C_110_0_class_4())(C_110_0_class_4()));
+ Expect.isTrue(closureC_110_0_class_5(C_110_0_class_5())(C_110_0_class_5()));
+ Expect.isTrue(closureC_110_0_class_6(C_110_0_class_6())(C_110_0_class_6()));
+ Expect.isTrue(closureC_110_0_class_7(C_110_0_class_7())(C_110_0_class_7()));
+ Expect.isTrue(closureC_101_1_class_1(C_101_1_class_1())(C_101_1_class_1()));
+ Expect.isTrue(closureC_101_1_class_2(C_101_1_class_2())(C_101_1_class_2()));
+ Expect.isTrue(closureC_101_1_class_3(C_101_1_class_3())(C_101_1_class_3()));
+ Expect.isTrue(closureC_101_1_class_4(C_101_1_class_4())(C_101_1_class_4()));
+ Expect.isTrue(closureC_101_1_class_5(C_101_1_class_5())(C_101_1_class_5()));
+ Expect.isTrue(closureC_101_1_class_6(C_101_1_class_6())(C_101_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_1(C_111_1_class_1())(C_111_1_class_1()));
+ Expect.isTrue(closureC_111_1_class_2(C_111_1_class_2())(C_111_1_class_2()));
+ Expect.isTrue(closureC_111_1_class_3(C_111_1_class_3())(C_111_1_class_3()));
+ Expect.isTrue(closureC_111_1_class_4(C_111_1_class_4())(C_111_1_class_4()));
+ Expect.isTrue(closureC_111_1_class_5(C_111_1_class_5())(C_111_1_class_5()));
+ Expect.isTrue(closureC_111_1_class_6(C_111_1_class_6())(C_111_1_class_6()));
+ Expect.isTrue(closureC_111_1_class_7(C_111_1_class_7())(C_111_1_class_7()));
+ Expect.isTrue(closureC_111_1_class_8(C_111_1_class_8())(C_111_1_class_8()));
+ Expect.isTrue(closureC_111_1_class_9(C_111_1_class_9())(C_111_1_class_9()));
+
+ Expect.equals(
+ closureC_100_0(C_100_0()).runtimeType.toString(), '(C_100_0) => bool');
+ Expect.equals(
+ closureC_110_0(C_110_0()).runtimeType.toString(), '(C_110_0) => bool');
+ Expect.equals(
+ closureC_101_1(C_101_1()).runtimeType.toString(), '(C_101_1) => bool');
+ Expect.equals(
+ closureC_111_1(C_111_1()).runtimeType.toString(), '(C_111_1) => bool');
+ Expect.equals(
+ closureC_110_0_class_1(C_110_0_class_1()).runtimeType.toString(),
+ '(C_110_0_class_1) => bool');
+ Expect.equals(
+ closureC_110_0_class_2(C_110_0_class_2()).runtimeType.toString(),
+ '(C_110_0_class_2) => bool');
+ Expect.equals(
+ closureC_110_0_class_3(C_110_0_class_3()).runtimeType.toString(),
+ '(C_110_0_class_3) => bool');
+ Expect.equals(
+ closureC_110_0_class_4(C_110_0_class_4()).runtimeType.toString(),
+ '(C_110_0_class_4) => bool');
+ Expect.equals(
+ closureC_110_0_class_5(C_110_0_class_5()).runtimeType.toString(),
+ '(C_110_0_class_5) => bool');
+ Expect.equals(
+ closureC_110_0_class_6(C_110_0_class_6()).runtimeType.toString(),
+ '(C_110_0_class_6) => bool');
+ Expect.equals(
+ closureC_110_0_class_7(C_110_0_class_7()).runtimeType.toString(),
+ '(C_110_0_class_7) => bool');
+ Expect.equals(
+ closureC_101_1_class_1(C_101_1_class_1()).runtimeType.toString(),
+ '(C_101_1_class_1) => bool');
+ Expect.equals(
+ closureC_101_1_class_2(C_101_1_class_2()).runtimeType.toString(),
+ '(C_101_1_class_2) => bool');
+ Expect.equals(
+ closureC_101_1_class_3(C_101_1_class_3()).runtimeType.toString(),
+ '(C_101_1_class_3) => bool');
+ Expect.equals(
+ closureC_101_1_class_4(C_101_1_class_4()).runtimeType.toString(),
+ '(C_101_1_class_4) => bool');
+ Expect.equals(
+ closureC_101_1_class_5(C_101_1_class_5()).runtimeType.toString(),
+ '(C_101_1_class_5) => bool');
+ Expect.equals(
+ closureC_101_1_class_6(C_101_1_class_6()).runtimeType.toString(),
+ '(C_101_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_1(C_111_1_class_1()).runtimeType.toString(),
+ '(C_111_1_class_1) => bool');
+ Expect.equals(
+ closureC_111_1_class_2(C_111_1_class_2()).runtimeType.toString(),
+ '(C_111_1_class_2) => bool');
+ Expect.equals(
+ closureC_111_1_class_3(C_111_1_class_3()).runtimeType.toString(),
+ '(C_111_1_class_3) => bool');
+ Expect.equals(
+ closureC_111_1_class_4(C_111_1_class_4()).runtimeType.toString(),
+ '(C_111_1_class_4) => bool');
+ Expect.equals(
+ closureC_111_1_class_5(C_111_1_class_5()).runtimeType.toString(),
+ '(C_111_1_class_5) => bool');
+ Expect.equals(
+ closureC_111_1_class_6(C_111_1_class_6()).runtimeType.toString(),
+ '(C_111_1_class_6) => bool');
+ Expect.equals(
+ closureC_111_1_class_7(C_111_1_class_7()).runtimeType.toString(),
+ '(C_111_1_class_7) => bool');
+ Expect.equals(
+ closureC_111_1_class_8(C_111_1_class_8()).runtimeType.toString(),
+ '(C_111_1_class_8) => bool');
+ Expect.equals(
+ closureC_111_1_class_9(C_111_1_class_9()).runtimeType.toString(),
+ '(C_111_1_class_9) => bool');
+
Set<String> uniques = {};
// f_1**_*;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/main.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/main.dart
index fb21cef..5f1c08c 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/main.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/less_simple/main.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib1.dart';
import 'lib2.dart';
import 'lib3.dart';
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib1.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib1.dart
index c664b0c..d91a48b 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib1.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib1.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_100.dart' deferred as b1;
entryLib1() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib2.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib2.dart
index 6741292..7960202 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib2.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib2.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_010.dart' deferred as b2;
entryLib2() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib3.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib3.dart
index 2133ef7..e62cd54 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib3.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib3.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib_001.dart' deferred as b3;
entryLib3() async {
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/libImport.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/libImport.dart
index 8d1058b..27f453d 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/libImport.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/libImport.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
void v(Set<String> u, String name, int bit) {
@@ -11,6 +10,254 @@
Expect.equals(name[bit], '1');
}
+class C_100 {
+ const C_100();
+}
+
+class M_100 {}
+
+class T_100 {}
+
+const C_100 iC_100 = const C_100();
+closureC_100(foo) => (C_100 unused) => iC_100.toString() == foo.toString();
+
+class C_101 {
+ const C_101();
+}
+
+class M_101 {}
+
+class T_101 {}
+
+const C_101 iC_101 = const C_101();
+closureC_101(foo) => (C_101 unused) => iC_101.toString() == foo.toString();
+
+class C_111 {
+ const C_111();
+}
+
+class M_111 {}
+
+class T_111 {}
+
+const C_111 iC_111 = const C_111();
+closureC_111(foo) => (C_111 unused) => iC_111.toString() == foo.toString();
+
+class C_010 {
+ const C_010();
+}
+
+class M_010 {}
+
+class T_010 {}
+
+const C_010 iC_010 = const C_010();
+closureC_010(foo) => (C_010 unused) => iC_010.toString() == foo.toString();
+
+class C_011 {
+ const C_011();
+}
+
+class M_011 {}
+
+class T_011 {}
+
+const C_011 iC_011 = const C_011();
+closureC_011(foo) => (C_011 unused) => iC_011.toString() == foo.toString();
+
+class C_001 {
+ const C_001();
+}
+
+class M_001 {}
+
+class T_001 {}
+
+const C_001 iC_001 = const C_001();
+closureC_001(foo) => (C_001 unused) => iC_001.toString() == foo.toString();
+
+class C_101_class_1 extends C_100
+ with M_100, M_101, M_111, M_001
+ implements C_101, C_111, C_001 {
+ const C_101_class_1();
+}
+
+const C_101_class_1 iC_101_class_1 = const C_101_class_1();
+closureC_101_class_1(foo) =>
+ (C_101_class_1 unused) => iC_101_class_1.toString() == foo.toString();
+
+class T_101_type__1 extends T_100
+ with M_100, M_101, M_111, M_001
+ implements T_101, T_111, T_001 {}
+
+class C_101_class_2 extends C_101
+ with M_100, M_101, M_111, M_001
+ implements C_100, C_111, C_001 {
+ const C_101_class_2();
+}
+
+const C_101_class_2 iC_101_class_2 = const C_101_class_2();
+closureC_101_class_2(foo) =>
+ (C_101_class_2 unused) => iC_101_class_2.toString() == foo.toString();
+
+class T_101_type__2 extends T_101
+ with M_100, M_101, M_111, M_001
+ implements T_100, T_111, T_001 {}
+
+class C_101_class_3 extends C_111
+ with M_100, M_101, M_111, M_001
+ implements C_100, C_101, C_001 {
+ const C_101_class_3();
+}
+
+const C_101_class_3 iC_101_class_3 = const C_101_class_3();
+closureC_101_class_3(foo) =>
+ (C_101_class_3 unused) => iC_101_class_3.toString() == foo.toString();
+
+class T_101_type__3 extends T_111
+ with M_100, M_101, M_111, M_001
+ implements T_100, T_101, T_001 {}
+
+class C_101_class_4 extends C_001
+ with M_100, M_101, M_111, M_001
+ implements C_100, C_101, C_111 {
+ const C_101_class_4();
+}
+
+const C_101_class_4 iC_101_class_4 = const C_101_class_4();
+closureC_101_class_4(foo) =>
+ (C_101_class_4 unused) => iC_101_class_4.toString() == foo.toString();
+
+class T_101_type__4 extends T_001
+ with M_100, M_101, M_111, M_001
+ implements T_100, T_101, T_111 {}
+
+class C_111_class_1 extends C_100
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements C_101, C_111, C_010, C_011, C_001 {
+ const C_111_class_1();
+}
+
+const C_111_class_1 iC_111_class_1 = const C_111_class_1();
+closureC_111_class_1(foo) =>
+ (C_111_class_1 unused) => iC_111_class_1.toString() == foo.toString();
+
+class T_111_type__1 extends T_100
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements T_101, T_111, T_010, T_011, T_001 {}
+
+class C_111_class_2 extends C_101
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements C_100, C_111, C_010, C_011, C_001 {
+ const C_111_class_2();
+}
+
+const C_111_class_2 iC_111_class_2 = const C_111_class_2();
+closureC_111_class_2(foo) =>
+ (C_111_class_2 unused) => iC_111_class_2.toString() == foo.toString();
+
+class T_111_type__2 extends T_101
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements T_100, T_111, T_010, T_011, T_001 {}
+
+class C_111_class_3 extends C_111
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements C_100, C_101, C_010, C_011, C_001 {
+ const C_111_class_3();
+}
+
+const C_111_class_3 iC_111_class_3 = const C_111_class_3();
+closureC_111_class_3(foo) =>
+ (C_111_class_3 unused) => iC_111_class_3.toString() == foo.toString();
+
+class T_111_type__3 extends T_111
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements T_100, T_101, T_010, T_011, T_001 {}
+
+class C_111_class_4 extends C_010
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements C_100, C_101, C_111, C_011, C_001 {
+ const C_111_class_4();
+}
+
+const C_111_class_4 iC_111_class_4 = const C_111_class_4();
+closureC_111_class_4(foo) =>
+ (C_111_class_4 unused) => iC_111_class_4.toString() == foo.toString();
+
+class T_111_type__4 extends T_010
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements T_100, T_101, T_111, T_011, T_001 {}
+
+class C_111_class_5 extends C_011
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements C_100, C_101, C_111, C_010, C_001 {
+ const C_111_class_5();
+}
+
+const C_111_class_5 iC_111_class_5 = const C_111_class_5();
+closureC_111_class_5(foo) =>
+ (C_111_class_5 unused) => iC_111_class_5.toString() == foo.toString();
+
+class T_111_type__5 extends T_011
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements T_100, T_101, T_111, T_010, T_001 {}
+
+class C_111_class_6 extends C_001
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements C_100, C_101, C_111, C_010, C_011 {
+ const C_111_class_6();
+}
+
+const C_111_class_6 iC_111_class_6 = const C_111_class_6();
+closureC_111_class_6(foo) =>
+ (C_111_class_6 unused) => iC_111_class_6.toString() == foo.toString();
+
+class T_111_type__6 extends T_001
+ with M_100, M_101, M_111, M_010, M_011, M_001
+ implements T_100, T_101, T_111, T_010, T_011 {}
+
+class C_011_class_1 extends C_010
+ with M_010, M_011, M_001
+ implements C_011, C_001 {
+ const C_011_class_1();
+}
+
+const C_011_class_1 iC_011_class_1 = const C_011_class_1();
+closureC_011_class_1(foo) =>
+ (C_011_class_1 unused) => iC_011_class_1.toString() == foo.toString();
+
+class T_011_type__1 extends T_010
+ with M_010, M_011, M_001
+ implements T_011, T_001 {}
+
+class C_011_class_2 extends C_011
+ with M_010, M_011, M_001
+ implements C_010, C_001 {
+ const C_011_class_2();
+}
+
+const C_011_class_2 iC_011_class_2 = const C_011_class_2();
+closureC_011_class_2(foo) =>
+ (C_011_class_2 unused) => iC_011_class_2.toString() == foo.toString();
+
+class T_011_type__2 extends T_011
+ with M_010, M_011, M_001
+ implements T_010, T_001 {}
+
+class C_011_class_3 extends C_001
+ with M_010, M_011, M_001
+ implements C_010, C_011 {
+ const C_011_class_3();
+}
+
+const C_011_class_3 iC_011_class_3 = const C_011_class_3();
+closureC_011_class_3(foo) =>
+ (C_011_class_3 unused) => iC_011_class_3.toString() == foo.toString();
+
+class T_011_type__3 extends T_001
+ with M_010, M_011, M_001
+ implements T_010, T_011 {}
+
@pragma('dart2js:noInline')
f_100(Set<String> u, int b) => v(u, '100', b);
@pragma('dart2js:noInline')
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_001.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_001.dart
index 16c561a..c8be5f5 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_001.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_001.dart
@@ -3,13 +3,119 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_001) {
+ return true;
+ }
+ if (t is T_101_type__1) {
+ return true;
+ }
+ if (t is T_101_type__2) {
+ return true;
+ }
+ if (t is T_101_type__3) {
+ return true;
+ }
+ if (t is T_101_type__4) {
+ return true;
+ }
+ if (t is T_111_type__1) {
+ return true;
+ }
+ if (t is T_111_type__2) {
+ return true;
+ }
+ if (t is T_111_type__3) {
+ return true;
+ }
+ if (t is T_111_type__4) {
+ return true;
+ }
+ if (t is T_111_type__5) {
+ return true;
+ }
+ if (t is T_111_type__6) {
+ return true;
+ }
+ if (t is T_011_type__1) {
+ return true;
+ }
+ if (t is T_011_type__2) {
+ return true;
+ }
+ if (t is T_011_type__3) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_001() {
+ // C_**1;
+ Expect.isFalse(typeTest(C_001()));
+ Expect.isFalse(typeTest(C_101_class_1()));
+ Expect.isFalse(typeTest(C_101_class_2()));
+ Expect.isFalse(typeTest(C_101_class_3()));
+ Expect.isFalse(typeTest(C_101_class_4()));
+ Expect.isFalse(typeTest(C_111_class_1()));
+ Expect.isFalse(typeTest(C_111_class_2()));
+ Expect.isFalse(typeTest(C_111_class_3()));
+ Expect.isFalse(typeTest(C_111_class_4()));
+ Expect.isFalse(typeTest(C_111_class_5()));
+ Expect.isFalse(typeTest(C_111_class_6()));
+ Expect.isFalse(typeTest(C_011_class_1()));
+ Expect.isFalse(typeTest(C_011_class_2()));
+ Expect.isFalse(typeTest(C_011_class_3()));
+
+ Expect.isTrue(closureC_001(C_001())(C_001()));
+ Expect.isTrue(closureC_101_class_1(C_101_class_1())(C_101_class_1()));
+ Expect.isTrue(closureC_101_class_2(C_101_class_2())(C_101_class_2()));
+ Expect.isTrue(closureC_101_class_3(C_101_class_3())(C_101_class_3()));
+ Expect.isTrue(closureC_101_class_4(C_101_class_4())(C_101_class_4()));
+ Expect.isTrue(closureC_111_class_1(C_111_class_1())(C_111_class_1()));
+ Expect.isTrue(closureC_111_class_2(C_111_class_2())(C_111_class_2()));
+ Expect.isTrue(closureC_111_class_3(C_111_class_3())(C_111_class_3()));
+ Expect.isTrue(closureC_111_class_4(C_111_class_4())(C_111_class_4()));
+ Expect.isTrue(closureC_111_class_5(C_111_class_5())(C_111_class_5()));
+ Expect.isTrue(closureC_111_class_6(C_111_class_6())(C_111_class_6()));
+ Expect.isTrue(closureC_011_class_1(C_011_class_1())(C_011_class_1()));
+ Expect.isTrue(closureC_011_class_2(C_011_class_2())(C_011_class_2()));
+ Expect.isTrue(closureC_011_class_3(C_011_class_3())(C_011_class_3()));
+
+ Expect.equals(
+ closureC_001(C_001()).runtimeType.toString(), '(C_001) => bool');
+ Expect.equals(closureC_101_class_1(C_101_class_1()).runtimeType.toString(),
+ '(C_101_class_1) => bool');
+ Expect.equals(closureC_101_class_2(C_101_class_2()).runtimeType.toString(),
+ '(C_101_class_2) => bool');
+ Expect.equals(closureC_101_class_3(C_101_class_3()).runtimeType.toString(),
+ '(C_101_class_3) => bool');
+ Expect.equals(closureC_101_class_4(C_101_class_4()).runtimeType.toString(),
+ '(C_101_class_4) => bool');
+ Expect.equals(closureC_111_class_1(C_111_class_1()).runtimeType.toString(),
+ '(C_111_class_1) => bool');
+ Expect.equals(closureC_111_class_2(C_111_class_2()).runtimeType.toString(),
+ '(C_111_class_2) => bool');
+ Expect.equals(closureC_111_class_3(C_111_class_3()).runtimeType.toString(),
+ '(C_111_class_3) => bool');
+ Expect.equals(closureC_111_class_4(C_111_class_4()).runtimeType.toString(),
+ '(C_111_class_4) => bool');
+ Expect.equals(closureC_111_class_5(C_111_class_5()).runtimeType.toString(),
+ '(C_111_class_5) => bool');
+ Expect.equals(closureC_111_class_6(C_111_class_6()).runtimeType.toString(),
+ '(C_111_class_6) => bool');
+ Expect.equals(closureC_011_class_1(C_011_class_1()).runtimeType.toString(),
+ '(C_011_class_1) => bool');
+ Expect.equals(closureC_011_class_2(C_011_class_2()).runtimeType.toString(),
+ '(C_011_class_2) => bool');
+ Expect.equals(closureC_011_class_3(C_011_class_3()).runtimeType.toString(),
+ '(C_011_class_3) => bool');
+
Set<String> uniques = {};
// f_**1;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_010.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_010.dart
index 3ac623a..6827fe3 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_010.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_010.dart
@@ -3,13 +3,98 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_010) {
+ return true;
+ }
+ if (t is T_011) {
+ return true;
+ }
+ if (t is T_111_type__1) {
+ return true;
+ }
+ if (t is T_111_type__2) {
+ return true;
+ }
+ if (t is T_111_type__3) {
+ return true;
+ }
+ if (t is T_111_type__4) {
+ return true;
+ }
+ if (t is T_111_type__5) {
+ return true;
+ }
+ if (t is T_111_type__6) {
+ return true;
+ }
+ if (t is T_011_type__1) {
+ return true;
+ }
+ if (t is T_011_type__2) {
+ return true;
+ }
+ if (t is T_011_type__3) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_010() {
+ // C_*1*;
+ Expect.isFalse(typeTest(C_010()));
+ Expect.isFalse(typeTest(C_011()));
+ Expect.isFalse(typeTest(C_111_class_1()));
+ Expect.isFalse(typeTest(C_111_class_2()));
+ Expect.isFalse(typeTest(C_111_class_3()));
+ Expect.isFalse(typeTest(C_111_class_4()));
+ Expect.isFalse(typeTest(C_111_class_5()));
+ Expect.isFalse(typeTest(C_111_class_6()));
+ Expect.isFalse(typeTest(C_011_class_1()));
+ Expect.isFalse(typeTest(C_011_class_2()));
+ Expect.isFalse(typeTest(C_011_class_3()));
+
+ Expect.isTrue(closureC_010(C_010())(C_010()));
+ Expect.isTrue(closureC_011(C_011())(C_011()));
+ Expect.isTrue(closureC_111_class_1(C_111_class_1())(C_111_class_1()));
+ Expect.isTrue(closureC_111_class_2(C_111_class_2())(C_111_class_2()));
+ Expect.isTrue(closureC_111_class_3(C_111_class_3())(C_111_class_3()));
+ Expect.isTrue(closureC_111_class_4(C_111_class_4())(C_111_class_4()));
+ Expect.isTrue(closureC_111_class_5(C_111_class_5())(C_111_class_5()));
+ Expect.isTrue(closureC_111_class_6(C_111_class_6())(C_111_class_6()));
+ Expect.isTrue(closureC_011_class_1(C_011_class_1())(C_011_class_1()));
+ Expect.isTrue(closureC_011_class_2(C_011_class_2())(C_011_class_2()));
+ Expect.isTrue(closureC_011_class_3(C_011_class_3())(C_011_class_3()));
+
+ Expect.equals(
+ closureC_010(C_010()).runtimeType.toString(), '(C_010) => bool');
+ Expect.equals(
+ closureC_011(C_011()).runtimeType.toString(), '(C_011) => bool');
+ Expect.equals(closureC_111_class_1(C_111_class_1()).runtimeType.toString(),
+ '(C_111_class_1) => bool');
+ Expect.equals(closureC_111_class_2(C_111_class_2()).runtimeType.toString(),
+ '(C_111_class_2) => bool');
+ Expect.equals(closureC_111_class_3(C_111_class_3()).runtimeType.toString(),
+ '(C_111_class_3) => bool');
+ Expect.equals(closureC_111_class_4(C_111_class_4()).runtimeType.toString(),
+ '(C_111_class_4) => bool');
+ Expect.equals(closureC_111_class_5(C_111_class_5()).runtimeType.toString(),
+ '(C_111_class_5) => bool');
+ Expect.equals(closureC_111_class_6(C_111_class_6()).runtimeType.toString(),
+ '(C_111_class_6) => bool');
+ Expect.equals(closureC_011_class_1(C_011_class_1()).runtimeType.toString(),
+ '(C_011_class_1) => bool');
+ Expect.equals(closureC_011_class_2(C_011_class_2()).runtimeType.toString(),
+ '(C_011_class_2) => bool');
+ Expect.equals(closureC_011_class_3(C_011_class_3()).runtimeType.toString(),
+ '(C_011_class_3) => bool');
+
Set<String> uniques = {};
// f_*1*;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_100.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_100.dart
index 631b02b..5f96ca1 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_100.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/lib_100.dart
@@ -3,13 +3,112 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import "package:expect/expect.dart";
import 'libImport.dart';
@pragma('dart2js:noInline')
+typeTest(dynamic t) {
+ if (t is T_100) {
+ return true;
+ }
+ if (t is T_101) {
+ return true;
+ }
+ if (t is T_111) {
+ return true;
+ }
+ if (t is T_101_type__1) {
+ return true;
+ }
+ if (t is T_101_type__2) {
+ return true;
+ }
+ if (t is T_101_type__3) {
+ return true;
+ }
+ if (t is T_101_type__4) {
+ return true;
+ }
+ if (t is T_111_type__1) {
+ return true;
+ }
+ if (t is T_111_type__2) {
+ return true;
+ }
+ if (t is T_111_type__3) {
+ return true;
+ }
+ if (t is T_111_type__4) {
+ return true;
+ }
+ if (t is T_111_type__5) {
+ return true;
+ }
+ if (t is T_111_type__6) {
+ return true;
+ }
+ return false;
+}
+
+@pragma('dart2js:noInline')
g_100() {
+ // C_1**;
+ Expect.isFalse(typeTest(C_100()));
+ Expect.isFalse(typeTest(C_101()));
+ Expect.isFalse(typeTest(C_111()));
+ Expect.isFalse(typeTest(C_101_class_1()));
+ Expect.isFalse(typeTest(C_101_class_2()));
+ Expect.isFalse(typeTest(C_101_class_3()));
+ Expect.isFalse(typeTest(C_101_class_4()));
+ Expect.isFalse(typeTest(C_111_class_1()));
+ Expect.isFalse(typeTest(C_111_class_2()));
+ Expect.isFalse(typeTest(C_111_class_3()));
+ Expect.isFalse(typeTest(C_111_class_4()));
+ Expect.isFalse(typeTest(C_111_class_5()));
+ Expect.isFalse(typeTest(C_111_class_6()));
+
+ Expect.isTrue(closureC_100(C_100())(C_100()));
+ Expect.isTrue(closureC_101(C_101())(C_101()));
+ Expect.isTrue(closureC_111(C_111())(C_111()));
+ Expect.isTrue(closureC_101_class_1(C_101_class_1())(C_101_class_1()));
+ Expect.isTrue(closureC_101_class_2(C_101_class_2())(C_101_class_2()));
+ Expect.isTrue(closureC_101_class_3(C_101_class_3())(C_101_class_3()));
+ Expect.isTrue(closureC_101_class_4(C_101_class_4())(C_101_class_4()));
+ Expect.isTrue(closureC_111_class_1(C_111_class_1())(C_111_class_1()));
+ Expect.isTrue(closureC_111_class_2(C_111_class_2())(C_111_class_2()));
+ Expect.isTrue(closureC_111_class_3(C_111_class_3())(C_111_class_3()));
+ Expect.isTrue(closureC_111_class_4(C_111_class_4())(C_111_class_4()));
+ Expect.isTrue(closureC_111_class_5(C_111_class_5())(C_111_class_5()));
+ Expect.isTrue(closureC_111_class_6(C_111_class_6())(C_111_class_6()));
+
+ Expect.equals(
+ closureC_100(C_100()).runtimeType.toString(), '(C_100) => bool');
+ Expect.equals(
+ closureC_101(C_101()).runtimeType.toString(), '(C_101) => bool');
+ Expect.equals(
+ closureC_111(C_111()).runtimeType.toString(), '(C_111) => bool');
+ Expect.equals(closureC_101_class_1(C_101_class_1()).runtimeType.toString(),
+ '(C_101_class_1) => bool');
+ Expect.equals(closureC_101_class_2(C_101_class_2()).runtimeType.toString(),
+ '(C_101_class_2) => bool');
+ Expect.equals(closureC_101_class_3(C_101_class_3()).runtimeType.toString(),
+ '(C_101_class_3) => bool');
+ Expect.equals(closureC_101_class_4(C_101_class_4()).runtimeType.toString(),
+ '(C_101_class_4) => bool');
+ Expect.equals(closureC_111_class_1(C_111_class_1()).runtimeType.toString(),
+ '(C_111_class_1) => bool');
+ Expect.equals(closureC_111_class_2(C_111_class_2()).runtimeType.toString(),
+ '(C_111_class_2) => bool');
+ Expect.equals(closureC_111_class_3(C_111_class_3()).runtimeType.toString(),
+ '(C_111_class_3) => bool');
+ Expect.equals(closureC_111_class_4(C_111_class_4()).runtimeType.toString(),
+ '(C_111_class_4) => bool');
+ Expect.equals(closureC_111_class_5(C_111_class_5()).runtimeType.toString(),
+ '(C_111_class_5) => bool');
+ Expect.equals(closureC_111_class_6(C_111_class_6()).runtimeType.toString(),
+ '(C_111_class_6) => bool');
+
Set<String> uniques = {};
// f_1**;
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/main.dart b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/main.dart
index ef1a426..afcad53 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/main.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/golden/simple/main.dart
@@ -3,7 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
import 'lib1.dart';
import 'lib2.dart';
import 'lib3.dart';
diff --git a/pkg/compiler/test/tool/graph_isomorphizer/graph_isomorphizer_test.dart b/pkg/compiler/test/tool/graph_isomorphizer/graph_isomorphizer_test.dart
index eda8526..228adcd 100644
--- a/pkg/compiler/test/tool/graph_isomorphizer/graph_isomorphizer_test.dart
+++ b/pkg/compiler/test/tool/graph_isomorphizer/graph_isomorphizer_test.dart
@@ -8,6 +8,7 @@
import 'package:expect/expect.dart';
import 'package:compiler/compiler_new.dart';
+import 'package:dart_style/dart_style.dart' show DartFormatter;
import '../../helpers/memory_compiler.dart';
import '../../../tool/graph_isomorphizer.dart';
@@ -42,7 +43,8 @@
void verifyGeneratedFile(
String filename, StringBuffer contents, Map<String, String> expectations) {
- Expect.stringEquals(contents.toString(), expectations[filename]);
+ Expect.stringEquals(
+ DartFormatter().format(contents.toString()), expectations[filename]);
}
GraphIsomorphizer generateFiles(List<String> graphFileLines,
diff --git a/pkg/compiler/tool/graph_isomorphizer.dart b/pkg/compiler/tool/graph_isomorphizer.dart
index dca1cf1..49894bd 100644
--- a/pkg/compiler/tool/graph_isomorphizer.dart
+++ b/pkg/compiler/tool/graph_isomorphizer.dart
@@ -37,8 +37,14 @@
/// with three bits, each of 100, 010, 001 and 111 must be present in the graph
/// file, but 110, 101, and 011 are optional.
+// TODO(joshualitt): This is a good start for a fuzzer. There is still work to
+// do:
+// * Emit some classes as const and some not
+// * Randomize what we emit as we walk the graph so it is more sparse.
+
import 'dart:io';
import 'dart:math';
+import 'package:dart_style/dart_style.dart' show DartFormatter;
typedef NameFunc = String Function(List<int>, int);
@@ -112,6 +118,18 @@
/// A map of bit positions to lists of bit lists.
final Map<int, List<List<int>>> names;
+ /// A map of bit positions to lists of class names.
+ final Map<int, List<String>> classNames = {};
+ final Map<int, List<String>> mixerClassNames = {};
+
+ /// A map of bit positions to lists of mixin names.
+ final Map<int, List<String>> mixinNames = {};
+
+ /// A map of bit positions to lists of class names used only as types.
+ final Map<int, List<String>> typeNames = {};
+ final Map<int, List<String>> mixerTypeNames = {};
+ final Map<int, List<String>> closureNames = {};
+
/// We will permute bits up until the maximum bit.
int maxBit = 0;
@@ -135,6 +153,10 @@
out.write('import "package:expect/expect.dart";\n\n');
}
+ void newline(StringBuffer out) {
+ out.write('\n');
+ }
+
/// Generates the header for a file.
void generateHeader(StringBuffer out) {
if (!skipCopyright) {
@@ -144,11 +166,12 @@
// BSD-style license that can be found in the LICENSE file.
// This file was autogenerated by the pkg/compiler/tool/graph_isomorphizer.dart.
-
""");
}
}
+ /// Generates the root import, where classes, types, mixins, and closures
+ /// live.
void generateRootImport(StringBuffer out) {
generateHeader(out);
importExpect(out);
@@ -161,11 +184,102 @@
" Expect.equals(name[bit], '1');\n" +
'}\n\n');
- Set<String> uniques = {};
-
// Sort the names to ensure they are in a canonical order.
var nameKeys = names.keys.toList();
nameKeys.sort();
+
+ // Generate the 'base' classes, mixins, and types which will be combined to
+ // generate hierarchies. Also generate a const instance per class and a closure
+ // to invoke.
+ Set<String> uniques = {};
+ for (var bitPosition in nameKeys) {
+ var bitsList = names[bitPosition];
+ for (var bits in bitsList) {
+ var name = generateBitString(bits);
+ if (!uniques.add(name)) continue;
+ String className = 'C$name';
+ String mixinName = 'M$name';
+ String typeName = 'T$name';
+ (classNames[bitPosition] ??= []).add(className);
+ (mixinNames[bitPosition] ??= []).add(mixinName);
+ (typeNames[bitPosition] ??= []).add(typeName);
+ (mixerClassNames[bitPosition] ??= []).add(className);
+ (mixerTypeNames[bitPosition] ??= []).add(typeName);
+ out.write('class $className { const $className(); }\n');
+ out.write('class $mixinName {}\n');
+ out.write('class $typeName {}\n');
+ out.write('const $className i$className = const $className();\n');
+ out.write('closure$className(foo) => ($className unused) ');
+ out.write('=> i$className.toString() == foo.toString();\n');
+ }
+ }
+
+ // Generate combined classes and types, as well as const instances and
+ // closures.
+ newline(out);
+ uniques = {};
+ for (var bitPosition in nameKeys) {
+ var bitsList = names[bitPosition];
+ for (var bits in bitsList) {
+ var name = generateBitString(bits);
+ var bitCount = bits.reduce((a, b) => a + b);
+ var baseName = 'C$name';
+ if (!uniques.add(baseName)) continue;
+ if (bitCount > 1) {
+ List<String> classes = [];
+ List<String> mixins = [];
+ List<String> types = [];
+ for (int i = 0; i < bits.length; i++) {
+ if (bits[i] == 1) {
+ classes.addAll(classNames[i]);
+ mixins.addAll(mixinNames[i]);
+ types.addAll(typeNames[i]);
+ }
+ }
+ String mixinString = mixins.join(', ');
+ int count = 1;
+ assert(classes.length == types.length);
+ for (int i = 0; i < classes.length; i++) {
+ var cls = classes[i];
+ var type = types[i];
+ List<String> classImpls = [];
+ List<String> typeImpls = [];
+ if (i > 0) {
+ classImpls.addAll(classes.sublist(0, i));
+ typeImpls.addAll(types.sublist(0, i));
+ }
+ if (i < classes.length - 1) {
+ classImpls.addAll(classes.sublist(i + 1));
+ typeImpls.addAll(types.sublist(i + 1));
+ }
+ var classImplementsString = classImpls.join(', ');
+ String className = '${baseName}_class_${count}';
+ out.write('class $className extends $cls with $mixinString ');
+ out.write(
+ 'implements $classImplementsString { const $className(); }\n');
+ out.write('const $className i$className = const $className();\n');
+ out.write('closure$className(foo) => ($className unused) ');
+ out.write('=> i$className.toString() == foo.toString();\n');
+
+ var typeImplementsString = typeImpls.join(', ');
+ String typeName = 'T${name}_type__${count}';
+ out.write('class $typeName extends $type with $mixinString ');
+ out.write('implements $typeImplementsString {}\n');
+ for (int i = 0; i < bits.length; i++) {
+ if (bits[i] == 1) {
+ mixerClassNames[i].add(className);
+ mixerTypeNames[i].add(typeName);
+ }
+ }
+ count++;
+ }
+ }
+ }
+ }
+
+ // Generate functions.
+ newline(out);
+ uniques = {};
for (var name in nameKeys) {
var bitsList = names[name];
for (var bits in bitsList) {
@@ -186,13 +300,41 @@
generateHeader(out);
importExpect(out);
out.write("import '$import';\n\n");
+
+ // create type test.
noInlineDecorator(out);
- out.write('g$name() {\n'
- ' Set<String> uniques = {};\n\n'
- ' // f${generateCommentName(bits, bit)};\n');
- int count = 0;
+ out.write('typeTest(dynamic t) {\n');
+ for (var type in mixerTypeNames[bit]) {
+ out.write(' if (t is $type) { return true; }\n');
+ }
+ out.write(' return false;\n');
+ out.write('}\n\n');
+
+ noInlineDecorator(out);
+ out.write('g$name() {\n');
+ out.write(' // C${generateCommentName(bits, bit)};\n');
+
+ // Construct new instances of each class and pass them to the typeTest
+ for (var cls in mixerClassNames[bit]) {
+ out.write(' Expect.isFalse(typeTest($cls()));\n');
+ }
+ newline(out);
+
+ // Invoke the test closure for each class.
+ for (var cls in mixerClassNames[bit]) {
+ out.write(' Expect.isTrue(closure$cls($cls())($cls()));\n');
+ }
+ newline(out);
+
+ // Verify the runtimeTypes of the closures haven't been mangled.
+ for (var cls in mixerClassNames[bit]) {
+ out.write(' Expect.equals(closure$cls($cls()).runtimeType.toString(), ');
+ out.write("'($cls) => bool');\n");
+ }
+ newline(out);
// Collect the names so we can sort them and put them in a canonical order.
+ int count = 0;
List<String> namesBits = [];
names[bit].forEach((nameBits) {
var nameString = generateBitString(nameBits);
@@ -200,6 +342,9 @@
count++;
});
+ out.write(' Set<String> uniques = {};\n\n'
+ ' // f${generateCommentName(bits, bit)};\n');
+
namesBits.sort();
for (var name in namesBits) {
out.write(' f$name(uniques, $bit);\n');
@@ -300,7 +445,7 @@
var file = File(this.outDirectory + '/' + filename);
file.createSync(recursive: true);
var sink = file.openWrite();
- sink.write(contents);
+ sink.write(DartFormatter().format(contents.toString()));
sink.close();
}