[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>
This commit is contained in:
Joshua Litt 2021-04-01 17:06:52 +00:00 committed by commit-bot@chromium.org
parent c25e74852c
commit d5f3189c91
21 changed files with 2373 additions and 27 deletions

View file

@ -31,6 +31,7 @@ dependencies:
dev_dependencies:
# Published packages - repo version ensured via dependency_overrides
args: any
dart_style: any
http: any
js:
path: ../js

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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 @@ void v(Set<String> u, String name, int bit) {
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')

View file

@ -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;

View file

@ -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_*;

View file

@ -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*_*;

View file

@ -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**_*;

View file

@ -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';

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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 @@ void v(Set<String> u, String name, int bit) {
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')

View file

@ -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;

View file

@ -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*;

View file

@ -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**;

View file

@ -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';

View file

@ -8,6 +8,7 @@ import 'dart:io';
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 unorderedListEquals(List<String> expected, List<String> actual) {
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,

View file

@ -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 @@ class GraphIsomorphizer {
/// 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 @@ class GraphIsomorphizer {
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 @@ class GraphIsomorphizer {
// 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 @@ class GraphIsomorphizer {
" 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 @@ class GraphIsomorphizer {
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 @@ class GraphIsomorphizer {
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 @@ class GraphIsomorphizer {
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();
}