| 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.
|
|
|