From ea14879df8492613f563b9130667ae3d0c3719e1 Mon Sep 17 00:00:00 2001 From: Rawi01 Date: Sun, 30 Oct 2022 10:18:07 +0100 Subject: [fixes #3242] Use real type for enclosing class --- src/core/lombok/javac/JavacResolution.java | 11 +++++++++-- .../resource/after-delombok/ValSuperDefaultMethod.java | 12 ++++++++++++ .../resource/after-ecj/ValSuperDefaultMethod.java | 14 ++++++++++++++ .../transform/resource/before/ValSuperDefaultMethod.java | 16 ++++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 test/transform/resource/after-delombok/ValSuperDefaultMethod.java create mode 100644 test/transform/resource/after-ecj/ValSuperDefaultMethod.java create mode 100644 test/transform/resource/before/ValSuperDefaultMethod.java diff --git a/src/core/lombok/javac/JavacResolution.java b/src/core/lombok/javac/JavacResolution.java index f1109f4e..6ff6efe7 100644 --- a/src/core/lombok/javac/JavacResolution.java +++ b/src/core/lombok/javac/JavacResolution.java @@ -244,8 +244,15 @@ public class JavacResolution { } private void attrib(JCTree tree, Env env) { - if (env.enclClass.type == null) try { - env.enclClass.type = Type.noType; + try { + if (env.enclClass.type == null) { + if (env.enclClass.sym != null) { + env.enclClass.type = env.enclClass.sym.type; + } + } + if (env.enclClass.type == null) { + env.enclClass.type = Type.noType; + } } catch (Throwable ignore) { // This addresses issue #1553 which involves JDK9; if it doesn't exist, we probably don't need to set it. } diff --git a/test/transform/resource/after-delombok/ValSuperDefaultMethod.java b/test/transform/resource/after-delombok/ValSuperDefaultMethod.java new file mode 100644 index 00000000..5275a5e8 --- /dev/null +++ b/test/transform/resource/after-delombok/ValSuperDefaultMethod.java @@ -0,0 +1,12 @@ +// version :9 +class ValSuperDefaultMethod implements Default { + public void test() { + final java.lang.String a = ""; + Default.super.method(); + } +} + +interface Default { + default void method() { + } +} \ No newline at end of file diff --git a/test/transform/resource/after-ecj/ValSuperDefaultMethod.java b/test/transform/resource/after-ecj/ValSuperDefaultMethod.java new file mode 100644 index 00000000..cb0ec47c --- /dev/null +++ b/test/transform/resource/after-ecj/ValSuperDefaultMethod.java @@ -0,0 +1,14 @@ +import lombok.val; +class ValSuperDefaultMethod implements Default { + ValSuperDefaultMethod() { + super(); + } + public void test() { + final @val java.lang.String a = ""; + Default.super.method(); + } +} +interface Default { + default void method() { + } +} \ No newline at end of file diff --git a/test/transform/resource/before/ValSuperDefaultMethod.java b/test/transform/resource/before/ValSuperDefaultMethod.java new file mode 100644 index 00000000..93bcb153 --- /dev/null +++ b/test/transform/resource/before/ValSuperDefaultMethod.java @@ -0,0 +1,16 @@ +// version :9 +import lombok.val; + +class ValSuperDefaultMethod implements Default { + public void test() { + val a = ""; + Default.super.method(); + } + +} + +interface Default { + default void method() { + + } +} \ No newline at end of file -- cgit