diff options
author | Marc Guenther <marcguenther@me.com> | 2022-09-14 22:15:01 +0200 |
---|---|---|
committer | Marc Guenther <marcguenther@me.com> | 2022-09-14 22:15:01 +0200 |
commit | 5835e5d19fd4b22c88fbb8d304858786b060fe71 (patch) | |
tree | 341dfe05e9cd388fff8825a98886e9fbc2b65181 /src/core | |
parent | 91a511bbb70564c5b9aa5f7c1fa3dab3de22602b (diff) | |
download | lombok-5835e5d19fd4b22c88fbb8d304858786b060fe71.tar.gz lombok-5835e5d19fd4b22c88fbb8d304858786b060fe71.tar.bz2 lombok-5835e5d19fd4b22c88fbb8d304858786b060fe71.zip |
fixes ...: allow @ExtensionMethod on interfaces
Diffstat (limited to 'src/core')
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). */ |