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

Unified Diff: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/verifier/ErrorVerifier.java

Issue 296043003: Fix for issue 14527 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add more tests Created 6 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/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;
}

Powered by Google App Engine
This is Rietveld 408576698