| 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 5a6c7d04c9a1ce0c631c615010522ec7e04811ec..e3fba1b3dc7c1b9d6ea3592fe78533febe4848b1 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
|
| @@ -2273,13 +2273,24 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
|
| */
|
| private boolean checkForConcreteClassWithAbstractMember(MethodDeclaration node) {
|
| if (node.isAbstract() && enclosingClass != null && !enclosingClass.isAbstract()) {
|
| - SimpleIdentifier methodName = node.getName();
|
| - errorReporter.reportErrorForNode(
|
| - StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
|
| - methodName,
|
| - methodName.getName(),
|
| - enclosingClass.getDisplayName());
|
| - return true;
|
| + SimpleIdentifier nameNode = node.getName();
|
| + String memberName = nameNode.getName();
|
| + ExecutableElement overriddenMember;
|
| + if (node.isGetter()) {
|
| + overriddenMember = enclosingClass.lookUpInheritedConcreteGetter(memberName, currentLibrary);
|
| + } else if (node.isSetter()) {
|
| + overriddenMember = enclosingClass.lookUpInheritedConcreteSetter(memberName, currentLibrary);
|
| + } else {
|
| + overriddenMember = enclosingClass.lookUpInheritedConcreteMethod(memberName, currentLibrary);
|
| + }
|
| + if (overriddenMember == null) {
|
| + errorReporter.reportErrorForNode(
|
| + StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER,
|
| + nameNode,
|
| + memberName,
|
| + enclosingClass.getDisplayName());
|
| + return true;
|
| + }
|
| }
|
| return false;
|
| }
|
|
|