aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@zwitserloot.com>2013-07-28 03:10:34 +0200
committerReinier Zwitserloot <reinier@zwitserloot.com>2013-07-28 03:10:34 +0200
commit4dbe3802fda3b317bb82bca80d7c69f58b239cfd (patch)
tree03ee93afc636ae82ed922a9150b6438dead0ee5b /src/core
parente2af5ed0c7786e01bec861f21f2e5ec3bc5ea33f (diff)
downloadlombok-4dbe3802fda3b317bb82bca80d7c69f58b239cfd.tar.gz
lombok-4dbe3802fda3b317bb82bca80d7c69f58b239cfd.tar.bz2
lombok-4dbe3802fda3b317bb82bca80d7c69f58b239cfd.zip
more progress. This one is less JDK8 compatible, but
it has major refactorings to make JDK6-8 support possibly with much prettier code.
Diffstat (limited to 'src/core')
-rw-r--r--src/core/lombok/javac/JavacResolution.java35
-rw-r--r--src/core/lombok/javac/handlers/HandleBuilder.java6
-rw-r--r--src/core/lombok/javac/handlers/HandleGetter.java9
-rw-r--r--src/core/lombok/javac/handlers/JavacHandlerUtil.java24
-rw-r--r--src/core/lombok/javac/handlers/NonNullHandler.java7
5 files changed, 43 insertions, 38 deletions
diff --git a/src/core/lombok/javac/JavacResolution.java b/src/core/lombok/javac/JavacResolution.java
index 42299572..7d4bdabd 100644
--- a/src/core/lombok/javac/JavacResolution.java
+++ b/src/core/lombok/javac/JavacResolution.java
@@ -35,6 +35,8 @@ import java.util.Queue;
import javax.lang.model.type.TypeKind;
import javax.tools.DiagnosticListener;
+import static lombok.javac.JavacTreeMaker.TypeTag.typeTag;
+
import com.sun.tools.javac.code.BoundKind;
import com.sun.tools.javac.code.Symbol.TypeSymbol;
import com.sun.tools.javac.code.Symtab;
@@ -56,7 +58,6 @@ import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
import com.sun.tools.javac.tree.JCTree.JCExpression;
import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
-import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
@@ -389,7 +390,7 @@ public class JavacResolution {
}
public static JCExpression createJavaLangObject(JavacAST ast) {
- TreeMaker maker = ast.getTreeMaker();
+ JavacTreeMaker maker = ast.getTreeMaker();
JCExpression out = maker.Ident(ast.toName("java"));
out = maker.Select(out, ast.toName("lang"));
out = maker.Select(out, ast.toName("Object"));
@@ -416,10 +417,10 @@ public class JavacResolution {
// NB: There's such a thing as maker.Type(type), but this doesn't work very well; it screws up anonymous classes, captures, and adds an extra prefix dot for some reason too.
// -- so we write our own take on that here.
- TreeMaker maker = ast.getTreeMaker();
+ JavacTreeMaker maker = ast.getTreeMaker();
- if (Javac.compareCTC(type.tag, CTC_BOT)) return createJavaLangObject(ast);
- if (Javac.compareCTC(type.tag, CTC_VOID)) return allowVoid ? primitiveToJCTree(type.getKind(), maker) : createJavaLangObject(ast);
+ if (CTC_BOT.equals(typeTag(type))) return createJavaLangObject(ast);
+ if (CTC_VOID.equals(typeTag(type))) return allowVoid ? primitiveToJCTree(type.getKind(), maker) : createJavaLangObject(ast);
if (type.isPrimitive()) return primitiveToJCTree(type.getKind(), maker);
if (type.isErroneous()) throw new TypeNotConvertibleException("Type cannot be resolved");
@@ -453,7 +454,7 @@ public class JavacResolution {
upper = type.getUpperBound();
}
if (allowCompound) {
- if (lower == null || Javac.compareCTC(lower.tag, CTC_BOT)) {
+ if (lower == null || CTC_BOT.equals(typeTag(lower))) {
if (upper == null || upper.toString().equals("java.lang.Object")) {
return maker.Wildcard(maker.TypeBoundKind(BoundKind.UNBOUND), null);
}
@@ -478,7 +479,7 @@ public class JavacResolution {
String qName;
if (symbol.isLocal()) {
qName = symbol.getSimpleName().toString();
- } else if (symbol.type != null && symbol.type.getEnclosingType() != null && Javac.compareCTC(symbol.type.getEnclosingType().tag, Javac.getTypeTag("CLASS"))) {
+ } else if (symbol.type != null && symbol.type.getEnclosingType() != null && typeTag(symbol.type.getEnclosingType()).equals(typeTag("CLASS"))) {
replacement = typeToJCTree0(type.getEnclosingType(), ast, false, false);
qName = symbol.getSimpleName().toString();
} else {
@@ -511,26 +512,26 @@ public class JavacResolution {
return rawTypeNode;
}
- private static JCExpression primitiveToJCTree(TypeKind kind, TreeMaker maker) throws TypeNotConvertibleException {
+ private static JCExpression primitiveToJCTree(TypeKind kind, JavacTreeMaker maker) throws TypeNotConvertibleException {
switch (kind) {
case BYTE:
- return Javac.makeTypeIdent(maker, CTC_BYTE);
+ return maker.TypeIdent(CTC_BYTE);
case CHAR:
- return Javac.makeTypeIdent(maker, CTC_CHAR);
+ return maker.TypeIdent( CTC_CHAR);
case SHORT:
- return Javac.makeTypeIdent(maker, CTC_SHORT);
+ return maker.TypeIdent(CTC_SHORT);
case INT:
- return Javac.makeTypeIdent(maker, CTC_INT);
+ return maker.TypeIdent(CTC_INT);
case LONG:
- return Javac.makeTypeIdent(maker, CTC_LONG);
+ return maker.TypeIdent(CTC_LONG);
case FLOAT:
- return Javac.makeTypeIdent(maker, CTC_FLOAT);
+ return maker.TypeIdent(CTC_FLOAT);
case DOUBLE:
- return Javac.makeTypeIdent(maker, CTC_DOUBLE);
+ return maker.TypeIdent(CTC_DOUBLE);
case BOOLEAN:
- return Javac.makeTypeIdent(maker, CTC_BOOLEAN);
+ return maker.TypeIdent(CTC_BOOLEAN);
case VOID:
- return Javac.makeTypeIdent(maker, CTC_VOID);
+ return maker.TypeIdent(CTC_VOID);
case NULL:
case NONE:
case OTHER:
diff --git a/src/core/lombok/javac/handlers/HandleBuilder.java b/src/core/lombok/javac/handlers/HandleBuilder.java
index 1c0f2ec0..4f48b69f 100644
--- a/src/core/lombok/javac/handlers/HandleBuilder.java
+++ b/src/core/lombok/javac/handlers/HandleBuilder.java
@@ -41,7 +41,6 @@ import com.sun.tools.javac.tree.JCTree.JCStatement;
import com.sun.tools.javac.tree.JCTree.JCTypeApply;
import com.sun.tools.javac.tree.JCTree.JCTypeParameter;
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
-import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.ListBuffer;
import com.sun.tools.javac.util.Name;
@@ -53,13 +52,14 @@ import lombok.core.HandlerPriority;
import lombok.core.TransformationsUtil;
import lombok.experimental.Builder;
import lombok.experimental.NonFinal;
-import lombok.javac.Javac;
import lombok.javac.JavacAnnotationHandler;
import lombok.javac.JavacNode;
import lombok.javac.JavacTreeMaker;
import lombok.javac.handlers.HandleConstructor.SkipIfConstructorExists;
import static lombok.core.handlers.HandlerUtil.*;
import static lombok.javac.handlers.JavacHandlerUtil.*;
+import static lombok.javac.Javac.*;
+import static lombok.javac.JavacTreeMaker.TypeTag.*;
@ProviderFor(JavacAnnotationHandler.class)
@HandlerPriority(-1024) //-2^10; to ensure we've picked up @FieldDefault's changes (-2048) but @Value hasn't removed itself yet (-512), so that we can error on presence of it on the builder classes.
@@ -240,7 +240,7 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
JCExpression fn = maker.Select(maker.Ident(((JCClassDecl) type.up().get()).name), staticName);
call = maker.Apply(typeParams.toList(), fn, args.toList());
- if (returnType instanceof JCPrimitiveTypeTree && compareCTC(Javac.getTypeTag((JCPrimitiveTypeTree) returnType), CTC_VOID)) {
+ if (returnType instanceof JCPrimitiveTypeTree && CTC_VOID.equals(typeTag(returnType))) {
statement = maker.Exec(call);
} else {
statement = maker.Return(call);
diff --git a/src/core/lombok/javac/handlers/HandleGetter.java b/src/core/lombok/javac/handlers/HandleGetter.java
index f5bf2b6c..f6c14add 100644
--- a/src/core/lombok/javac/handlers/HandleGetter.java
+++ b/src/core/lombok/javac/handlers/HandleGetter.java
@@ -22,6 +22,7 @@
package lombok.javac.handlers;
import static lombok.javac.Javac.*;
+import static lombok.javac.JavacTreeMaker.TypeTag.*;
import static lombok.javac.handlers.JavacHandlerUtil.*;
import java.util.Collection;
@@ -35,10 +36,10 @@ import lombok.Getter;
import lombok.core.AST.Kind;
import lombok.core.AnnotationValues;
import lombok.core.TransformationsUtil;
-import lombok.javac.Javac;
import lombok.javac.JavacAnnotationHandler;
import lombok.javac.JavacNode;
import lombok.javac.JavacTreeMaker;
+import lombok.javac.JavacTreeMaker.TypeTag;
import lombok.javac.handlers.JavacHandlerUtil.FieldAccess;
import org.mangosdk.spi.ProviderFor;
@@ -289,9 +290,9 @@ public class HandleGetter extends JavacAnnotationHandler<Getter> {
private static final String JLO = "java.lang.Object";
private static final List<JCExpression> NIL_EXPRESSION = List.nil();
- private static final java.util.Map<Object, String> TYPE_MAP;
+ private static final java.util.Map<TypeTag, String> TYPE_MAP;
static {
- Map<Object, String> m = new HashMap<Object, String>();
+ Map<TypeTag, String> m = new HashMap<TypeTag, String>();
m.put(CTC_INT, "java.lang.Integer");
m.put(CTC_DOUBLE, "java.lang.Double");
m.put(CTC_FLOAT, "java.lang.Float");
@@ -335,7 +336,7 @@ public class HandleGetter extends JavacAnnotationHandler<Getter> {
field.type = null;
boolean isPrimitive = false;
if (field.vartype instanceof JCPrimitiveTypeTree) {
- String boxed = TYPE_MAP.get(((JCPrimitiveTypeTree)field.vartype).typetag);
+ String boxed = TYPE_MAP.get(typeTag(field.vartype));
if (boxed != null) {
isPrimitive = true;
field.vartype = chainDotsString(fieldNode, boxed);
diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
index 630cc31a..d0673c57 100644
--- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java
+++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
@@ -1277,17 +1277,17 @@ public class JavacHandlerUtil {
*/
public static void copyJavadoc(JavacNode from, JCTree to, CopyJavadoc copyMode) {
if (copyMode == null) copyMode = CopyJavadoc.VERBATIM;
-// try {
-// JCCompilationUnit cu = ((JCCompilationUnit) from.top().get());
-// if (cu.docComments != null) {
-// String javadoc = cu.docComments.get(from.get());
-//
-// if (javadoc != null) {
-// String[] filtered = copyMode.split(javadoc);
-// cu.docComments.put(to, filtered[0]);
-// cu.docComments.put(from.get(), filtered[1]);
-// }
-// }
-// } catch (Exception ignore) {}
+ try {
+ JCCompilationUnit cu = ((JCCompilationUnit) from.top().get());
+ if (cu.docComments != null) {
+ String javadoc = cu.docComments.get(from.get());
+
+ if (javadoc != null) {
+ String[] filtered = copyMode.split(javadoc);
+ cu.docComments.put(to, filtered[0]);
+ cu.docComments.put(from.get(), filtered[1]);
+ }
+ }
+ } catch (Exception ignore) {}
}
}
diff --git a/src/core/lombok/javac/handlers/NonNullHandler.java b/src/core/lombok/javac/handlers/NonNullHandler.java
index d74fb55d..3cf76f26 100644
--- a/src/core/lombok/javac/handlers/NonNullHandler.java
+++ b/src/core/lombok/javac/handlers/NonNullHandler.java
@@ -46,6 +46,9 @@ import lombok.core.AST.Kind;
import lombok.javac.JavacAnnotationHandler;
import lombok.javac.JavacNode;
+import static lombok.javac.JavacTreeMaker.TypeTag.*;
+import static lombok.javac.JavacTreeMaker.TreeTag.*;
+
@ProviderFor(JavacAnnotationHandler.class)
public class NonNullHandler extends JavacAnnotationHandler<NonNull> {
@Override public void handle(AnnotationValues<NonNull> annotation, JCAnnotation ast, JavacNode annotationNode) {
@@ -138,10 +141,10 @@ public class NonNullHandler extends JavacAnnotationHandler<NonNull> {
while (cond instanceof JCParens) cond = ((JCParens) cond).expr;
if (!(cond instanceof JCBinary)) return null;
JCBinary bin = (JCBinary) cond;
- if (compareCTC(getTag(bin), CTC_EQUAL)) return null;
+ if (!CTC_EQUAL.equals(treeTag(bin))) return null;
if (!(bin.lhs instanceof JCIdent)) return null;
if (!(bin.rhs instanceof JCLiteral)) return null;
- if (compareCTC(getTypeTag((JCLiteral) bin.rhs), CTC_BOT)) return null;
+ if (!CTC_BOT.equals(typeTag(bin.rhs))) return null;
return ((JCIdent) bin.lhs).name.toString();
}
}