| Index: pkg/analyzer/lib/src/dart/element/element.dart
|
| diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
|
| index 636e0e995200fafd654dbb68c66c49e299c7aa45..7c1e056917cbf7af237cbf95e6229ffb651e92c1 100644
|
| --- a/pkg/analyzer/lib/src/dart/element/element.dart
|
| +++ b/pkg/analyzer/lib/src/dart/element/element.dart
|
| @@ -1685,7 +1685,7 @@ class ConstructorElementImpl extends ExecutableElementImpl
|
| /**
|
| * The constructor to which this constructor is redirecting.
|
| */
|
| - ConstructorElement redirectedConstructor;
|
| + ConstructorElement _redirectedConstructor;
|
|
|
| /**
|
| * The initializers for this constructor (used for evaluating constant
|
| @@ -1756,7 +1756,8 @@ class ConstructorElementImpl extends ExecutableElementImpl
|
| }
|
|
|
| @override
|
| - ClassElement get enclosingElement => super.enclosingElement as ClassElement;
|
| + ClassElementImpl get enclosingElement =>
|
| + super.enclosingElement as ClassElementImpl;
|
|
|
| @override
|
| TypeParameterizedElementMixin get enclosingTypeParameterContext =>
|
| @@ -1855,6 +1856,30 @@ class ConstructorElementImpl extends ExecutableElementImpl
|
| }
|
|
|
| @override
|
| + ConstructorElement get redirectedConstructor {
|
| + if (serializedExecutable != null && _redirectedConstructor == null) {
|
| + if (serializedExecutable.isRedirectedConstructor) {
|
| + if (serializedExecutable.isFactory) {
|
| + _redirectedConstructor = enclosingUnit.resynthesizerContext
|
| + .resolveConstructorRef(
|
| + enclosingElement, serializedExecutable.redirectedConstructor);
|
| + } else {
|
| + _redirectedConstructor = enclosingElement.getNamedConstructor(
|
| + serializedExecutable.redirectedConstructorName);
|
| + }
|
| + } else {
|
| + return null;
|
| + }
|
| + }
|
| + return _redirectedConstructor;
|
| + }
|
| +
|
| + void set redirectedConstructor(ConstructorElement redirectedConstructor) {
|
| + assert(serializedExecutable == null);
|
| + _redirectedConstructor = redirectedConstructor;
|
| + }
|
| +
|
| + @override
|
| DartType get returnType => enclosingElement.type;
|
|
|
| @override
|
| @@ -7369,6 +7394,13 @@ abstract class ResynthesizerContext {
|
| UnitExplicitTopLevelVariables buildTopLevelVariables();
|
|
|
| /**
|
| + * Resolve an [EntityRef] into a constructor. If the reference is
|
| + * unresolved, return `null`.
|
| + */
|
| + ConstructorElement resolveConstructorRef(
|
| + TypeParameterizedElementMixin typeParameterContext, EntityRef entry);
|
| +
|
| + /**
|
| * Build the appropriate [DartType] object corresponding to a slot id in the
|
| * [LinkedUnit.types] table.
|
| */
|
|
|