aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReinier Zwitserloot <r.zwitserloot@projectlombok.org>2023-01-12 01:56:15 +0100
committerGitHub <noreply@github.com>2023-01-12 01:56:15 +0100
commit8bb4dc5daa8792e718e88c596812f232a2b73e6e (patch)
tree359d583cc91248be7eaf895e5d0371f1da555a27
parentb69ff85b9494a1a05a5763ef53069437328d443a (diff)
parent4feabb4d1e247f21134657a159727b6f6c9e2c94 (diff)
downloadlombok-8bb4dc5daa8792e718e88c596812f232a2b73e6e.tar.gz
lombok-8bb4dc5daa8792e718e88c596812f232a2b73e6e.tar.bz2
lombok-8bb4dc5daa8792e718e88c596812f232a2b73e6e.zip
Merge pull request #3312 from Rawi01/extensionmethod-nonstatic
Ignore non-static/non-public extension methods
-rw-r--r--src/core/lombok/javac/handlers/HandleExtensionMethod.java3
-rw-r--r--test/transform/resource/after-delombok/ExtensionMethodNonStatic.java12
-rw-r--r--test/transform/resource/after-ecj/ExtensionMethodNonStatic.java18
-rw-r--r--test/transform/resource/before/ExtensionMethodNonStatic.java15
4 files changed, 47 insertions, 1 deletions
diff --git a/src/core/lombok/javac/handlers/HandleExtensionMethod.java b/src/core/lombok/javac/handlers/HandleExtensionMethod.java
index 98b000c2..af03d000 100644
--- a/src/core/lombok/javac/handlers/HandleExtensionMethod.java
+++ b/src/core/lombok/javac/handlers/HandleExtensionMethod.java
@@ -117,7 +117,8 @@ public class HandleExtensionMethod extends JavacAnnotationHandler<ExtensionMetho
if (tsym != null) for (Symbol member : tsym.getEnclosedElements()) {
if (member.getKind() != ElementKind.METHOD) continue;
MethodSymbol method = (MethodSymbol) member;
- if ((method.flags() & (STATIC | PUBLIC)) == 0) continue;
+ if ((method.flags() & STATIC) == 0) continue;
+ if ((method.flags() & PUBLIC) == 0) continue;
if (method.params().isEmpty()) continue;
extensionMethods.add(method);
}
diff --git a/test/transform/resource/after-delombok/ExtensionMethodNonStatic.java b/test/transform/resource/after-delombok/ExtensionMethodNonStatic.java
new file mode 100644
index 00000000..c0f71308
--- /dev/null
+++ b/test/transform/resource/after-delombok/ExtensionMethodNonStatic.java
@@ -0,0 +1,12 @@
+class ExtensionMethodNonStatic {
+ public void test() {
+ String s = "test";
+ s.startsWith("");
+ }
+
+ static class Extensions {
+ public boolean startsWith(String s, String prefix) {
+ return s.startsWith(prefix);
+ }
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/ExtensionMethodNonStatic.java b/test/transform/resource/after-ecj/ExtensionMethodNonStatic.java
new file mode 100644
index 00000000..e2362790
--- /dev/null
+++ b/test/transform/resource/after-ecj/ExtensionMethodNonStatic.java
@@ -0,0 +1,18 @@
+import lombok.experimental.ExtensionMethod;
+@ExtensionMethod({ExtensionMethodNonStatic.Extensions.class}) class ExtensionMethodNonStatic {
+ static class Extensions {
+ Extensions() {
+ super();
+ }
+ public boolean startsWith(String s, String prefix) {
+ return s.startsWith(prefix);
+ }
+ }
+ ExtensionMethodNonStatic() {
+ super();
+ }
+ public void test() {
+ String s = "test";
+ s.startsWith("");
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/ExtensionMethodNonStatic.java b/test/transform/resource/before/ExtensionMethodNonStatic.java
new file mode 100644
index 00000000..9ccaaedd
--- /dev/null
+++ b/test/transform/resource/before/ExtensionMethodNonStatic.java
@@ -0,0 +1,15 @@
+import lombok.experimental.ExtensionMethod;
+
+@ExtensionMethod({ExtensionMethodNonStatic.Extensions.class})
+class ExtensionMethodNonStatic {
+ public void test() {
+ String s = "test";
+ s.startsWith("");
+ }
+
+ static class Extensions {
+ public boolean startsWith(String s, String prefix) {
+ return s.startsWith(prefix);
+ }
+ }
+}