| Index: pkg/compiler/lib/src/resolution/resolution.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/resolution.dart b/pkg/compiler/lib/src/resolution/resolution.dart
|
| index 0676ba66c21f9a3d7eb36b9cfc922aac72e042be..14068d2e860f82b96243349aaed6e132868001e0 100644
|
| --- a/pkg/compiler/lib/src/resolution/resolution.dart
|
| +++ b/pkg/compiler/lib/src/resolution/resolution.dart
|
| @@ -418,20 +418,23 @@ class ResolverTask extends CompilerTask {
|
| }
|
|
|
| void resolveRedirectionChain(
|
| - ConstructorElementX constructor, Spannable node) {
|
| - ConstructorElementX target = constructor;
|
| + ConstructorElement constructor, Spannable node) {
|
| + ConstructorElement target = constructor;
|
| InterfaceType targetType;
|
| List<Element> seen = new List<Element>();
|
| bool isMalformed = false;
|
| // Follow the chain of redirections and check for cycles.
|
| while (target.isRedirectingFactory || target.isPatched) {
|
| - if (target.effectiveTargetInternal != null) {
|
| + if (target.hasEffectiveTarget) {
|
| // We found a constructor that already has been processed.
|
| - targetType = target.effectiveTargetType;
|
| + // TODO(johnniwinther): Should `effectiveTargetType` be part of the
|
| + // interface?
|
| + targetType = target.computeEffectiveTargetType(
|
| + target.enclosingClass.thisType);
|
| assert(invariant(target, targetType != null,
|
| message: 'Redirection target type has not been computed for '
|
| '$target'));
|
| - target = target.effectiveTargetInternal;
|
| + target = target.effectiveTarget;
|
| break;
|
| }
|
|
|
|
|