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

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

Issue 218993013: Fix for 16133 - Warnings for both required getters and setters in concrete subclasses will appear (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 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 6acf351c346627c4d5f3ab89c567468f6d7777f5..64c206ccac249291a0953786051c68e33e13993d 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
@@ -190,27 +190,27 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
/**
* The type representing the type 'dynamic'.
*/
- private Type dynamicType;
+ private final Type dynamicType;
/**
* The type representing the type 'bool'.
*/
- private InterfaceType boolType;
+ private final InterfaceType boolType;
/**
* The type representing the type 'int'.
*/
- private InterfaceType intType;
+ private final InterfaceType intType;
/**
* The object providing access to the types defined by the language.
*/
- private TypeProvider typeProvider;
+ private final TypeProvider typeProvider;
/**
* The manager for the inheritance mappings.
*/
- private InheritanceManager inheritanceManager;
+ private final InheritanceManager inheritanceManager;
/**
* This is set to {@code true} iff the visitor is currently visiting children nodes of a
@@ -369,6 +369,27 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
*/
private final InterfaceType[] DISALLOWED_TYPES_TO_EXTEND_OR_IMPLEMENT;
+ /**
+ * Static final string with value {@code "getter "} used in the construction of the
+ * {@link StaticWarningCode#NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE}, and similar, error
+ * code messages.
+ *
+ * @see #checkForNonAbstractClassInheritsAbstractMember(ClassDeclaration)
+ */
+ private final static String GETTER_SPACE = "getter ";
+
+ /**
+ * Static final string with value {@code "setter "} used in the construction of the
+ * {@link StaticWarningCode#NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE}, and similar, error
+ * code messages.
+ *
+ * @see #checkForNonAbstractClassInheritsAbstractMember(ClassDeclaration)
+ */
+ private final static String SETTER_SPACE = "setter ";
+
+ /**
+ * Initialize the {@link ErrorVerifier} visitor.
+ */
public ErrorVerifier(ErrorReporter errorReporter, LibraryElement currentLibrary,
TypeProvider typeProvider, InheritanceManager inheritanceManager) {
this.errorReporter = errorReporter;
@@ -384,9 +405,9 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
isInInstanceVariableInitializer = false;
isInConstructorInitializer = false;
isInStaticMethod = false;
+ dynamicType = typeProvider.getDynamicType();
boolType = typeProvider.getBoolType();
intType = typeProvider.getIntType();
- dynamicType = typeProvider.getDynamicType();
DISALLOWED_TYPES_TO_EXTEND_OR_IMPLEMENT = new InterfaceType[] {
typeProvider.getNullType(), typeProvider.getNumType(), intType,
typeProvider.getDoubleType(), boolType, typeProvider.getStringType()};
@@ -4265,15 +4286,23 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
missingOverridesArray.length);
for (int i = 0; i < missingOverridesArray.length; i++) {
String newStrMember;
- if (missingOverridesArray[i].getEnclosingElement() != null) {
- newStrMember = missingOverridesArray[i].getEnclosingElement().getDisplayName() + '.'
- + missingOverridesArray[i].getDisplayName();
- } else {
- newStrMember = missingOverridesArray[i].getDisplayName();
+ Element enclosingElement = missingOverridesArray[i].getEnclosingElement();
+ String prefix = StringUtilities.EMPTY;
+ if (missingOverridesArray[i] instanceof PropertyAccessorElement) {
+ PropertyAccessorElement propertyAccessorElement = (PropertyAccessorElement) missingOverridesArray[i];
+ if (propertyAccessorElement.isGetter()) {
+ prefix = GETTER_SPACE; // "getter "
+ } else {
+ prefix = SETTER_SPACE; // "setter "
+ }
}
- if (!stringMembersArrayListSet.contains(newStrMember)) {
- stringMembersArrayListSet.add(newStrMember);
+ if (enclosingElement != null) {
+ newStrMember = prefix + "'" + enclosingElement.getDisplayName() + '.'
+ + missingOverridesArray[i].getDisplayName() + "'";
+ } else {
+ newStrMember = prefix + "'" + missingOverridesArray[i].getDisplayName() + "'";
}
+ stringMembersArrayListSet.add(newStrMember);
}
String[] stringMembersArray = stringMembersArrayListSet.toArray(new String[stringMembersArrayListSet.size()]);
AnalysisErrorWithProperties analysisError;
@@ -5558,7 +5587,7 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
* @return {@code true} iff the passed member is found in the passed class element
*/
private boolean isMemberInClassOrMixin(ExecutableElement executableElt, ClassElement classElt) {
- ExecutableElement foundElt;
+ ExecutableElement foundElt = null;
String executableName = executableElt.getName();
if (executableElt instanceof MethodElement) {
foundElt = classElt.getMethod(executableName);
@@ -5573,8 +5602,11 @@ public class ErrorVerifier extends RecursiveAstVisitor<Void> {
return true;
}
} else if (executableElt instanceof PropertyAccessorElement) {
- foundElt = classElt.getGetter(executableElt.getName());
- if (foundElt == null) {
+ PropertyAccessorElement propertyAccessorElement = (PropertyAccessorElement) executableElt;
+ if (propertyAccessorElement.isGetter()) {
+ foundElt = classElt.getGetter(executableName);
+ }
+ if (foundElt == null && propertyAccessorElement.isSetter()) {
foundElt = classElt.getSetter(executableName);
}
if (foundElt != null) {

Powered by Google App Engine
This is Rietveld 408576698