Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(535)

Unified Diff: pkg/compiler/lib/src/resolution/constructors.dart

Issue 1508383002: Make new of an ambiguous a warning. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/co19/co19-dart2js.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « no previous file | tests/co19/co19-dart2js.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698