| Index: pkg/compiler/lib/src/resolution/constructors.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/constructors.dart b/pkg/compiler/lib/src/resolution/constructors.dart
|
| index 26e7b48b21e7c040fda020998fcc0a23b922233a..ce4e93c191ccbc31d87e1924d2f867f050560b3e 100644
|
| --- a/pkg/compiler/lib/src/resolution/constructors.dart
|
| +++ b/pkg/compiler/lib/src/resolution/constructors.dart
|
| @@ -485,18 +485,19 @@ class ConstructorResolver extends CommonResolverVisitor<ConstructorResult> {
|
| MessageKind kind,
|
| Map arguments,
|
| {bool isError: false,
|
| - bool missingConstructor: false}) {
|
| + bool missingConstructor: false,
|
| + List<DiagnosticMessage> infos: const <DiagnosticMessage>[]}) {
|
| if (missingConstructor) {
|
| registry.registerFeature(Feature.THROW_NO_SUCH_METHOD);
|
| } else {
|
| registry.registerFeature(Feature.THROW_RUNTIME_ERROR);
|
| }
|
| + DiagnosticMessage message =
|
| + reporter.createMessage(diagnosticNode, kind, arguments);
|
| if (isError || inConstContext) {
|
| - reporter.reportErrorMessage(
|
| - diagnosticNode, kind, arguments);
|
| + reporter.reportError(message, infos);
|
| } else {
|
| - reporter.reportWarningMessage(
|
| - diagnosticNode, kind, arguments);
|
| + reporter.reportWarning(message, infos);
|
| }
|
| ErroneousElement error = new ErroneousConstructorElementX(
|
| kind, arguments, name, enclosing);
|
| @@ -616,8 +617,7 @@ class ConstructorResolver extends CommonResolverVisitor<ConstructorResult> {
|
| if (send != null) {
|
| // The type name is of the form [: prefix . identifier :].
|
| String name = send.receiver.asIdentifier().source;
|
| - Element element = resolver.reportLookupErrorIfAny(
|
| - lookupInScope(reporter, send, resolver.scope, name), node, name);
|
| + Element element = lookupInScope(reporter, send, resolver.scope, name);
|
| if (element != null && element.isPrefix) {
|
| prefix = element;
|
| }
|
| @@ -666,10 +666,8 @@ class ConstructorResolver extends CommonResolverVisitor<ConstructorResult> {
|
|
|
| ConstructorResult visitIdentifier(Identifier node) {
|
| String name = node.source;
|
| - Element element = resolver.reportLookupErrorIfAny(
|
| - lookupInScope(reporter, node, resolver.scope, name), node, name);
|
| + Element element = lookupInScope(reporter, node, resolver.scope, name);
|
| registry.useElement(node, element);
|
| - // TODO(johnniwinther): Change errors to warnings, cf. 11.11.1.
|
| return constructorResultForElement(node, name, element);
|
| }
|
|
|
| @@ -691,6 +689,15 @@ class ConstructorResolver extends CommonResolverVisitor<ConstructorResult> {
|
| resolver.enclosingElement, name,
|
| MessageKind.CANNOT_RESOLVE,
|
| {'name': name});
|
| + } else if (element.isAmbiguous) {
|
| + AmbiguousElement ambiguous = element;
|
| + return reportAndCreateErroneousConstructorElement(
|
| + node,
|
| + ConstructorResultKind.INVALID_TYPE, null,
|
| + resolver.enclosingElement, name,
|
| + ambiguous.messageKind,
|
| + ambiguous.messageArguments,
|
| + infos: ambiguous.computeInfos(resolver.enclosingElement, reporter));
|
| } else if (element.isMalformed) {
|
| return constructorResultForErroneous(node, element);
|
| } else if (element.isClass) {
|
|
|