diff options
27 files changed, 322 insertions, 22 deletions
@@ -20,6 +20,7 @@ Jan Matèrne <jhm@apache.org> Jan Rieke <it@janrieke.de> Jappe van der Hel <jappe.vanderhel@gmail.com> John Paul Taylor II <johnpaultaylorii@gmail.com> +Karthik kathari <44122128+varkart@users.noreply.github.com> Kevin Chirls <kchirls@users.noreply.github.com> Liu DongMiao <liudongmiao@gmail.com> Luan Nico <luannico27@gmail.com> diff --git a/buildScripts/ivy-repo/org.projectlombok-lombok.patcher-0.40.xml b/buildScripts/ivy-repo/org.projectlombok-lombok.patcher-0.44.xml index 11302b2b..db0d6fc4 100644 --- a/buildScripts/ivy-repo/org.projectlombok-lombok.patcher-0.40.xml +++ b/buildScripts/ivy-repo/org.projectlombok-lombok.patcher-0.44.xml @@ -1,5 +1,5 @@ <ivy-module version="2.0"> - <info organisation="org.projectlombok" module="lombok.patcher" revision="0.40" publication="20201015232000"> + <info organisation="org.projectlombok" module="lombok.patcher" revision="0.40" publication="20220317220900"> <license name="MIT License" url="https://www.opensource.org/licenses/mit-license.php" /> <ivyauthor name="rzwitserloot" url="https://github.com/rzwitserloot" /> <ivyauthor name="rspilker" url="https://github.com/rspilker" /> @@ -9,6 +9,6 @@ <conf name="default" /> </configurations> <publications> - <artifact conf="default" url="https://projectlombok.org/downloads/lombok.patcher-0.40.jar" /> + <artifact conf="default" url="https://projectlombok.org/downloads/lombok.patcher-0.44.jar" /> </publications> </ivy-module> diff --git a/buildScripts/ivy.xml b/buildScripts/ivy.xml index d12f8867..afd799d0 100644 --- a/buildScripts/ivy.xml +++ b/buildScripts/ivy.xml @@ -37,7 +37,7 @@ </configurations> <dependencies> - <dependency org="org.projectlombok" name="lombok.patcher" rev="0.42" conf="build,stripe->default" /> + <dependency org="org.projectlombok" name="lombok.patcher" rev="0.44" conf="build,stripe->default" /> <dependency org="zwitserloot.com" name="cmdreader" rev="1.2" conf="build,stripe->runtime" /> <dependency org="org.apache.ant" name="ant" rev="1.10.5" conf="build->default" /> <dependency org="org.apache.ant" name="ant-junit" rev="1.10.5" conf="build->default" /> diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java index cda31e2c..072b6df2 100644 --- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java +++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java @@ -2774,15 +2774,7 @@ public class EclipseHandlerUtil { * Returns {@code true} if the provided node supports static methods and types (top level or static class) */ public static boolean isStaticAllowed(EclipseNode typeNode) { - boolean staticAllowed = true; - - while (typeNode.getKind() != Kind.COMPILATION_UNIT) { - if (!staticAllowed) return false; - - staticAllowed = typeNode.isStatic(); - typeNode = typeNode.up(); - } - return true; + return typeNode.isStatic() || typeNode.up() == null || typeNode.up().getKind() == Kind.COMPILATION_UNIT || isRecord(typeNode); } public static AbstractVariableDeclaration[] getRecordComponents(TypeDeclaration typeDeclaration) { diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java index 53a518b4..b17e34d8 100644 --- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java +++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java @@ -2096,15 +2096,7 @@ public class JavacHandlerUtil { * Returns {@code true} if the provided node supports static methods and types (top level or static class) */ public static boolean isStaticAllowed(JavacNode typeNode) { - boolean staticAllowed = true; - - while (typeNode.getKind() != Kind.COMPILATION_UNIT) { - if (!staticAllowed) return false; - - staticAllowed = typeNode.isStatic(); - typeNode = typeNode.up(); - } - return true; + return typeNode.isStatic() || typeNode.up() == null || typeNode.up().getKind() == Kind.COMPILATION_UNIT || isRecord(typeNode); } public static JavacNode upToTypeNode(JavacNode node) { diff --git a/test/transform/resource/after-delombok/LoggerFlogger.java b/test/transform/resource/after-delombok/LoggerFlogger.java index 41d49fe4..0fe8083a 100644 --- a/test/transform/resource/after-delombok/LoggerFlogger.java +++ b/test/transform/resource/after-delombok/LoggerFlogger.java @@ -12,3 +12,15 @@ class LoggerFloggerOuter { private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); } } +enum LoggerFloggerWithEnum { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); +} +class LoggerFloggerWithInnerEnum { + enum Inner { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); + } +} diff --git a/test/transform/resource/after-delombok/LoggerFloggerRecord.java b/test/transform/resource/after-delombok/LoggerFloggerRecord.java new file mode 100644 index 00000000..9cc0c9c0 --- /dev/null +++ b/test/transform/resource/after-delombok/LoggerFloggerRecord.java @@ -0,0 +1,6 @@ +class LoggerFloggerRecord { + record Inner(String x) { + @java.lang.SuppressWarnings("all") + private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); + } +}
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/LoggerJBossLog.java b/test/transform/resource/after-delombok/LoggerJBossLog.java index 5fd98aa6..1f2a240f 100644 --- a/test/transform/resource/after-delombok/LoggerJBossLog.java +++ b/test/transform/resource/after-delombok/LoggerJBossLog.java @@ -12,6 +12,18 @@ class LoggerJBossLogOuter { private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(Inner.class); } } +enum LoggerJBossLogWithEnum { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LoggerJBossLogWithEnum.class); +} +class LoggerJBossLogWithInnerEnum { + enum Inner { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(Inner.class); + } +} class LoggerJBossLogWithDifferentLoggerName { @java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-delombok/LoggerJul.java b/test/transform/resource/after-delombok/LoggerJul.java index cfb44fde..471e614c 100644 --- a/test/transform/resource/after-delombok/LoggerJul.java +++ b/test/transform/resource/after-delombok/LoggerJul.java @@ -14,4 +14,17 @@ class LoggerJulWithStaticField { @java.lang.SuppressWarnings("all") private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJulWithStaticField.TOPIC); static final String TOPIC = "StaticField"; +} +enum LoggerJulWithEnum { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJulWithEnum.class.getName()); +} +class LoggerJulWithInnerEnum { + + enum Inner { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Inner.class.getName()); + } }
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/LoggerLog4j.java b/test/transform/resource/after-delombok/LoggerLog4j.java index cef83621..c07e14fa 100644 --- a/test/transform/resource/after-delombok/LoggerLog4j.java +++ b/test/transform/resource/after-delombok/LoggerLog4j.java @@ -15,3 +15,16 @@ class LoggerLog4jWithStaticField { private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LoggerLog4jWithStaticField.TOPIC); static final String TOPIC = "StaticField"; } +enum LoggerLog4jWithEnum { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LoggerLog4jWithEnum.class); +} +class LoggerLog4jWithInnerEnum { + + enum Inner { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(Inner.class); + } +} diff --git a/test/transform/resource/after-delombok/LoggerLog4j2.java b/test/transform/resource/after-delombok/LoggerLog4j2.java index cba516f2..5db281be 100644 --- a/test/transform/resource/after-delombok/LoggerLog4j2.java +++ b/test/transform/resource/after-delombok/LoggerLog4j2.java @@ -15,4 +15,17 @@ class LoggerLog4j2WithStaticField { @java.lang.SuppressWarnings("all") private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerLog4j2WithStaticField.TOPIC); static final String TOPIC = "StaticField"; +} +enum LoggerLog4j2WithEnum { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerLog4j2WithEnum.class); +} +class LoggerLog4j2WithInnerEnum { + + enum Inner { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(Inner.class); + } }
\ No newline at end of file diff --git a/test/transform/resource/after-delombok/LoggerSlf4j.java b/test/transform/resource/after-delombok/LoggerSlf4j.java index 152c8708..099a65ad 100644 --- a/test/transform/resource/after-delombok/LoggerSlf4j.java +++ b/test/transform/resource/after-delombok/LoggerSlf4j.java @@ -6,6 +6,18 @@ class LoggerSlf4jWithImport { @java.lang.SuppressWarnings("all") private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithImport.class); } +enum LoggerSlf4jWithEnum { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithEnum.class); +} +class LoggerSlf4jWithInnerEnum { + enum Inner { + CONSTANT; + @java.lang.SuppressWarnings("all") + private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Inner.class); + } +} class LoggerSlf4jOuter { static class Inner { @java.lang.SuppressWarnings("all") diff --git a/test/transform/resource/after-ecj/LoggerFlogger.java b/test/transform/resource/after-ecj/LoggerFlogger.java index d0526eee..b97082ff 100644 --- a/test/transform/resource/after-ecj/LoggerFlogger.java +++ b/test/transform/resource/after-ecj/LoggerFlogger.java @@ -28,3 +28,26 @@ class LoggerFloggerOuter { super(); } } +@Flogger enum LoggerFloggerWithEnum { + CONSTANT(), + private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); + <clinit>() { + } + LoggerFloggerWithEnum() { + super(); + } +} +class LoggerFloggerWithInnerEnum { + @Flogger enum Inner { + CONSTANT(), + private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); + <clinit>() { + } + Inner() { + super(); + } + } + LoggerFloggerWithInnerEnum() { + super(); + } +} diff --git a/test/transform/resource/after-ecj/LoggerFloggerRecord.java b/test/transform/resource/after-ecj/LoggerFloggerRecord.java new file mode 100644 index 00000000..86004b67 --- /dev/null +++ b/test/transform/resource/after-ecj/LoggerFloggerRecord.java @@ -0,0 +1,16 @@ +import lombok.extern.flogger.Flogger; +class LoggerFloggerRecord { + static @Flogger record Inner(String x) { + private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass(); +/* Implicit */ private final String x; + <clinit>() { + } + public Inner(String x) { + super(); + .x = x; + } + } + LoggerFloggerRecord() { + super(); + } +}
\ No newline at end of file diff --git a/test/transform/resource/after-ecj/LoggerJBossLog.java b/test/transform/resource/after-ecj/LoggerJBossLog.java index c47f6c9e..13d332a6 100644 --- a/test/transform/resource/after-ecj/LoggerJBossLog.java +++ b/test/transform/resource/after-ecj/LoggerJBossLog.java @@ -28,6 +28,29 @@ class LoggerJBossLogOuter { super(); } } +@JBossLog enum LoggerJBossLogWithEnum { + CONSTANT(), + private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LoggerJBossLogWithEnum.class); + <clinit>() { + } + LoggerJBossLogWithEnum() { + super(); + } +} +class LoggerJBossLogWithInnerEnum { + @JBossLog enum Inner { + CONSTANT(), + private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(Inner.class); + <clinit>() { + } + Inner() { + super(); + } + } + LoggerJBossLogWithInnerEnum() { + super(); + } +} @JBossLog(topic = "DifferentLogger") class LoggerJBossLogWithDifferentLoggerName { private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger("DifferentLogger"); <clinit>() { diff --git a/test/transform/resource/after-ecj/LoggerJul.java b/test/transform/resource/after-ecj/LoggerJul.java index 20cc5407..d1408245 100644 --- a/test/transform/resource/after-ecj/LoggerJul.java +++ b/test/transform/resource/after-ecj/LoggerJul.java @@ -31,4 +31,27 @@ import lombok.extern.java.Log; LoggerJulWithStaticField() { super(); } +} +@Log enum LoggerJulWithEnum { + CONSTANT(), + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LoggerJulWithEnum.class.getName()); + <clinit>() { + } + LoggerJulWithEnum() { + super(); + } +} +class LoggerJulWithInnerEnum { + @Log enum Inner { + CONSTANT(), + private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Inner.class.getName()); + <clinit>() { + } + Inner() { + super(); + } + } + LoggerJulWithInnerEnum() { + super(); + } }
\ No newline at end of file diff --git a/test/transform/resource/after-ecj/LoggerLog4j.java b/test/transform/resource/after-ecj/LoggerLog4j.java index e7d6c813..4d67b133 100644 --- a/test/transform/resource/after-ecj/LoggerLog4j.java +++ b/test/transform/resource/after-ecj/LoggerLog4j.java @@ -31,4 +31,27 @@ import lombok.extern.log4j.Log4j; LoggerLog4jWithStaticField() { super(); } +} +@Log4j enum LoggerLog4jWithEnum { + CONSTANT(), + private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LoggerLog4jWithEnum.class); + <clinit>() { + } + LoggerLog4jWithEnum() { + super(); + } +} +class LoggerLog4jWithInnerEnum { + @Log4j enum Inner { + CONSTANT(), + private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(Inner.class); + <clinit>() { + } + Inner() { + super(); + } + } + LoggerLog4jWithInnerEnum() { + super(); + } }
\ No newline at end of file diff --git a/test/transform/resource/after-ecj/LoggerLog4j2.java b/test/transform/resource/after-ecj/LoggerLog4j2.java index 88def98d..72d4ff5f 100644 --- a/test/transform/resource/after-ecj/LoggerLog4j2.java +++ b/test/transform/resource/after-ecj/LoggerLog4j2.java @@ -31,4 +31,27 @@ import lombok.extern.log4j.Log4j2; LoggerLog4j2WithStaticField() { super(); } +} +@Log4j2 enum LoggerLog4j2WithEnum { + CONSTANT(), + private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LoggerLog4j2WithEnum.class); + <clinit>() { + } + LoggerLog4j2WithEnum() { + super(); + } +} +class LoggerLog4j2WithInnerEnum { + @Log4j2 enum Inner { + CONSTANT(), + private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(Inner.class); + <clinit>() { + } + Inner() { + super(); + } + } + LoggerLog4j2WithInnerEnum() { + super(); + } }
\ No newline at end of file diff --git a/test/transform/resource/after-ecj/LoggerSlf4j.java b/test/transform/resource/after-ecj/LoggerSlf4j.java index 286d023b..85e49186 100644 --- a/test/transform/resource/after-ecj/LoggerSlf4j.java +++ b/test/transform/resource/after-ecj/LoggerSlf4j.java @@ -15,6 +15,29 @@ import lombok.extern.slf4j.Slf4j; super(); } } +@Slf4j enum LoggerSlf4jWithEnum { + CONSTANT(), + private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LoggerSlf4jWithEnum.class); + <clinit>() { + } + LoggerSlf4jWithEnum() { + super(); + } +} +class LoggerSlf4jWithInnerEnum { + @Slf4j enum Inner { + CONSTANT(), + private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Inner.class); + <clinit>() { + } + Inner() { + super(); + } + } + LoggerSlf4jWithInnerEnum() { + super(); + } +} class LoggerSlf4jOuter { static @lombok.extern.slf4j.Slf4j class Inner { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Inner.class); diff --git a/test/transform/resource/before/LoggerFlogger.java b/test/transform/resource/before/LoggerFlogger.java index b143aae9..4bdc20b0 100644 --- a/test/transform/resource/before/LoggerFlogger.java +++ b/test/transform/resource/before/LoggerFlogger.java @@ -14,3 +14,15 @@ class LoggerFloggerOuter { } } + +@Flogger +enum LoggerFloggerWithEnum { + CONSTANT; +} + +class LoggerFloggerWithInnerEnum { + @Flogger + enum Inner { + CONSTANT; + } +} diff --git a/test/transform/resource/before/LoggerFloggerRecord.java b/test/transform/resource/before/LoggerFloggerRecord.java new file mode 100644 index 00000000..908704d6 --- /dev/null +++ b/test/transform/resource/before/LoggerFloggerRecord.java @@ -0,0 +1,8 @@ +// version 14: + +import lombok.extern.flogger.Flogger; + +class LoggerFloggerRecord { + @Flogger + record Inner(String x) {} +} diff --git a/test/transform/resource/before/LoggerJBossLog.java b/test/transform/resource/before/LoggerJBossLog.java index f3480867..a26a0f7b 100644 --- a/test/transform/resource/before/LoggerJBossLog.java +++ b/test/transform/resource/before/LoggerJBossLog.java @@ -15,6 +15,18 @@ class LoggerJBossLogOuter { } } +@JBossLog +enum LoggerJBossLogWithEnum { + CONSTANT; +} + +class LoggerJBossLogWithInnerEnum { + @JBossLog + enum Inner { + CONSTANT; + } +} + @JBossLog(topic="DifferentLogger") class LoggerJBossLogWithDifferentLoggerName { } diff --git a/test/transform/resource/before/LoggerJul.java b/test/transform/resource/before/LoggerJul.java index 7b10d015..24fcdcde 100644 --- a/test/transform/resource/before/LoggerJul.java +++ b/test/transform/resource/before/LoggerJul.java @@ -15,4 +15,16 @@ class LoggerJulWithDifferentName { @Log(topic=LoggerJulWithStaticField.TOPIC) class LoggerJulWithStaticField { static final String TOPIC = "StaticField"; +} + +@Log +enum LoggerJulWithEnum { + CONSTANT; +} + +class LoggerJulWithInnerEnum { + @Log + enum Inner { + CONSTANT; + } }
\ No newline at end of file diff --git a/test/transform/resource/before/LoggerLog4j.java b/test/transform/resource/before/LoggerLog4j.java index b7086a05..3be24d74 100644 --- a/test/transform/resource/before/LoggerLog4j.java +++ b/test/transform/resource/before/LoggerLog4j.java @@ -15,4 +15,16 @@ class LoggerLog4jWithDifferentName { @Log4j(topic=LoggerLog4jWithStaticField.TOPIC) class LoggerLog4jWithStaticField { static final String TOPIC = "StaticField"; +} + +@Log4j +enum LoggerLog4jWithEnum { + CONSTANT; +} + +class LoggerLog4jWithInnerEnum { + @Log4j + enum Inner { + CONSTANT; + } }
\ No newline at end of file diff --git a/test/transform/resource/before/LoggerLog4j2.java b/test/transform/resource/before/LoggerLog4j2.java index 1dd48d7a..bf717cb8 100644 --- a/test/transform/resource/before/LoggerLog4j2.java +++ b/test/transform/resource/before/LoggerLog4j2.java @@ -16,4 +16,16 @@ class LoggerLog4j2WithDifferentName { @Log4j2(topic=LoggerLog4j2WithStaticField.TOPIC) class LoggerLog4j2WithStaticField { static final String TOPIC = "StaticField"; +} + +@Log4j2 +enum LoggerLog4j2WithEnum { + CONSTANT; +} + +class LoggerLog4j2WithInnerEnum { + @Log4j2 + enum Inner { + CONSTANT; + } }
\ No newline at end of file diff --git a/test/transform/resource/before/LoggerSlf4j.java b/test/transform/resource/before/LoggerSlf4j.java index c59db4ee..f6310bf5 100644 --- a/test/transform/resource/before/LoggerSlf4j.java +++ b/test/transform/resource/before/LoggerSlf4j.java @@ -8,6 +8,18 @@ class LoggerSlf4j { class LoggerSlf4jWithImport { } +@Slf4j +enum LoggerSlf4jWithEnum { + CONSTANT; +} + +class LoggerSlf4jWithInnerEnum { + @Slf4j + enum Inner { + CONSTANT; + } +} + class LoggerSlf4jOuter { @lombok.extern.slf4j.Slf4j static class Inner { diff --git a/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages b/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages index ca4d607f..b172ef79 100644 --- a/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages +++ b/test/transform/resource/messages-delombok/LoggerSlf4jOnNonType.java.messages @@ -1 +1 @@ -3 @Log is legal only on types. |||| 3 annotation type not applicable to this kind of declaration
\ No newline at end of file +3 @Log is legal only on types. |||| 3 annotation type not applicable to this kind of declaration |||| 3 annotation interface not applicable to this kind of declaration
\ No newline at end of file |