Include superclasses of classes only needed for rti
Closes #29441 R=sigmund@google.com Review-Url: https://codereview.chromium.org/2842653003 .
This commit is contained in:
@@ -282,6 +282,8 @@ class Class implements FieldContainer {
|
||||
|
||||
int get superclassHolderIndex =>
|
||||
(superclass == null) ? 0 : superclass.holder.index;
|
||||
|
||||
String toString() => 'Class(${element.name})';
|
||||
}
|
||||
|
||||
class MixinApplication extends Class {
|
||||
|
||||
@@ -240,7 +240,13 @@ class Collector {
|
||||
// these are thought to not have been instantiated, so we neeed to be able
|
||||
// to identify them later and make sure we only emit "empty shells" without
|
||||
// fields, etc.
|
||||
classesOnlyNeededForRti = _rtiNeededClasses.difference(neededClasses);
|
||||
classesOnlyNeededForRti = new Set<ClassElement>();
|
||||
for (ClassElement cls in _rtiNeededClasses) {
|
||||
while (cls != null && !neededClasses.contains(cls)) {
|
||||
if (!classesOnlyNeededForRti.add(cls)) break;
|
||||
cls = cls.superclass;
|
||||
}
|
||||
}
|
||||
|
||||
neededClasses.addAll(classesOnlyNeededForRti);
|
||||
|
||||
|
||||
@@ -209,7 +209,9 @@ class ProgramBuilder {
|
||||
_classes.forEach((ClassElement element, Class c) {
|
||||
if (element.superclass != null) {
|
||||
c.setSuperclass(_classes[element.superclass]);
|
||||
assert(c.superclass != null);
|
||||
assert(invariant(element, c.superclass != null,
|
||||
message: "No Class for has been created for superclass "
|
||||
"${element.superclass} of $c."));
|
||||
}
|
||||
if (c is MixinApplication) {
|
||||
c.setMixinClass(_classes[computeMixinClass(element)]);
|
||||
|
||||
@@ -938,9 +938,3 @@ named_parameters_test/03: Crash # Issue 27394
|
||||
named_parameters_test/05: Crash # Issue 27394
|
||||
named_parameters_test/07: Crash # Issue 27394
|
||||
named_parameters_test/09: Crash # Issue 27394
|
||||
|
||||
[ $compiler == dart2js && $runtime == d8 && $host_checked == false && $checked && $fast_startup == false]
|
||||
mixin_type_parameter6_test: RuntimeError #29441
|
||||
|
||||
[ $compiler == dart2js && $runtime == d8 && $host_checked && $checked ]
|
||||
mixin_type_parameter6_test: Crash #29441
|
||||
|
||||
Reference in New Issue
Block a user