diff options
Diffstat (limited to 'src/core/lombok/javac/handlers/JavacHandlerUtil.java')
-rw-r--r-- | src/core/lombok/javac/handlers/JavacHandlerUtil.java | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java index 8a125fb6..ef2a936a 100644 --- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java +++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java @@ -900,10 +900,26 @@ public class JavacHandlerUtil { return flags; } + public static JCExpression genJavaLangTypeRef(JavacNode node, String... simpleNames) { + if (LombokOptionsFactory.getDelombokOptions(node.getContext()).getFormatPreferences().javaLangAsFqn()) { + return chainDots(node, "java", "lang", simpleNames); + } else { + return chainDots(node, null, null, simpleNames); + } + } + + public static JCExpression genJavaLangTypeRef(JavacNode node, int pos, String... simpleNames) { + if (LombokOptionsFactory.getDelombokOptions(node.getContext()).getFormatPreferences().javaLangAsFqn()) { + return chainDots(node, pos, "java", "lang", simpleNames); + } else { + return chainDots(node, pos, null, null, simpleNames); + } + } + private static void addSuppressWarningsAll(JCModifiers mods, JavacNode node, int pos, JCTree source, Context context) { if (!LombokOptionsFactory.getDelombokOptions(context).getFormatPreferences().generateSuppressWarnings()) return; JavacTreeMaker maker = node.getTreeMaker(); - JCExpression suppressWarningsType = chainDots(node, "java", "lang", "SuppressWarnings"); + JCExpression suppressWarningsType = genJavaLangTypeRef(node, "SuppressWarnings"); JCLiteral allLiteral = maker.Literal("all"); suppressWarningsType.pos = pos; allLiteral.pos = pos; @@ -933,8 +949,12 @@ public class JavacHandlerUtil { * @see com.sun.tools.javac.tree.JCTree.JCIdent * @see com.sun.tools.javac.tree.JCTree.JCFieldAccess */ - public static JCExpression chainDots(JavacNode node, String... elems) { - return chainDots(node, -1, elems); + public static JCExpression chainDots(JavacNode node, String elem1, String elem2, String... elems) { + return chainDots(node, -1, elem1, elem2, elems); + } + + public static JCExpression chainDots(JavacNode node, String[] elems) { + return chainDots(node, -1, null, null, elems); } /** @@ -949,17 +969,20 @@ public class JavacHandlerUtil { * @see com.sun.tools.javac.tree.JCTree.JCIdent * @see com.sun.tools.javac.tree.JCTree.JCFieldAccess */ - public static JCExpression chainDots(JavacNode node, int pos, String... elems) { + public static JCExpression chainDots(JavacNode node, int pos, String elem1, String elem2, String... elems) { assert elems != null; - assert elems.length > 0; JavacTreeMaker maker = node.getTreeMaker(); if (pos != -1) maker = maker.at(pos); - JCExpression e = maker.Ident(node.toName(elems[0])); - for (int i = 1 ; i < elems.length ; i++) { - e = maker.Select(e, node.toName(elems[i])); + JCExpression e = null; + if (elem1 != null) e = maker.Ident(node.toName(elem1)); + if (elem2 != null) e = e == null ? maker.Ident(node.toName(elem2)) : maker.Select(e, node.toName(elem2)); + for (int i = 0 ; i < elems.length ; i++) { + e = e == null ? maker.Ident(node.toName(elems[i])) : maker.Select(e, node.toName(elems[i])); } + assert e != null; + return e; } @@ -975,7 +998,7 @@ public class JavacHandlerUtil { * @see com.sun.tools.javac.tree.JCTree.JCFieldAccess */ public static JCExpression chainDotsString(JavacNode node, String elems) { - return chainDots(node, elems.split("\\.")); + return chainDots(node, null, null, elems.split("\\.")); } /** @@ -1007,7 +1030,7 @@ public class JavacHandlerUtil { JCVariableDecl varDecl = (JCVariableDecl) variable.get(); if (isPrimitive(varDecl.vartype)) return null; Name fieldName = varDecl.name; - JCExpression npe = chainDots(variable, "java", "lang", "NullPointerException"); + JCExpression npe = genJavaLangTypeRef(variable, "NullPointerException"); JCExpression exception = maker.NewClass(null, List.<JCExpression>nil(), npe, List.<JCExpression>of(maker.Literal(fieldName.toString())), null); JCStatement throwStatement = maker.Throw(exception); JCBlock throwBlock = maker.Block(0, List.of(throwStatement)); |