Index: pkg/compiler/lib/src/serialization/modelz.dart |
diff --git a/pkg/compiler/lib/src/serialization/modelz.dart b/pkg/compiler/lib/src/serialization/modelz.dart |
index ea6752aad9bf045a3f46539153a0e65459164e74..f451463297884791809b7d03797da8bdc30fe93a 100644 |
--- a/pkg/compiler/lib/src/serialization/modelz.dart |
+++ b/pkg/compiler/lib/src/serialization/modelz.dart |
@@ -1298,9 +1298,10 @@ class FactoryConstructorElementZ extends ConstructorElementZ { |
} |
class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { |
- InterfaceType _effectiveTargetType; |
+ DartType _effectiveTargetType; |
ConstructorElement _immediateRedirectionTarget; |
PrefixElement _redirectionDeferredPrefix; |
+ bool _effectiveTargetIsMalformed; |
RedirectingFactoryConstructorElementZ(ObjectDecoder decoder) : super(decoder); |
@@ -1317,12 +1318,20 @@ class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { |
if (_effectiveTarget == null) { |
_effectiveTarget = this; |
_effectiveTargetType = enclosingClass.thisType; |
+ _effectiveTargetIsMalformed = false; |
} else { |
_effectiveTargetType = _decoder.getType(Key.EFFECTIVE_TARGET_TYPE); |
+ _effectiveTargetIsMalformed = |
+ _decoder.getBool(Key.EFFECTIVE_TARGET_IS_MALFORMED); |
} |
} |
} |
+ bool get isEffectiveTargetMalformed { |
+ _ensureEffectiveTarget(); |
+ return _effectiveTargetIsMalformed; |
+ } |
+ |
@override |
ConstructorElement get effectiveTarget { |
_ensureEffectiveTarget(); |
@@ -1330,7 +1339,7 @@ class RedirectingFactoryConstructorElementZ extends ConstructorElementZ { |
} |
@override |
- InterfaceType computeEffectiveTargetType(InterfaceType newType) { |
+ DartType computeEffectiveTargetType(InterfaceType newType) { |
_ensureEffectiveTarget(); |
return _effectiveTargetType.substByContext(newType); |
} |