Index: pkg/compiler/lib/src/resolution/send_resolver.dart |
diff --git a/pkg/compiler/lib/src/resolution/send_resolver.dart b/pkg/compiler/lib/src/resolution/send_resolver.dart |
index b8eeb2fed37369f53c94d4f66365632b04a4e9ed..7ff21568011e2c6e5018b9f465a622d3eb2e564c 100644 |
--- a/pkg/compiler/lib/src/resolution/send_resolver.dart |
+++ b/pkg/compiler/lib/src/resolution/send_resolver.dart |
@@ -419,8 +419,15 @@ abstract class SendResolverMixin { |
ConstructorElement constructor, |
DartType type) { |
if (constructor.isErroneous) { |
+ if (constructor is ErroneousElement) { |
+ ErroneousElement error = constructor; |
+ if (error.messageKind == MessageKind.CANNOT_FIND_CONSTRUCTOR) { |
+ return new ConstructorAccessSemantics( |
+ ConstructorAccessKind.UNRESOLVED_CONSTRUCTOR, constructor, type); |
+ } |
+ } |
return new ConstructorAccessSemantics( |
- ConstructorAccessKind.ERRONEOUS, constructor, type); |
+ ConstructorAccessKind.UNRESOLVED_TYPE, constructor, type); |
} else if (constructor.isRedirectingFactory) { |
ConstructorElement effectiveTarget = constructor.effectiveTarget; |
if (effectiveTarget == constructor || |
@@ -482,7 +489,7 @@ abstract class SendResolverMixin { |
// This is a non-constant constant constructor invocation, like |
// `const Const(method())`. |
constructorAccessSemantics = new ConstructorAccessSemantics( |
- ConstructorAccessKind.ERRONEOUS, element, type); |
+ ConstructorAccessKind.NON_CONSTANT_CONSTRUCTOR, element, type); |
} else { |
constructorAccessSemantics = |
computeConstructorAccessSemantics(element, type); |