aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/eclipse/handlers
diff options
context:
space:
mode:
authorRawi01 <Rawi01@users.noreply.github.com>2021-01-31 14:33:19 +0100
committerRawi01 <Rawi01@users.noreply.github.com>2021-01-31 14:33:38 +0100
commit191a8011ef5e8ae2a4446b9b357e121272526364 (patch)
tree0cafbd10414cb99507c7a69f9a882afcbfef898f /src/core/lombok/eclipse/handlers
parent3d3a4c322af4cf7f27679661efaa9dcd685165bb (diff)
downloadlombok-191a8011ef5e8ae2a4446b9b357e121272526364.tar.gz
lombok-191a8011ef5e8ae2a4446b9b357e121272526364.tar.bz2
lombok-191a8011ef5e8ae2a4446b9b357e121272526364.zip
[fixes #1064] Only show super()-warning if lombok generates a method
Diffstat (limited to 'src/core/lombok/eclipse/handlers')
-rwxr-xr-xsrc/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java
index deb19c00..8115a91f 100755
--- a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java
+++ b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java
@@ -168,30 +168,6 @@ public class HandleEqualsAndHashCode extends EclipseAnnotationHandler<EqualsAndH
boolean isDirectDescendantOfObject = isDirectDescendantOfObject(typeNode);
- if (isDirectDescendantOfObject && callSuper) {
- errorNode.addError("Generating equals/hashCode with a supercall to java.lang.Object is pointless.");
- return;
- }
-
- if (implicitCallSuper && !isDirectDescendantOfObject) {
- CallSuperType cst = typeNode.getAst().readConfiguration(ConfigurationKeys.EQUALS_AND_HASH_CODE_CALL_SUPER);
- if (cst == null) cst = CallSuperType.WARN;
-
- switch (cst) {
- default:
- case WARN:
- errorNode.addWarning("Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.");
- callSuper = false;
- break;
- case SKIP:
- callSuper = false;
- break;
- case CALL:
- callSuper = true;
- break;
- }
- }
-
boolean isFinal = (typeDecl.modifiers & ClassFileConstants.AccFinal) != 0;
boolean needsCanEqual = !isFinal || !isDirectDescendantOfObject;
MemberExistsResult equalsExists = methodExists("equals", typeNode, 1);
@@ -220,6 +196,30 @@ public class HandleEqualsAndHashCode extends EclipseAnnotationHandler<EqualsAndH
//fallthrough
}
+ if (isDirectDescendantOfObject && callSuper) {
+ errorNode.addError("Generating equals/hashCode with a supercall to java.lang.Object is pointless.");
+ return;
+ }
+
+ if (implicitCallSuper && !isDirectDescendantOfObject) {
+ CallSuperType cst = typeNode.getAst().readConfiguration(ConfigurationKeys.EQUALS_AND_HASH_CODE_CALL_SUPER);
+ if (cst == null) cst = CallSuperType.WARN;
+
+ switch (cst) {
+ default:
+ case WARN:
+ errorNode.addWarning("Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.");
+ callSuper = false;
+ break;
+ case SKIP:
+ callSuper = false;
+ break;
+ case CALL:
+ callSuper = true;
+ break;
+ }
+ }
+
MethodDeclaration equalsMethod = createEquals(typeNode, members, callSuper, errorNode.get(), fieldAccess, needsCanEqual, onParam);
equalsMethod.traverse(new SetGeneratedByVisitor(errorNode.get()), ((TypeDeclaration)typeNode.get()).scope);
injectMethod(typeNode, equalsMethod);