Implement longest path to Object
Change-Id: Ibf882536dde5a218f5fda085359d419e3ee0d831
Reviewed-on: https://dart-review.googlesource.com/c/93410
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
index 89f7efa..a47bf6c 100644
--- a/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/class_hierarchy_builder.dart
@@ -430,13 +430,17 @@
List<KernelTypeBuilder> interfaces;
+ int maxInheritancePath;
+
if (supernode == null) {
// This should be Object.
classMembers = localMembers;
classSetters = localSetters;
superclasses = new List<KernelTypeBuilder>(0);
interfaces = new List<KernelTypeBuilder>(0);
+ maxInheritancePath = 0;
} else {
+ maxInheritancePath = supernode.maxInheritancePath + 1;
superclasses =
new List<KernelTypeBuilder>(supernode.superclasses.length + 1);
superclasses.setRange(0, superclasses.length - 1,
@@ -479,19 +483,23 @@
}
}
for (int i = 0; i < directInterfaces.length; i++) {
- addInterface(interfaces, superclasses, directInterfaces[i]);
+ KernelTypeBuilder directInterface = directInterfaces[i];
+ addInterface(interfaces, superclasses, directInterface);
ClassHierarchyNode interfaceNode =
- hierarchy.getNodeFromType(directInterfaces[i]);
+ hierarchy.getNodeFromType(directInterface);
if (interfaceNode != null) {
- List<KernelTypeBuilder> types = substSupertypes(
- directInterfaces[i], interfaceNode.superclasses);
+ if (maxInheritancePath < interfaceNode.maxInheritancePath + 1) {
+ maxInheritancePath = interfaceNode.maxInheritancePath + 1;
+ }
+ List<KernelTypeBuilder> types =
+ substSupertypes(directInterface, interfaceNode.superclasses);
for (int i = 0; i < types.length; i++) {
addInterface(interfaces, superclasses, types[i]);
}
if (interfaceNode.interfaces != null) {
- List<KernelTypeBuilder> types = substSupertypes(
- directInterfaces[i], interfaceNode.interfaces);
+ List<KernelTypeBuilder> types =
+ substSupertypes(directInterface, interfaceNode.interfaces);
for (int i = 0; i < types.length; i++) {
addInterface(interfaces, superclasses, types[i]);
}
@@ -535,6 +543,7 @@
interfaceSetters,
superclasses,
interfaces,
+ maxInheritancePath,
);
}
@@ -843,6 +852,9 @@
/// any classes from [superclasses].
final List<KernelTypeBuilder> interfaces;
+ /// The longest inheritance path from [cls] to `Object`.
+ final int maxInheritancePath;
+
int get depth => superclasses.length;
ClassHierarchyNode(
@@ -852,14 +864,20 @@
this.interfaceMembers,
this.interfaceSetters,
this.superclasses,
- this.interfaces);
+ this.interfaces,
+ this.maxInheritancePath);
String toString([StringBuffer sb]) {
sb ??= new StringBuffer();
sb
..write(cls.fullNameForErrors)
- ..writeln(":")
- ..writeln(" superclasses:");
+ ..writeln(":");
+ if (maxInheritancePath != this.depth) {
+ sb
+ ..write(" Longest path to Object: ")
+ ..writeln(maxInheritancePath);
+ }
+ sb..writeln(" superclasses:");
int depth = 0;
for (KernelTypeBuilder superclass in superclasses) {
sb.write(" " * (depth + 2));
diff --git a/pkg/front_end/test/fasta/types/dill_hierachy_test.dart b/pkg/front_end/test/fasta/types/dill_hierachy_test.dart
index da9048f..31304d3 100644
--- a/pkg/front_end/test/fasta/types/dill_hierachy_test.dart
+++ b/pkg/front_end/test/fasta/types/dill_hierachy_test.dart
@@ -46,6 +46,7 @@
classSetters:
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -55,6 +56,7 @@
interfaceSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -64,6 +66,7 @@
interfaceSetters:
D:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B<T>, A, C<U>
@@ -73,6 +76,7 @@
interfaceSetters:
E:
+ Longest path to Object: 4
superclasses:
Object
interfaces: D<int, double>, B<int>, A, C<double>
@@ -82,6 +86,7 @@
interfaceSetters:
F:
+ Longest path to Object: 4
superclasses:
Object
interfaces: D<int, bool>, B<int>, A, C<bool>
diff --git a/pkg/front_end/testcases/abstract_members.dart.hierarchy.expect b/pkg/front_end/testcases/abstract_members.dart.hierarchy.expect
index dad4f9b..231e9e1 100644
--- a/pkg/front_end/testcases/abstract_members.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/abstract_members.dart.hierarchy.expect
@@ -75,6 +75,7 @@
classSetters:
A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Interface1, Interface2, Interface3
@@ -118,6 +119,7 @@
A.property2
B:
+ Longest path to Object: 3
superclasses:
Object
-> A
@@ -166,6 +168,7 @@
A.property2
MyClass:
+ Longest path to Object: 4
superclasses:
Object
-> A
@@ -221,6 +224,7 @@
MyClass.property2
MyMock1:
+ Longest path to Object: 4
superclasses:
Object
-> A
@@ -270,6 +274,7 @@
A.property2
MyMock2:
+ Longest path to Object: 5
superclasses:
Object
-> A
@@ -320,6 +325,7 @@
A.property2
MyMock3:
+ Longest path to Object: 4
superclasses:
Object
-> A
diff --git a/pkg/front_end/testcases/bug32426.dart.hierarchy.expect b/pkg/front_end/testcases/bug32426.dart.hierarchy.expect
index 9e96032..b816c89 100644
--- a/pkg/front_end/testcases/bug32426.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/bug32426.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I
diff --git a/pkg/front_end/testcases/bug32866.dart.hierarchy.expect b/pkg/front_end/testcases/bug32866.dart.hierarchy.expect
index 74b5528..ec9f23e 100644
--- a/pkg/front_end/testcases/bug32866.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/bug32866.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
diff --git a/pkg/front_end/testcases/bug33099.dart.hierarchy.expect b/pkg/front_end/testcases/bug33099.dart.hierarchy.expect
index 883d29c..443af04 100644
--- a/pkg/front_end/testcases/bug33099.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/bug33099.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
Object with MyTest:
+ Longest path to Object: 2
superclasses:
Object
interfaces: MyTest
@@ -85,6 +86,7 @@
interfaceSetters:
MyTest2:
+ Longest path to Object: 3
superclasses:
Object
-> _MyTest2&Object&MyTest
diff --git a/pkg/front_end/testcases/bug34511.dart.hierarchy.expect b/pkg/front_end/testcases/bug34511.dart.hierarchy.expect
index 60cd20b..57d451c 100644
--- a/pkg/front_end/testcases/bug34511.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/bug34511.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
Object with A<() -> Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A<() -> Z>
@@ -65,6 +66,7 @@
interfaceSetters:
B:
+ Longest path to Object: 3
superclasses:
Object
-> _B&Object&A<Z>
diff --git a/pkg/front_end/testcases/clone_function_type.dart.hierarchy.expect b/pkg/front_end/testcases/clone_function_type.dart.hierarchy.expect
index aa9301e..49f41ab 100644
--- a/pkg/front_end/testcases/clone_function_type.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/clone_function_type.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
Object with Am1<(null) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(null) -> null, Z>
@@ -65,6 +66,7 @@
interfaceSetters:
Bm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Bm1&Object&Am1<Z>
@@ -95,6 +97,7 @@
interfaceSetters:
Object with Am1<(x) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(x) -> null, Z>
@@ -124,6 +127,7 @@
interfaceSetters:
Cm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Cm1&Object&Am1<Z>
@@ -154,6 +158,7 @@
interfaceSetters:
Object with Am1<() -> int, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> int, Z>
@@ -183,6 +188,7 @@
interfaceSetters:
Dm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Dm1&Object&Am1<Z>
@@ -213,6 +219,7 @@
interfaceSetters:
Object with Am1<() -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> null, Z>
@@ -242,6 +249,7 @@
interfaceSetters:
Em1:
+ Longest path to Object: 3
superclasses:
Object
-> _Em1&Object&Am1<Z>
@@ -272,6 +280,7 @@
interfaceSetters:
Object with Am1<() -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> null, Z>
@@ -301,6 +310,7 @@
interfaceSetters:
Fm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Fm1&Object&Am1<Z>
@@ -331,6 +341,7 @@
interfaceSetters:
Object with Am1<(x) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(x) -> null, Z>
@@ -360,6 +371,7 @@
interfaceSetters:
Gm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Gm1&Object&Am1<Z>
@@ -390,6 +402,7 @@
interfaceSetters:
Object with Am1<(null) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(null) -> null, Z>
@@ -419,6 +432,7 @@
interfaceSetters:
Hm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Hm1&Object&Am1<Z>
@@ -449,6 +463,7 @@
interfaceSetters:
Object with Am1<(x) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(x) -> null, Z>
@@ -478,6 +493,7 @@
interfaceSetters:
Im1:
+ Longest path to Object: 3
superclasses:
Object
-> _Im1&Object&Am1<Z>
@@ -508,6 +524,7 @@
interfaceSetters:
Object with Am1<Function, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<Function, Z>
@@ -537,6 +554,7 @@
interfaceSetters:
Jm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Jm1&Object&Am1<Z>
@@ -567,6 +585,7 @@
interfaceSetters:
Object with Am1<(Function) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(Function) -> null, Z>
@@ -596,6 +615,7 @@
interfaceSetters:
Km1:
+ Longest path to Object: 3
superclasses:
Object
-> _Km1&Object&Am1<Z>
@@ -626,6 +646,7 @@
interfaceSetters:
Object with Am1<() -> (Function) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> (Function) -> null, Z>
@@ -655,6 +676,7 @@
interfaceSetters:
Lm1:
+ Longest path to Object: 3
superclasses:
Object
-> _Lm1&Object&Am1<Z>
@@ -685,6 +707,7 @@
interfaceSetters:
Mm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(null) -> null, Z>
@@ -714,6 +737,7 @@
interfaceSetters:
Nm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(x) -> null, Z>
@@ -743,6 +767,7 @@
interfaceSetters:
Om1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> int, Z>
@@ -772,6 +797,7 @@
interfaceSetters:
Pm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> null, Z>
@@ -801,6 +827,7 @@
interfaceSetters:
Qm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> null, Z>
@@ -830,6 +857,7 @@
interfaceSetters:
Rm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(x) -> null, Z>
@@ -859,6 +887,7 @@
interfaceSetters:
Sm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(null) -> null, Z>
@@ -888,6 +917,7 @@
interfaceSetters:
Tm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(x) -> null, Z>
@@ -917,6 +947,7 @@
interfaceSetters:
Um1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<Function, Z>
@@ -946,6 +977,7 @@
interfaceSetters:
Vm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<(Function) -> null, Z>
@@ -975,6 +1007,7 @@
interfaceSetters:
Wm1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am1<() -> (Function) -> null, Z>
@@ -1021,6 +1054,7 @@
classSetters:
Object with Am2<(null) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(null) -> null, Z>
@@ -1050,6 +1084,7 @@
interfaceSetters:
Bm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Bm2&Object&Am2<Z>
@@ -1080,6 +1115,7 @@
interfaceSetters:
Object with Am2<(x) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(x) -> null, Z>
@@ -1109,6 +1145,7 @@
interfaceSetters:
Cm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Cm2&Object&Am2<Z>
@@ -1139,6 +1176,7 @@
interfaceSetters:
Object with Am2<() -> int, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> int, Z>
@@ -1168,6 +1206,7 @@
interfaceSetters:
Dm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Dm2&Object&Am2<Z>
@@ -1198,6 +1237,7 @@
interfaceSetters:
Object with Am2<() -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> null, Z>
@@ -1227,6 +1267,7 @@
interfaceSetters:
Em2:
+ Longest path to Object: 3
superclasses:
Object
-> _Em2&Object&Am2<Z>
@@ -1257,6 +1298,7 @@
interfaceSetters:
Object with Am2<() -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> null, Z>
@@ -1286,6 +1328,7 @@
interfaceSetters:
Fm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Fm2&Object&Am2<Z>
@@ -1316,6 +1359,7 @@
interfaceSetters:
Object with Am2<(x) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(x) -> null, Z>
@@ -1345,6 +1389,7 @@
interfaceSetters:
Gm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Gm2&Object&Am2<Z>
@@ -1375,6 +1420,7 @@
interfaceSetters:
Object with Am2<(null) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(null) -> null, Z>
@@ -1404,6 +1450,7 @@
interfaceSetters:
Hm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Hm2&Object&Am2<Z>
@@ -1434,6 +1481,7 @@
interfaceSetters:
Object with Am2<(x) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(x) -> null, Z>
@@ -1463,6 +1511,7 @@
interfaceSetters:
Im2:
+ Longest path to Object: 3
superclasses:
Object
-> _Im2&Object&Am2<Z>
@@ -1493,6 +1542,7 @@
interfaceSetters:
Object with Am2<Function, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<Function, Z>
@@ -1522,6 +1572,7 @@
interfaceSetters:
Jm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Jm2&Object&Am2<Z>
@@ -1552,6 +1603,7 @@
interfaceSetters:
Object with Am2<(Function) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(Function) -> null, Z>
@@ -1581,6 +1633,7 @@
interfaceSetters:
Km2:
+ Longest path to Object: 3
superclasses:
Object
-> _Km2&Object&Am2<Z>
@@ -1611,6 +1664,7 @@
interfaceSetters:
Object with Am2<() -> (Function) -> null, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> (Function) -> null, Z>
@@ -1640,6 +1694,7 @@
interfaceSetters:
Lm2:
+ Longest path to Object: 3
superclasses:
Object
-> _Lm2&Object&Am2<Z>
@@ -1670,6 +1725,7 @@
interfaceSetters:
Mm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(null) -> null, Z>
@@ -1699,6 +1755,7 @@
interfaceSetters:
Nm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(x) -> null, Z>
@@ -1728,6 +1785,7 @@
interfaceSetters:
Om2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> int, Z>
@@ -1757,6 +1815,7 @@
interfaceSetters:
Pm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> null, Z>
@@ -1786,6 +1845,7 @@
interfaceSetters:
Qm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> null, Z>
@@ -1815,6 +1875,7 @@
interfaceSetters:
Rm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(x) -> null, Z>
@@ -1844,6 +1905,7 @@
interfaceSetters:
Sm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(null) -> null, Z>
@@ -1873,6 +1935,7 @@
interfaceSetters:
Tm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(x) -> null, Z>
@@ -1902,6 +1965,7 @@
interfaceSetters:
Um2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<Function, Z>
@@ -1931,6 +1995,7 @@
interfaceSetters:
Vm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<(Function) -> null, Z>
@@ -1960,6 +2025,7 @@
interfaceSetters:
Wm2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am2<() -> (Function) -> null, Z>
@@ -2006,6 +2072,7 @@
classSetters:
Object with Am3<TdB, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdB, Z>
@@ -2035,6 +2102,7 @@
interfaceSetters:
Bm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Bm3&Object&Am3<Z>
@@ -2065,6 +2133,7 @@
interfaceSetters:
Object with Am3<TdC, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdC, Z>
@@ -2094,6 +2163,7 @@
interfaceSetters:
Cm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Cm3&Object&Am3<Z>
@@ -2124,6 +2194,7 @@
interfaceSetters:
Object with Am3<TdD, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdD, Z>
@@ -2153,6 +2224,7 @@
interfaceSetters:
Dm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Dm3&Object&Am3<Z>
@@ -2183,6 +2255,7 @@
interfaceSetters:
Object with Am3<TdE, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdE, Z>
@@ -2212,6 +2285,7 @@
interfaceSetters:
Em3:
+ Longest path to Object: 3
superclasses:
Object
-> _Em3&Object&Am3<Z>
@@ -2242,6 +2316,7 @@
interfaceSetters:
Object with Am3<TdF, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdF, Z>
@@ -2271,6 +2346,7 @@
interfaceSetters:
Fm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Fm3&Object&Am3<Z>
@@ -2301,6 +2377,7 @@
interfaceSetters:
Object with Am3<TdG, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdG, Z>
@@ -2330,6 +2407,7 @@
interfaceSetters:
Gm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Gm3&Object&Am3<Z>
@@ -2360,6 +2438,7 @@
interfaceSetters:
Object with Am3<TdH, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdH, Z>
@@ -2389,6 +2468,7 @@
interfaceSetters:
Hm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Hm3&Object&Am3<Z>
@@ -2419,6 +2499,7 @@
interfaceSetters:
Object with Am3<TdI, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdI, Z>
@@ -2448,6 +2529,7 @@
interfaceSetters:
Im3:
+ Longest path to Object: 3
superclasses:
Object
-> _Im3&Object&Am3<Z>
@@ -2478,6 +2560,7 @@
interfaceSetters:
Object with Am3<TdJ, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdJ, Z>
@@ -2507,6 +2590,7 @@
interfaceSetters:
Jm3:
+ Longest path to Object: 3
superclasses:
Object
-> _Jm3&Object&Am3<Z>
@@ -2537,6 +2621,7 @@
interfaceSetters:
Object with Am3<TdK, Z>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Am3<TdK, Z>
@@ -2566,6 +2651,7 @@
interfaceSetters:
Km3:
+ Longest path to Object: 3
superclasses:
Object
-> _Km3&Object&Am3<Z>
diff --git a/pkg/front_end/testcases/complex_class_hierarchy.dart.hierarchy.expect b/pkg/front_end/testcases/complex_class_hierarchy.dart.hierarchy.expect
index b3c7b13..954670d 100644
--- a/pkg/front_end/testcases/complex_class_hierarchy.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/complex_class_hierarchy.dart.hierarchy.expect
@@ -164,6 +164,7 @@
classSetters:
X:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -193,6 +194,7 @@
interfaceSetters:
Y:
+ Longest path to Object: 3
superclasses:
Object
-> X
@@ -223,6 +225,7 @@
interfaceSetters:
Z:
+ Longest path to Object: 4
superclasses:
Object
interfaces: Y, X, A
@@ -252,6 +255,7 @@
interfaceSetters:
W:
+ Longest path to Object: 5
superclasses:
Object
interfaces: Z, Y, X, A
@@ -281,6 +285,7 @@
interfaceSetters:
GX:
+ Longest path to Object: 2
superclasses:
Object
interfaces: G<A>
@@ -310,6 +315,7 @@
interfaceSetters:
GY:
+ Longest path to Object: 3
superclasses:
Object
-> X
@@ -340,6 +346,7 @@
interfaceSetters:
GZ:
+ Longest path to Object: 4
superclasses:
Object
interfaces: Y, X, A, GC, G<C>
@@ -369,6 +376,7 @@
interfaceSetters:
GW:
+ Longest path to Object: 5
superclasses:
Object
interfaces: Z, Y, X, A, GD, G<D>
@@ -398,6 +406,7 @@
interfaceSetters:
GU:
+ Longest path to Object: 6
superclasses:
Object
-> GW
@@ -428,6 +437,7 @@
interfaceSetters:
GV:
+ Longest path to Object: 7
superclasses:
Object
-> GW
diff --git a/pkg/front_end/testcases/escape.dart.hierarchy.expect b/pkg/front_end/testcases/escape.dart.hierarchy.expect
index 07af593..6fbadf9 100644
--- a/pkg/front_end/testcases/escape.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/escape.dart.hierarchy.expect
@@ -74,6 +74,7 @@
classSetters:
X:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A, B
diff --git a/pkg/front_end/testcases/function_type_is_check.dart.hierarchy.expect b/pkg/front_end/testcases/function_type_is_check.dart.hierarchy.expect
index 98d4425..ea0ab2f 100644
--- a/pkg/front_end/testcases/function_type_is_check.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/function_type_is_check.dart.hierarchy.expect
@@ -94,6 +94,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/implicit_scope_test.dart.hierarchy.expect b/pkg/front_end/testcases/implicit_scope_test.dart.hierarchy.expect
index 336c761..671b394 100644
--- a/pkg/front_end/testcases/implicit_scope_test.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/implicit_scope_test.dart.hierarchy.expect
@@ -113,6 +113,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/inference/async_await.dart.hierarchy.expect b/pkg/front_end/testcases/inference/async_await.dart.hierarchy.expect
index 494e3cb..8a18ee5 100644
--- a/pkg/front_end/testcases/inference/async_await.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/async_await.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<int>
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.hierarchy.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.hierarchy.expect
index 0590bd0..10cabb6 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_redirecting_factory_to_factory.dart.hierarchy.expect
@@ -40,6 +40,7 @@
C._redirecting#
CImpl:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C<T>
diff --git a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.hierarchy.expect b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.hierarchy.expect
index 824f22f..2549864 100644
--- a/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/downwards_context_from_inferred_field_type.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
diff --git a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.hierarchy.expect b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.hierarchy.expect
index 00b2c95..dc148c5 100644
--- a/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/field_initializer_context_implicit.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
diff --git a/pkg/front_end/testcases/inference/future_then.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_2.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_3.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_4.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_5.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_6.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.hierarchy.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.hierarchy.expect
index 06d97d1..89a66e0 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.hierarchy.expect
@@ -48,6 +48,7 @@
classSetters:
MyFuture:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Future<T>
diff --git a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.hierarchy.expect
index 0d0e29f..1e44eee 100644
--- a/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_accessor_from_later_inferred_field.dart.hierarchy.expect
@@ -38,6 +38,7 @@
B.x
A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.hierarchy.expect
index 0d0e29f..1e44eee 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_field.dart.hierarchy.expect
@@ -38,6 +38,7 @@
B.x
A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.hierarchy.expect
index fab6c77..245115c 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_getter.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C
@@ -68,6 +69,7 @@
interfaceSetters:
A:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B, C
diff --git a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.hierarchy.expect
index 06440ff..167ba88 100644
--- a/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_from_later_inferred_setter.dart.hierarchy.expect
@@ -37,6 +37,7 @@
C.x
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C
@@ -68,6 +69,7 @@
B.x
A:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B, C
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.hierarchy.expect
index d7a8370..26fee5a 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.hierarchy.expect
@@ -95,6 +95,7 @@
D.x
E:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -128,6 +129,7 @@
E.x
F:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
@@ -161,6 +163,7 @@
F.x
Object with B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
@@ -192,6 +195,7 @@
interfaceSetters:
G:
+ Longest path to Object: 3
superclasses:
Object
-> _G&Object&B
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.hierarchy.expect
index 20d7855..66315ee 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.hierarchy.expect
@@ -95,6 +95,7 @@
D.x
E:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -128,6 +129,7 @@
E.x
F:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
@@ -161,6 +163,7 @@
F.x
Object with B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
@@ -192,6 +195,7 @@
B.x
G:
+ Longest path to Object: 3
superclasses:
Object
-> _G&Object&B
diff --git a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.hierarchy.expect
index 31b4162..559c5bd 100644
--- a/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_getter_from_later_inferred_getter.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C
@@ -68,6 +69,7 @@
interfaceSetters:
A:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B, C
diff --git a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.hierarchy.expect
index 69c8242..ecf08eb 100644
--- a/pkg/front_end/testcases/inference/infer_method_missing_params.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_method_missing_params.dart.hierarchy.expect
@@ -59,6 +59,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A, B
diff --git a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.hierarchy.expect b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.hierarchy.expect
index 368c13e..2543994 100644
--- a/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/infer_setter_from_later_inferred_setter.dart.hierarchy.expect
@@ -37,6 +37,7 @@
C.x
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C
@@ -68,6 +69,7 @@
B.x
A:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B, C
diff --git a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.hierarchy.expect b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.hierarchy.expect
index f852cff..9ae2e27 100644
--- a/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.hierarchy.expect
@@ -55,6 +55,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I1, I2
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.hierarchy.expect
index 06b9b49..b21414f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<int>
@@ -83,6 +84,7 @@
interfaceSetters:
M1 with M0<int, String>:
+ Longest path to Object: 3
superclasses:
Object
-> M1
@@ -113,6 +115,7 @@
interfaceSetters:
A:
+ Longest path to Object: 4
superclasses:
Object
-> M1
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.hierarchy.expect
index 3f48b79..6d65499 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<int>
@@ -83,6 +84,7 @@
interfaceSetters:
M1 with M0<int, int>:
+ Longest path to Object: 3
superclasses:
Object
-> M1
@@ -113,6 +115,7 @@
interfaceSetters:
A:
+ Longest path to Object: 4
superclasses:
Object
-> M1
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.hierarchy.expect
index 7daaa837..88712a2 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<int>
@@ -83,6 +84,7 @@
interfaceSetters:
M1 with M0<int, Comparable<dynamic>>:
+ Longest path to Object: 3
superclasses:
Object
-> M1
@@ -113,6 +115,7 @@
interfaceSetters:
A:
+ Longest path to Object: 4
superclasses:
Object
-> M1
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.hierarchy.expect
index eebc3a2..3e686b6 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.hierarchy.expect
@@ -114,6 +114,7 @@
interfaceSetters:
M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<int>
@@ -143,6 +144,7 @@
interfaceSetters:
M2:
+ Longest path to Object: 3
superclasses:
Object
-> M1
@@ -173,6 +175,7 @@
interfaceSetters:
M2 with M0<int, double>:
+ Longest path to Object: 4
superclasses:
Object
-> M1
@@ -204,6 +207,7 @@
interfaceSetters:
A:
+ Longest path to Object: 5
superclasses:
Object
-> M1
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.hierarchy.expect
index 45aa225..74bb85d 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
M0:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<T>
@@ -83,6 +84,7 @@
classSetters:
Object with M0<dynamic>:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M0<dynamic>, I<dynamic>
@@ -112,6 +114,7 @@
interfaceSetters:
_A&Object&M0 with M1<int>:
+ Longest path to Object: 4
superclasses:
Object
-> _A&Object&M0
@@ -142,6 +145,7 @@
interfaceSetters:
A:
+ Longest path to Object: 5
superclasses:
Object
-> _A&Object&M0
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.hierarchy.expect
index 1d1e2f0..d2343d3 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
M0:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<T>
@@ -83,6 +84,7 @@
classSetters:
Object with M0<dynamic>:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M0<dynamic>, I<dynamic>
@@ -112,6 +114,7 @@
interfaceSetters:
_A&Object&M0 with M1<dynamic>:
+ Longest path to Object: 4
superclasses:
Object
-> _A&Object&M0
@@ -142,6 +145,7 @@
interfaceSetters:
A:
+ Longest path to Object: 5
superclasses:
Object
-> _A&Object&M0
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.hierarchy.expect
index 9e4e1b8..fb14a36 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
M0:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<T, int>
@@ -65,6 +66,7 @@
interfaceSetters:
M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<String, T>
@@ -94,6 +96,7 @@
interfaceSetters:
Object with M0<dynamic>:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M0<dynamic>, I<dynamic, int>
@@ -123,6 +126,7 @@
interfaceSetters:
_A&Object&M0 with M1<dynamic>:
+ Longest path to Object: 4
superclasses:
Object
-> _A&Object&M0
@@ -153,6 +157,7 @@
interfaceSetters:
A:
+ Longest path to Object: 5
superclasses:
Object
-> _A&Object&M0
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.hierarchy.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.hierarchy.expect
index e8cc39f..f1f8e8d 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
M0:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<T, List<T>>
@@ -65,6 +66,7 @@
interfaceSetters:
M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<List<T>, T>
@@ -94,6 +96,7 @@
interfaceSetters:
Object with M0<dynamic>:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M0<dynamic>, I<dynamic, List<dynamic>>
@@ -123,6 +126,7 @@
interfaceSetters:
_A&Object&M0 with M1<dynamic>:
+ Longest path to Object: 4
superclasses:
Object
-> _A&Object&M0
@@ -153,6 +157,7 @@
interfaceSetters:
A:
+ Longest path to Object: 5
superclasses:
Object
-> _A&Object&M0
diff --git a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.hierarchy.expect b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.hierarchy.expect
index 4e3fcb5..f92d773 100644
--- a/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference_new/multiple_interface_inheritance.dart.hierarchy.expect
@@ -55,6 +55,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I1, I2
@@ -85,6 +86,7 @@
interfaceSetters:
D:
+ Longest path to Object: 3
superclasses:
Object
-> C
@@ -117,6 +119,7 @@
interfaceSetters:
E:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I2, I1
@@ -147,6 +150,7 @@
interfaceSetters:
F:
+ Longest path to Object: 3
superclasses:
Object
-> E
diff --git a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.hierarchy.expect b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.hierarchy.expect
index a0eaeca..00d3da3 100644
--- a/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/inference_new/top_level_field_depends_on_multiple_inheritance.dart.hierarchy.expect
@@ -127,6 +127,7 @@
classSetters:
G:
+ Longest path to Object: 2
superclasses:
Object
interfaces: D, E, F
@@ -157,6 +158,7 @@
interfaceSetters:
H:
+ Longest path to Object: 3
superclasses:
Object
-> G
diff --git a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.hierarchy.expect b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.hierarchy.expect
index 1931b4d..d958962 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/supertypes.dart.hierarchy.expect
@@ -146,6 +146,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/mixin.dart.hierarchy.expect b/pkg/front_end/testcases/mixin.dart.hierarchy.expect
index a86326c..7b25a03 100644
--- a/pkg/front_end/testcases/mixin.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/mixin.dart.hierarchy.expect
@@ -55,6 +55,7 @@
classSetters:
Object with M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M1
@@ -86,6 +87,7 @@
interfaceSetters:
_C&Object&M1 with M2:
+ Longest path to Object: 3
superclasses:
Object
-> _C&Object&M1
@@ -118,6 +120,7 @@
interfaceSetters:
C:
+ Longest path to Object: 4
superclasses:
Object
-> _C&Object&M1
@@ -169,6 +172,7 @@
classSetters:
Object with G1<S>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: G1<S>
@@ -200,6 +204,7 @@
interfaceSetters:
D:
+ Longest path to Object: 3
superclasses:
Object
-> _D&Object&G1<S>
@@ -232,6 +237,7 @@
interfaceSetters:
Object with M1:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M1
@@ -263,6 +269,7 @@
interfaceSetters:
_B&Object&M1 with M2:
+ Longest path to Object: 3
superclasses:
Object
-> _B&Object&M1
@@ -295,6 +302,7 @@
interfaceSetters:
B:
+ Longest path to Object: 4
superclasses:
Object
-> _B&Object&M1
diff --git a/pkg/front_end/testcases/mixin_conflicts.dart.hierarchy.expect b/pkg/front_end/testcases/mixin_conflicts.dart.hierarchy.expect
index d311de4..8999f35 100644
--- a/pkg/front_end/testcases/mixin_conflicts.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/mixin_conflicts.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
N:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M
@@ -68,6 +69,7 @@
interfaceSetters:
Object with N:
+ Longest path to Object: 3
superclasses:
Object
interfaces: N, M
@@ -99,6 +101,7 @@
interfaceSetters:
C:
+ Longest path to Object: 4
superclasses:
Object
-> _C&Object&N
@@ -131,6 +134,7 @@
interfaceSetters:
M2:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M
@@ -163,6 +167,7 @@
interfaceSetters:
N2:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M2, M
@@ -195,6 +200,7 @@
interfaceSetters:
N3:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M2, M
@@ -227,6 +233,7 @@
interfaceSetters:
Object with M2:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M2, M
@@ -259,6 +266,7 @@
interfaceSetters:
C2:
+ Longest path to Object: 4
superclasses:
Object
-> _C2&Object&M2
@@ -292,6 +300,7 @@
interfaceSetters:
Object with M2:
+ Longest path to Object: 3
superclasses:
Object
interfaces: M2, M
@@ -324,6 +333,7 @@
interfaceSetters:
C3:
+ Longest path to Object: 4
superclasses:
Object
-> _C3&Object&M2
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.hierarchy.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.hierarchy.expect
index 78bd7cb..d5c1ed0 100644
--- a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.hierarchy.expect
@@ -268,6 +268,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.hierarchy.expect b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.hierarchy.expect
index 56969f8..85f7304 100644
--- a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.hierarchy.expect
@@ -77,6 +77,7 @@
C._field
Object with C<B>:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C<B>
@@ -112,6 +113,7 @@
C._field
Foo:
+ Longest path to Object: 3
superclasses:
Object
-> _Foo&Object&C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.hierarchy.expect
index 0482f3b..7f7d266 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field.dart.hierarchy.expect
@@ -38,6 +38,7 @@
I.foo
A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I
@@ -69,6 +70,7 @@
I.foo
B:
+ Longest path to Object: 3
superclasses:
Object
-> A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.hierarchy.expect
index 785f78b..018c929 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.hierarchy.expect
@@ -38,6 +38,7 @@
A.foo
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -69,6 +70,7 @@
A.foo
Object with B:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B, A
@@ -100,6 +102,7 @@
A.foo
C:
+ Longest path to Object: 4
superclasses:
Object
-> _C&Object&B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.hierarchy.expect
index 20bc332..f9e9b82 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_one_defined.dart.hierarchy.expect
@@ -38,6 +38,7 @@
A.foo
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -70,6 +71,7 @@
A.foo
C:
+ Longest path to Object: 3
superclasses:
Object
-> B
@@ -103,6 +105,7 @@
A.foo
D:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -135,6 +138,7 @@
D.foo
E:
+ Longest path to Object: 3
superclasses:
Object
-> D
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.hierarchy.expect
index 71bf144..22986a4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_with_substitution.dart.hierarchy.expect
@@ -38,6 +38,7 @@
A.foo
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A<int>
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.hierarchy.expect
index 5b5669e..a38db13 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.hierarchy.expect
@@ -55,6 +55,7 @@
classSetters:
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I
@@ -85,6 +86,7 @@
interfaceSetters:
A with B:
+ Longest path to Object: 3
superclasses:
Object
-> A
@@ -117,6 +119,7 @@
interfaceSetters:
C:
+ Longest path to Object: 4
superclasses:
Object
-> A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.hierarchy.expect
index c3d12b3..6f90578 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/duplicated_abstract_method.dart.hierarchy.expect
@@ -55,6 +55,7 @@
classSetters:
M:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I1, I2
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.hierarchy.expect
index 2cea300..38e9a5f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I
@@ -67,6 +68,7 @@
interfaceSetters:
Object with A:
+ Longest path to Object: 3
superclasses:
Object
interfaces: A, I
@@ -97,6 +99,7 @@
interfaceSetters:
B:
+ Longest path to Object: 4
superclasses:
Object
-> _B&Object&A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.hierarchy.expect
index 8b453b8..84d907a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
Object with M:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M
@@ -83,6 +84,7 @@
interfaceSetters:
A:
+ Longest path to Object: 3
superclasses:
Object
-> _A&Object&M
@@ -114,6 +116,7 @@
interfaceSetters:
Object with M:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M
@@ -143,6 +146,7 @@
interfaceSetters:
B:
+ Longest path to Object: 3
superclasses:
Object
-> _B&Object&M
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.hierarchy.expect
index 254f85b..e270c79 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.hierarchy.expect
@@ -36,6 +36,7 @@
classSetters:
Object with A:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -65,6 +66,7 @@
interfaceSetters:
B:
+ Longest path to Object: 3
superclasses:
Object
-> _B&Object&A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.hierarchy.expect
index 3227a6f..29f5d07 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
Object with M:
+ Longest path to Object: 2
superclasses:
Object
interfaces: M
@@ -83,6 +84,7 @@
interfaceSetters:
A:
+ Longest path to Object: 3
superclasses:
Object
-> _A&Object&M
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.hierarchy.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.hierarchy.expect
index dba9cc0..95cc6fb 100644
--- a/pkg/front_end/testcases/no_such_method_private_setter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.hierarchy.expect
@@ -38,6 +38,7 @@
Bar._x
Foo:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Bar
diff --git a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.hierarchy.expect b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.hierarchy.expect
index 98db882..d53d249 100644
--- a/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/override_check_generic_method_f_bounded.dart.hierarchy.expect
@@ -54,6 +54,7 @@
classSetters:
Hest:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Bar
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.hierarchy.expect b/pkg/front_end/testcases/private_method_tearoff.dart.hierarchy.expect
index 6906912..c696ebc 100644
--- a/pkg/front_end/testcases/private_method_tearoff.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
Foo:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Bar
@@ -67,6 +68,7 @@
interfaceSetters:
Baz:
+ Longest path to Object: 3
superclasses:
Object
-> Foo
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.hierarchy.expect
index ee525c0..8d71816 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.hierarchy.expect
@@ -38,6 +38,7 @@
Mixin.field
Object with Mixin:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Mixin
@@ -71,6 +72,7 @@
Mixin.field
_A&Object&Mixin with Mixin:
+ Longest path to Object: 3
superclasses:
Object
-> _A&Object&Mixin
@@ -105,6 +107,7 @@
Mixin.field
A:
+ Longest path to Object: 4
superclasses:
Object
-> _A&Object&Mixin
diff --git a/pkg/front_end/testcases/rasta/issue_000002.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/issue_000002.dart.hierarchy.expect
index 87c1e96..742f0d8 100644
--- a/pkg/front_end/testcases/rasta/issue_000002.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000002.dart.hierarchy.expect
@@ -112,6 +112,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/rasta/issue_000004.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/issue_000004.dart.hierarchy.expect
index 98d4425..ea0ab2f 100644
--- a/pkg/front_end/testcases/rasta/issue_000004.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000004.dart.hierarchy.expect
@@ -94,6 +94,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/rasta/issue_000067.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/issue_000067.dart.hierarchy.expect
index 705a7e3..d02f304 100644
--- a/pkg/front_end/testcases/rasta/issue_000067.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000067.dart.hierarchy.expect
@@ -155,6 +155,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/rasta/issue_000068.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/issue_000068.dart.hierarchy.expect
index 9a18fb1..f0084c7 100644
--- a/pkg/front_end/testcases/rasta/issue_000068.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000068.dart.hierarchy.expect
@@ -165,6 +165,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/rasta/issue_000070.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/issue_000070.dart.hierarchy.expect
index c2b7ee7..2b503d4 100644
--- a/pkg/front_end/testcases/rasta/issue_000070.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000070.dart.hierarchy.expect
@@ -149,6 +149,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.hierarchy.expect
index 76d68ab..2d401aa0a 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.hierarchy.expect
@@ -39,6 +39,7 @@
Mixin.field
Object with Mixin:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Mixin
@@ -74,6 +75,7 @@
Mixin.field
Foo:
+ Longest path to Object: 3
superclasses:
Object
-> _Foo&Object&Mixin
diff --git a/pkg/front_end/testcases/rasta/parser_error.dart.hierarchy.expect b/pkg/front_end/testcases/rasta/parser_error.dart.hierarchy.expect
index 98d4425..ea0ab2f 100644
--- a/pkg/front_end/testcases/rasta/parser_error.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/rasta/parser_error.dart.hierarchy.expect
@@ -94,6 +94,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/redirecting_factory.dart.hierarchy.expect b/pkg/front_end/testcases/redirecting_factory.dart.hierarchy.expect
index a3bb376..e601475 100644
--- a/pkg/front_end/testcases/redirecting_factory.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/redirecting_factory.dart.hierarchy.expect
@@ -39,6 +39,7 @@
FooBase._redirecting#
Foo:
+ Longest path to Object: 2
superclasses:
Object
interfaces: FooBase
@@ -73,6 +74,7 @@
Foo._redirecting#
Bar:
+ Longest path to Object: 3
superclasses:
Object
interfaces: Foo<Tb>, FooBase
@@ -143,6 +145,7 @@
SimpleCase._redirecting#
SimpleCaseImpl:
+ Longest path to Object: 2
superclasses:
Object
interfaces: SimpleCase<Ai, Bi>
@@ -176,6 +179,7 @@
SimpleCaseImpl._redirecting#
SimpleCaseImpl2:
+ Longest path to Object: 3
superclasses:
Object
interfaces: SimpleCaseImpl<Ai2, Bi2>, SimpleCase<Ai2, Bi2>
diff --git a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.hierarchy.expect b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.hierarchy.expect
index 8645346..4985228 100644
--- a/pkg/front_end/testcases/redirecting_factory_const_inference.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/redirecting_factory_const_inference.dart.hierarchy.expect
@@ -38,6 +38,7 @@
_X._redirecting#
_Y:
+ Longest path to Object: 2
superclasses:
Object
interfaces: _X<T>
diff --git a/pkg/front_end/testcases/redirection_chain_type_arguments.dart.hierarchy.expect b/pkg/front_end/testcases/redirection_chain_type_arguments.dart.hierarchy.expect
index 6e0f389..139b76a 100644
--- a/pkg/front_end/testcases/redirection_chain_type_arguments.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/redirection_chain_type_arguments.dart.hierarchy.expect
@@ -152,6 +152,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/redirection_chain_type_arguments_subst.dart.hierarchy.expect b/pkg/front_end/testcases/redirection_chain_type_arguments_subst.dart.hierarchy.expect
index 6e0f389..139b76a 100644
--- a/pkg/front_end/testcases/redirection_chain_type_arguments_subst.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/redirection_chain_type_arguments_subst.dart.hierarchy.expect
@@ -152,6 +152,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/redirection_type_arguments.dart.hierarchy.expect b/pkg/front_end/testcases/redirection_type_arguments.dart.hierarchy.expect
index 80cea1b..c399d4d 100644
--- a/pkg/front_end/testcases/redirection_type_arguments.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/redirection_type_arguments.dart.hierarchy.expect
@@ -131,6 +131,7 @@
classSetters:
ExpectException:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Exception
diff --git a/pkg/front_end/testcases/regress/issue_31996.dart.hierarchy.expect b/pkg/front_end/testcases/regress/issue_31996.dart.hierarchy.expect
index 8e9e795..627064d 100644
--- a/pkg/front_end/testcases/regress/issue_31996.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/regress/issue_31996.dart.hierarchy.expect
@@ -53,6 +53,7 @@
classSetters:
Base:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B
@@ -82,6 +83,7 @@
interfaceSetters:
Child1:
+ Longest path to Object: 3
superclasses:
Object
-> Base
@@ -112,6 +114,7 @@
interfaceSetters:
Child2:
+ Longest path to Object: 3
superclasses:
Object
-> Base
diff --git a/pkg/front_end/testcases/regress/issue_35260.dart.hierarchy.expect b/pkg/front_end/testcases/regress/issue_35260.dart.hierarchy.expect
index 4158779..2c646a0 100644
--- a/pkg/front_end/testcases/regress/issue_35260.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/regress/issue_35260.dart.hierarchy.expect
@@ -38,6 +38,7 @@
Supertype._redirecting#
X:
+ Longest path to Object: 2
superclasses:
Object
interfaces: Supertype
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.hierarchy.expect
index 570f5d0..5eaaea6 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_parameter_in_interface.dart.hierarchy.expect
@@ -38,6 +38,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I<int>
@@ -71,6 +72,7 @@
interfaceSetters:
D:
+ Longest path to Object: 3
superclasses:
Object
-> C<U>
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.hierarchy.expect
index a0755f9..3142f9e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field.dart.hierarchy.expect
@@ -38,6 +38,7 @@
C.x
D:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C
@@ -71,6 +72,7 @@
D.x
E:
+ Longest path to Object: 3
superclasses:
Object
interfaces: D, C
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.hierarchy.expect
index a0755f9..3142f9e 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_field_inherited_by_setter.dart.hierarchy.expect
@@ -38,6 +38,7 @@
C.x
D:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C
@@ -71,6 +72,7 @@
D.x
E:
+ Longest path to Object: 3
superclasses:
Object
interfaces: D, C
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.hierarchy.expect
index 7a4dfeb..7242fb4 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_keyword_setter_inherited_by_field.dart.hierarchy.expect
@@ -56,6 +56,7 @@
D.x
E:
+ Longest path to Object: 3
superclasses:
Object
interfaces: D, C
diff --git a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.hierarchy.expect
index be3c79b..c37a550 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_covariance_inheritance_setter_field.dart.hierarchy.expect
@@ -39,6 +39,7 @@
C.x
D:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C<num>
@@ -76,6 +77,7 @@
D.x
E:
+ Longest path to Object: 2
superclasses:
Object
interfaces: C<num>
diff --git a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.hierarchy.expect
index 11d6411..7c05629 100644
--- a/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks/generic_vs_explicit_covariance.dart.hierarchy.expect
@@ -37,6 +37,7 @@
A.x
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A
@@ -72,6 +73,7 @@
B.x
C:
+ Longest path to Object: 3
superclasses:
Object
interfaces: B, A
diff --git a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.hierarchy.expect
index 7b54720..eb5ae02 100644
--- a/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/generic_covariance_based_on_inference.dart.hierarchy.expect
@@ -40,6 +40,7 @@
B.x
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B<num>
@@ -77,6 +78,7 @@
C.x
D:
+ Longest path to Object: 2
superclasses:
Object
interfaces: B<T>
diff --git a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantInterface_from_class.dart.hierarchy.expect b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantInterface_from_class.dart.hierarchy.expect
index 86cc21b..dfb9fc6 100644
--- a/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantInterface_from_class.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/stub_from_interface_covariantInterface_from_class.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
B:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A<F<T>>
@@ -68,6 +69,7 @@
interfaceSetters:
I:
+ Longest path to Object: 2
superclasses:
Object
interfaces: A<F<T>>
@@ -99,6 +101,7 @@
interfaceSetters:
C:
+ Longest path to Object: 3
superclasses:
Object
-> B<F<T>>
diff --git a/pkg/front_end/testcases/super_nsm.dart.hierarchy.expect b/pkg/front_end/testcases/super_nsm.dart.hierarchy.expect
index bfe9aef..368b420 100644
--- a/pkg/front_end/testcases/super_nsm.dart.hierarchy.expect
+++ b/pkg/front_end/testcases/super_nsm.dart.hierarchy.expect
@@ -37,6 +37,7 @@
classSetters:
C:
+ Longest path to Object: 2
superclasses:
Object
interfaces: I
@@ -67,6 +68,7 @@
interfaceSetters:
D:
+ Longest path to Object: 3
superclasses:
Object
-> C