Index: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/verifier/ErrorVerifier.java |
diff --git a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/verifier/ErrorVerifier.java b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/verifier/ErrorVerifier.java |
index c53819103dfd19ac98e5d0cfa19e4d4bf944636b..de92afbe2c31b4b7e7c2c7aa213c153c62adec12 100644 |
--- a/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/verifier/ErrorVerifier.java |
+++ b/editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/verifier/ErrorVerifier.java |
@@ -1426,7 +1426,7 @@ public class ErrorVerifier extends RecursiveASTVisitor<Void> { |
ParameterElementImpl parameterElt = parameterElts.get(i); |
EvaluationResultImpl result = parameterElt.getEvaluationResult(); |
// TODO (jwren) Ignore Object types, see Dart bug 11287 |
- if (result == null || result == ValidResult.RESULT_OBJECT) { |
+ if (isUserDefinedObject(result)) { |
continue; |
} |
String parameterName = parameterElt.getName(); |
@@ -1435,10 +1435,10 @@ public class ErrorVerifier extends RecursiveASTVisitor<Void> { |
String overriddenParameterName = overriddenParameterElt.getName(); |
if (parameterName != null && parameterName.equals(overriddenParameterName)) { |
EvaluationResultImpl overriddenResult = overriddenParameterElt.getEvaluationResult(); |
- if (overriddenResult == null || result == ValidResult.RESULT_OBJECT) { |
+ if (isUserDefinedObject(overriddenResult)) { |
break; |
} |
- if (!result.equalValues(overriddenResult)) { |
+ if (!result.equalValues(typeProvider, overriddenResult)) { |
errorReporter.reportError( |
StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED, |
formalParameters.get(i), |
@@ -1456,15 +1456,15 @@ public class ErrorVerifier extends RecursiveASTVisitor<Void> { |
ParameterElementImpl parameterElt = parameterElts.get(i); |
EvaluationResultImpl result = parameterElt.getEvaluationResult(); |
// TODO (jwren) Ignore Object types, see Dart bug 11287 |
- if (result == null || result == ValidResult.RESULT_OBJECT) { |
+ if (isUserDefinedObject(result)) { |
continue; |
} |
ParameterElementImpl overriddenParameterElt = overriddenParameterElts.get(i); |
EvaluationResultImpl overriddenResult = overriddenParameterElt.getEvaluationResult(); |
- if (overriddenResult == null || result == ValidResult.RESULT_OBJECT) { |
+ if (isUserDefinedObject(overriddenResult)) { |
continue; |
} |
- if (!result.equalValues(overriddenResult)) { |
+ if (!result.equalValues(typeProvider, overriddenResult)) { |
errorReporter.reportError( |
StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_POSITIONAL, |
formalParameters.get(i), |
@@ -5353,6 +5353,11 @@ public class ErrorVerifier extends RecursiveASTVisitor<Void> { |
return false; |
} |
+ private boolean isUserDefinedObject(EvaluationResultImpl result) { |
+ return result == null |
+ || (result instanceof ValidResult && ((ValidResult) result).isUserDefinedObject()); |
+ } |
+ |
/** |
* Return {@code true} iff the passed {@link ClassElement} has a concrete implementation of the |
* passed accessor name in the superclass chain. |