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

Unified Diff: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java

Issue 15797007: Report CompileTimeErrorCode for 'const' argument mismatch. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 7 months 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
Index: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
diff --git a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
index 32872f21f36845d50bd2a8d0f9ec7397d7c22b37..3cb288e3491d7040dacee759f090281d69e10cc1 100644
--- a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
+++ b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/ElementResolver.java
@@ -735,7 +735,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
ConstructorElement invokedConstructor = node.getConstructorName().getElement();
staticElementMap.put(node, invokedConstructor);
node.setElement(invokedConstructor);
- resolveArgumentsToParameters(node.getArgumentList(), invokedConstructor);
+ resolveArgumentsToParameters(node.isConst(), node.getArgumentList(), invokedConstructor);
return null;
}
@@ -791,26 +791,30 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
CALL_METHOD_NAME,
resolver.getDefiningLibrary());
if (callMethod != null) {
- resolveArgumentsToParameters(node.getArgumentList(), callMethod);
+ resolveArgumentsToParameters(false, node.getArgumentList(), callMethod);
}
} else if (getterReturnType instanceof FunctionType) {
Element functionElement = ((FunctionType) getterReturnType).getElement();
if (functionElement instanceof ExecutableElement) {
resolveArgumentsToParameters(
+ false,
node.getArgumentList(),
(ExecutableElement) functionElement);
}
}
}
} else if (recordedElement instanceof ExecutableElement) {
- resolveArgumentsToParameters(node.getArgumentList(), (ExecutableElement) recordedElement);
+ resolveArgumentsToParameters(
+ false,
+ node.getArgumentList(),
+ (ExecutableElement) recordedElement);
} else if (recordedElement instanceof VariableElement) {
VariableElement variable = (VariableElement) recordedElement;
Type type = variable.getType();
if (type instanceof FunctionType) {
FunctionType functionType = (FunctionType) type;
ParameterElement[] parameters = functionType.getParameters();
- resolveArgumentsToParameters(node.getArgumentList(), parameters);
+ resolveArgumentsToParameters(false, node.getArgumentList(), parameters);
} else if (type instanceof InterfaceType) {
// "call" invocation
MethodElement callMethod = ((InterfaceType) type).lookUpMethod(
@@ -818,7 +822,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
resolver.getDefiningLibrary());
if (callMethod != null) {
ParameterElement[] parameters = callMethod.getParameters();
- resolveArgumentsToParameters(node.getArgumentList(), parameters);
+ resolveArgumentsToParameters(false, node.getArgumentList(), parameters);
}
}
}
@@ -1018,7 +1022,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
}
staticElementMap.put(node, element);
node.setElement(element);
- resolveArgumentsToParameters(node.getArgumentList(), element);
+ resolveArgumentsToParameters(false, node.getArgumentList(), element);
return null;
}
@@ -1095,7 +1099,7 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
}
staticElementMap.put(node, element);
node.setElement(element);
- resolveArgumentsToParameters(node.getArgumentList(), element);
+ resolveArgumentsToParameters(false, node.getArgumentList(), element);
return null;
}
@@ -1918,26 +1922,31 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
* Given a list of arguments and the element that will be invoked using those argument, compute
* the list of parameters that correspond to the list of arguments.
*
+ * @param reportError if {@code true} then compile-time error should be reported; if {@code false}
+ * then compile-time warning
* @param argumentList the list of arguments being passed to the element
* @param executableElement the element that will be invoked with the arguments
*/
- private void resolveArgumentsToParameters(ArgumentList argumentList,
+ private void resolveArgumentsToParameters(boolean reportError, ArgumentList argumentList,
ExecutableElement executableElement) {
if (executableElement == null) {
return;
}
ParameterElement[] parameters = executableElement.getParameters();
- resolveArgumentsToParameters(argumentList, parameters);
+ resolveArgumentsToParameters(reportError, argumentList, parameters);
}
/**
* Given a list of arguments and the element that will be invoked using those argument, compute
* the list of parameters that correspond to the list of arguments.
*
+ * @param reportError if {@code true} then compile-time error should be reported; if {@code false}
+ * then compile-time warning
* @param argumentList the list of arguments being passed to the element
* @param parameters the of the function that will be invoked with the arguments
*/
- private void resolveArgumentsToParameters(ArgumentList argumentList, ParameterElement[] parameters) {
+ private void resolveArgumentsToParameters(boolean reportError, ArgumentList argumentList,
+ ParameterElement[] parameters) {
ArrayList<ParameterElement> requiredParameters = new ArrayList<ParameterElement>();
ArrayList<ParameterElement> positionalParameters = new ArrayList<ParameterElement>();
HashMap<String, ParameterElement> namedParameters = new HashMap<String, ParameterElement>();
@@ -1969,7 +1978,9 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
String name = nameNode.getName();
ParameterElement element = namedParameters.get(name);
if (element == null) {
- resolver.reportError(StaticWarningCode.UNDEFINED_NAMED_PARAMETER, nameNode, name);
+ ErrorCode errorCode = reportError ? CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER
+ : StaticWarningCode.UNDEFINED_NAMED_PARAMETER;
+ resolver.reportError(errorCode, nameNode, name);
} else {
resolvedParameters[i] = element;
recordResolution(nameNode, element);
@@ -1985,17 +1996,17 @@ public class ElementResolver extends SimpleASTVisitor<Void> {
}
}
if (positionalArgumentCount < requiredParameters.size()) {
+ ErrorCode errorCode = reportError ? CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS
+ : StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS;
resolver.reportError(
- StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS,
+ errorCode,
argumentList,
requiredParameters.size(),
positionalArgumentCount);
} else if (positionalArgumentCount > unnamedParameterCount) {
- resolver.reportError(
- StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS,
- argumentList,
- unnamedParameterCount,
- positionalArgumentCount);
+ ErrorCode errorCode = reportError ? CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS
+ : StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS;
+ resolver.reportError(errorCode, argumentList, unnamedParameterCount, positionalArgumentCount);
}
argumentList.setCorrespondingParameters(resolvedParameters);
}

Powered by Google App Engine
This is Rietveld 408576698