mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-12 22:14:53 +00:00
Merge pull request #3101 from Rawi01/utilityclass-inner
Update inner class type when creating a static class
This commit is contained in:
4 files changed
+26
No files matched your search
@@ -25,6 +25,9 @@ import static lombok.core.handlers.HandlerUtil.handleExperimentalFlagUsage;
|
||||
import static lombok.javac.handlers.JavacHandlerUtil.*;
|
||||
|
||||
import com.sun.tools.javac.code.Flags;
|
||||
import com.sun.tools.javac.code.Symbol.ClassSymbol;
|
||||
import com.sun.tools.javac.code.Type;
|
||||
import com.sun.tools.javac.code.Type.ClassType;
|
||||
import com.sun.tools.javac.tree.JCTree.JCAnnotation;
|
||||
import com.sun.tools.javac.tree.JCTree.JCBlock;
|
||||
import com.sun.tools.javac.tree.JCTree.JCClassDecl;
|
||||
@@ -124,6 +127,10 @@ public class HandleUtilityClass extends JavacAnnotationHandler<UtilityClass> {
|
||||
} else if (element.getKind() == Kind.TYPE) {
|
||||
JCClassDecl innerClassDecl = (JCClassDecl) element.get();
|
||||
innerClassDecl.mods.flags |= Flags.STATIC;
|
||||
ClassSymbol innerClassSymbol = innerClassDecl.sym;
|
||||
if (innerClassSymbol != null && innerClassSymbol.type instanceof ClassType) {
|
||||
((ClassType) innerClassSymbol.type).setEnclosingType(Type.noType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,10 +2,15 @@ final class UtilityClass {
|
||||
private static long someField = System.currentTimeMillis();
|
||||
static void someMethod() {
|
||||
System.out.println();
|
||||
new InnerClass();
|
||||
new InnerStaticClass();
|
||||
}
|
||||
protected static class InnerClass {
|
||||
private String innerInnerMember;
|
||||
}
|
||||
protected static class InnerStaticClass {
|
||||
private String innerInnerMember;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
private UtilityClass() {
|
||||
throw new java.lang.UnsupportedOperationException("This is a utility class and cannot be instantiated");
|
||||
|
||||
@@ -5,11 +5,19 @@ final @lombok.experimental.UtilityClass class UtilityClass {
|
||||
super();
|
||||
}
|
||||
}
|
||||
protected static class InnerStaticClass {
|
||||
private String innerInnerMember;
|
||||
protected InnerStaticClass() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
private static long someField = System.currentTimeMillis();
|
||||
<clinit>() {
|
||||
}
|
||||
static void someMethod() {
|
||||
System.out.println();
|
||||
new InnerClass();
|
||||
new InnerStaticClass();
|
||||
}
|
||||
private @java.lang.SuppressWarnings("all") UtilityClass() {
|
||||
super();
|
||||
|
||||
@@ -4,11 +4,17 @@ class UtilityClass {
|
||||
|
||||
void someMethod() {
|
||||
System.out.println();
|
||||
new InnerClass();
|
||||
new InnerStaticClass();
|
||||
}
|
||||
|
||||
protected class InnerClass {
|
||||
private String innerInnerMember;
|
||||
}
|
||||
|
||||
protected static class InnerStaticClass {
|
||||
private String innerInnerMember;
|
||||
}
|
||||
}
|
||||
|
||||
class UtilityInner {
|
||||
|
||||
Reference in new issue
Block a user