aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarc Guenther <marcguenther@me.com>2022-09-14 22:15:01 +0200
committerMarc Guenther <marcguenther@me.com>2022-09-14 22:15:01 +0200
commit5835e5d19fd4b22c88fbb8d304858786b060fe71 (patch)
tree341dfe05e9cd388fff8825a98886e9fbc2b65181 /src
parent91a511bbb70564c5b9aa5f7c1fa3dab3de22602b (diff)
downloadlombok-5835e5d19fd4b22c88fbb8d304858786b060fe71.tar.gz
lombok-5835e5d19fd4b22c88fbb8d304858786b060fe71.tar.bz2
lombok-5835e5d19fd4b22c88fbb8d304858786b060fe71.zip
fixes ...: allow @ExtensionMethod on interfaces
Diffstat (limited to 'src')
-rw-r--r--src/core/lombok/eclipse/handlers/HandleExtensionMethod.java4
-rw-r--r--src/core/lombok/javac/handlers/HandleExtensionMethod.java6
-rw-r--r--src/core/lombok/javac/handlers/JavacHandlerUtil.java4
3 files changed, 9 insertions, 5 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleExtensionMethod.java b/src/core/lombok/eclipse/handlers/HandleExtensionMethod.java
index 5857780c..b84018c6 100644
--- a/src/core/lombok/eclipse/handlers/HandleExtensionMethod.java
+++ b/src/core/lombok/eclipse/handlers/HandleExtensionMethod.java
@@ -50,10 +50,10 @@ public class HandleExtensionMethod extends EclipseAnnotationHandler<ExtensionMet
int modifiers = typeDecl == null ? 0 : typeDecl.modifiers;
boolean notAClass = (modifiers &
- (ClassFileConstants.AccInterface | ClassFileConstants.AccAnnotation)) != 0;
+ (ClassFileConstants.AccAnnotation)) != 0;
if (typeDecl == null || notAClass) {
- annotationNode.addError("@ExtensionMethod is legal only on classes and enums.");
+ annotationNode.addError("@ExtensionMethod is legal only on classes and enums and interfaces.");
return;
}
diff --git a/src/core/lombok/javac/handlers/HandleExtensionMethod.java b/src/core/lombok/javac/handlers/HandleExtensionMethod.java
index dd565f72..98b000c2 100644
--- a/src/core/lombok/javac/handlers/HandleExtensionMethod.java
+++ b/src/core/lombok/javac/handlers/HandleExtensionMethod.java
@@ -73,10 +73,10 @@ public class HandleExtensionMethod extends JavacAnnotationHandler<ExtensionMetho
deleteAnnotationIfNeccessary(annotationNode, ExtensionMethod.class);
JavacNode typeNode = annotationNode.up();
- boolean isClassOrEnum = isClassOrEnum(typeNode);
+ boolean isClassOrEnumOrInterface = isClassOrEnumOrInterface(typeNode);
- if (!isClassOrEnum) {
- annotationNode.addError("@ExtensionMethod can only be used on a class or an enum");
+ if (!isClassOrEnumOrInterface) {
+ annotationNode.addError("@ExtensionMethod can only be used on a class or an enum or an interface");
return;
}
diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
index b17e34d8..9d153a72 100644
--- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java
+++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
@@ -2069,6 +2069,10 @@ public class JavacHandlerUtil {
return isClassAndDoesNotHaveFlags(typeNode, Flags.INTERFACE | Flags.ANNOTATION | RECORD);
}
+ public static boolean isClassOrEnumOrInterface(JavacNode typeNode) {
+ return isClassAndDoesNotHaveFlags(typeNode, Flags.ANNOTATION | RECORD);
+ }
+
/**
* Returns {@code true} if the provided node is an actual class, an enum or a record and not some other type declaration (so, not an annotation definition or interface).
*/