| Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| index 59578cedf592ed68c0ea720ce38745bfcbb6d7c6..d0970fa01290df1405f4ab3b91221e2d39c0cbcb 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
|
| @@ -64,7 +64,11 @@ import '../quote.dart'
|
|
|
| import '../modifier.dart' show Modifier, constMask, finalMask;
|
|
|
| -import 'redirecting_factory_body.dart' show getRedirectionTarget;
|
| +import 'redirecting_factory_body.dart'
|
| + show
|
| + RedirectingFactoryBody,
|
| + getRedirectingFactoryBody,
|
| + getRedirectionTarget;
|
|
|
| import 'kernel_builder.dart';
|
|
|
| @@ -2173,6 +2177,15 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| nameToken.charOffset));
|
| return;
|
| }
|
| + RedirectingFactoryBody body = getRedirectingFactoryBody(target);
|
| + if (body != null) {
|
| + // If the redirection target is itself a redirecting factory, it
|
| + // means that it is unresolved. So we set target to null so we
|
| + // can generate a no-such-method error below.
|
| + assert(body.isUnresolved);
|
| + target = null;
|
| + errorName = body.unresolvedName;
|
| + }
|
| }
|
| if (target is Constructor ||
|
| (target is Procedure && target.kind == ProcedureKind.Factory)) {
|
| @@ -2182,7 +2195,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
| initialTarget: initialTarget));
|
| return;
|
| } else {
|
| - errorName = debugName(type.name, name);
|
| + errorName ??= debugName(type.name, name);
|
| }
|
| } else {
|
| errorName = debugName(getNodeName(type), name);
|
|
|