aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/lombok')
-rw-r--r--src/core/lombok/core/handlers/HandlerUtil.java18
-rw-r--r--src/core/lombok/eclipse/EcjAugments.java3
-rw-r--r--src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java52
-rwxr-xr-xsrc/core/lombok/eclipse/handlers/HandleBuilder.java12
-rw-r--r--src/core/lombok/javac/handlers/HandleBuilder.java14
-rw-r--r--src/core/lombok/javac/handlers/JavacHandlerUtil.java6
6 files changed, 40 insertions, 65 deletions
diff --git a/src/core/lombok/core/handlers/HandlerUtil.java b/src/core/lombok/core/handlers/HandlerUtil.java
index 92a9a142..9fd38720 100644
--- a/src/core/lombok/core/handlers/HandlerUtil.java
+++ b/src/core/lombok/core/handlers/HandlerUtil.java
@@ -762,12 +762,14 @@ public class HandlerUtil {
private static final Pattern LINE_BREAK_FINDER = Pattern.compile("(\\r?\\n)?");
public static String stripLinesWithTagFromJavadoc(String javadoc, String regexpFragment) {
+ if (javadoc == null || javadoc.isEmpty()) return javadoc;
Pattern p = Pattern.compile("^\\s*\\**\\s*" + regexpFragment + "\\s*\\**\\s*$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(javadoc);
return m.replaceAll("");
}
public static String stripSectionsFromJavadoc(String javadoc) {
+ if (javadoc == null || javadoc.isEmpty()) return javadoc;
Matcher sectionMatcher = SECTION_FINDER.matcher(javadoc);
if (!sectionMatcher.find()) return javadoc;
@@ -775,6 +777,7 @@ public class HandlerUtil {
}
public static String getJavadocSection(String javadoc, String sectionNameSpec) {
+ if (javadoc == null || javadoc.isEmpty()) return null;
String[] sectionNames = sectionNameSpec.split("\\|");
Matcher sectionMatcher = SECTION_FINDER.matcher(javadoc);
Matcher lineBreakMatcher = LINE_BREAK_FINDER.matcher(javadoc);
@@ -805,19 +808,30 @@ public class HandlerUtil {
private static final Pattern FIND_RETURN = Pattern.compile("^\\s*\\**\\s*@returns?\\s+.*$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
public static String addReturnsThisIfNeeded(String in) {
- if (FIND_RETURN.matcher(in).find()) return in;
+ if (in != null && FIND_RETURN.matcher(in).find()) return in;
return addJavadocLine(in, "@return {@code this}.");
}
public static String addReturnsUpdatedSelfIfNeeded(String in) {
- if (FIND_RETURN.matcher(in).find()) return in;
+ if (in != null && FIND_RETURN.matcher(in).find()) return in;
return addJavadocLine(in, "@return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).");
}
public static String addJavadocLine(String in, String line) {
+ if (in == null) return line;
if (in.endsWith("\n")) return in + line + "\n";
return in + "\n" + line;
}
+
+ public static String getParamJavadoc(String methodComment, String param) {
+ if (methodComment == null || methodComment.isEmpty()) return methodComment;
+ Pattern pattern = Pattern.compile("@param " + param + " (\\S|\\s)+?(?=^ ?@)", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
+ Matcher matcher = pattern.matcher(methodComment);
+ if (matcher.find()) {
+ return matcher.group();
+ }
+ return null;
+ }
}
diff --git a/src/core/lombok/eclipse/EcjAugments.java b/src/core/lombok/eclipse/EcjAugments.java
index 965c4fb6..cd7173a8 100644
--- a/src/core/lombok/eclipse/EcjAugments.java
+++ b/src/core/lombok/eclipse/EcjAugments.java
@@ -28,6 +28,7 @@ import java.util.concurrent.ConcurrentMap;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.Annotation;
import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
+import org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
import org.eclipse.jdt.internal.core.CompilationUnit;
import org.eclipse.jdt.internal.core.SourceMethod;
@@ -42,13 +43,13 @@ public final class EcjAugments {
public static final FieldAugment<ASTNode, Boolean> ASTNode_handled = FieldAugment.augment(ASTNode.class, boolean.class, "lombok$handled");
public static final FieldAugment<ASTNode, ASTNode> ASTNode_generatedBy = FieldAugment.augment(ASTNode.class, ASTNode.class, "$generatedBy");
public static final FieldAugment<Annotation, Boolean> Annotation_applied = FieldAugment.augment(Annotation.class, boolean.class, "lombok$applied");
+ public static final FieldAugment<ICompilationUnit, Map<String, String>> CompilationUnit_javadoc = FieldAugment.augment(ICompilationUnit.class, Map.class, "$javadoc");
public static final class EclipseAugments {
private EclipseAugments() {
// Prevent instantiation
}
- public static final FieldAugment<CompilationUnit, Map<String, String>> CompilationUnit_javadoc = FieldAugment.augment(CompilationUnit.class, Map.class, "$javadoc");
public static final FieldAugment<CompilationUnit, ConcurrentMap<String, List<SourceMethod>>> CompilationUnit_delegateMethods = FieldAugment.augment(CompilationUnit.class, ConcurrentMap.class, "$delegateMethods");
}
}
diff --git a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
index 62c71f5b..b58c2996 100644
--- a/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
+++ b/src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java
@@ -39,7 +39,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.eclipse.jdt.core.Signature;
import org.eclipse.jdt.core.compiler.CharOperation;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
@@ -106,7 +105,6 @@ import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
import org.eclipse.jdt.internal.compiler.lookup.TypeIds;
import org.eclipse.jdt.internal.compiler.lookup.WildcardBinding;
-import org.eclipse.jdt.internal.core.CompilationUnit;
import lombok.AccessLevel;
import lombok.ConfigurationKeys;
@@ -125,6 +123,7 @@ import lombok.core.configuration.TypeName;
import lombok.core.debug.ProblemReporter;
import lombok.core.handlers.HandlerUtil;
import lombok.core.handlers.HandlerUtil.FieldAccess;
+import lombok.eclipse.EcjAugments;
import lombok.eclipse.Eclipse;
import lombok.eclipse.EclipseAST;
import lombok.eclipse.EclipseNode;
@@ -2643,42 +2642,20 @@ public class EclipseHandlerUtil {
return null;
}
- private static class EclipseOnlyUtil {
- public static void setDocComment(CompilationUnitDeclaration cud, TypeDeclaration type, ASTNode node, String doc) {
- if (cud.compilationResult.compilationUnit instanceof CompilationUnit) {
- CompilationUnit compilationUnit = (CompilationUnit) cud.compilationResult.compilationUnit;
- Map<String, String> docs = EclipseAugments.CompilationUnit_javadoc.setIfAbsent(compilationUnit, new HashMap<String, String>());
-
- if (node instanceof AbstractMethodDeclaration) {
- AbstractMethodDeclaration methodDeclaration = (AbstractMethodDeclaration) node;
- String signature = getSignature(type, methodDeclaration);
- /* Add javadoc start marker, add leading asterisks to each line, add javadoc end marker */
- docs.put(signature, String.format("/**%n%s%n */", doc.replaceAll("(?m)^", " * ")));
- }
- }
- }
- }
-
- private static Boolean eclipseMode;
- private static boolean eclipseMode() {
- if (eclipseMode != null) return eclipseMode.booleanValue();
- try {
- Class.forName("org.eclipse.jdt.internal.core.CompilationUnit");
- eclipseMode = true;
- } catch (Throwable t) {
- eclipseMode = false;
- }
- return eclipseMode;
- }
-
public static void setDocComment(CompilationUnitDeclaration cud, EclipseNode eclipseNode, String doc) {
- if (!eclipseMode()) return;
setDocComment(cud, (TypeDeclaration) upToTypeNode(eclipseNode).get(), eclipseNode.get(), doc);
}
public static void setDocComment(CompilationUnitDeclaration cud, TypeDeclaration type, ASTNode node, String doc) {
- if (!eclipseMode()) return;
- EclipseOnlyUtil.setDocComment(cud, type, node, doc);
+ if (doc == null) return;
+
+ Map<String, String> docs = EcjAugments.CompilationUnit_javadoc.setIfAbsent(cud.compilationResult.compilationUnit, new HashMap<String, String>());
+ if (node instanceof AbstractMethodDeclaration) {
+ AbstractMethodDeclaration methodDeclaration = (AbstractMethodDeclaration) node;
+ String signature = getSignature(type, methodDeclaration);
+ /* Add javadoc start marker, remove trailing line break, add leading asterisks to each line, add javadoc end marker */
+ docs.put(signature, String.format("/**%n%s%n */", doc.replaceAll("$\\r?\\n", "").replaceAll("(?m)^", " * ")));
+ }
}
public static String getSignature(TypeDeclaration type, AbstractMethodDeclaration methodDeclaration) {
@@ -2690,8 +2667,7 @@ public class EclipseHandlerUtil {
Argument[] arguments = methodDeclaration.arguments;
if (arguments != null) {
for (Argument argument : arguments) {
- String signature = Signature.createTypeSignature(argument.type.getLastToken(), false);
- sb.append(signature);
+ sb.append(String.valueOf(argument.type));
}
}
sb.append(")");
@@ -2786,10 +2762,10 @@ public class EclipseHandlerUtil {
try {
CompilationUnitDeclaration cud = ((CompilationUnitDeclaration) from.top().get());
String newJavadoc = copyMode.apply(cud, from);
- if (newJavadoc != null) {
- if (forceAddReturn) newJavadoc = addReturnsThisIfNeeded(newJavadoc);
- setDocComment(cud, type, to, newJavadoc);
+ if (forceAddReturn) {
+ newJavadoc = addReturnsThisIfNeeded(newJavadoc);
}
+ setDocComment(cud, type, to, newJavadoc);
} catch (Exception ignore) {}
}
}
diff --git a/src/core/lombok/eclipse/handlers/HandleBuilder.java b/src/core/lombok/eclipse/handlers/HandleBuilder.java
index f8eb9ed0..189c5a69 100755
--- a/src/core/lombok/eclipse/handlers/HandleBuilder.java
+++ b/src/core/lombok/eclipse/handlers/HandleBuilder.java
@@ -29,8 +29,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
@@ -1045,14 +1043,8 @@ public class HandleBuilder extends EclipseAnnotationHandler<Builder> {
try {
CompilationUnitDeclaration cud = (CompilationUnitDeclaration) from.top().get();
String methodComment = getDocComment(cud, from.get());
- if (methodComment == null) return;
-
- Pattern pattern = Pattern.compile("@param " + param + " (\\S|\\s)+?(?=^ ?@)", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(methodComment);
- if (matcher.find()) {
- String newJavadoc = addReturnsThisIfNeeded(matcher.group());
- setDocComment(cud, type, to, newJavadoc);
- }
+ String newJavadoc = addReturnsThisIfNeeded(getParamJavadoc(methodComment, param));
+ setDocComment(cud, type, to, newJavadoc);
} catch (Exception ignore) {}
}
diff --git a/src/core/lombok/javac/handlers/HandleBuilder.java b/src/core/lombok/javac/handlers/HandleBuilder.java
index 40b59183..867d6889 100644
--- a/src/core/lombok/javac/handlers/HandleBuilder.java
+++ b/src/core/lombok/javac/handlers/HandleBuilder.java
@@ -27,8 +27,6 @@ import static lombok.javac.JavacTreeMaker.TypeTag.typeTag;
import static lombok.javac.handlers.JavacHandlerUtil.*;
import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.lang.model.element.Modifier;
@@ -927,16 +925,10 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
try {
JCCompilationUnit cu = ((JCCompilationUnit) from.top().get());
String methodComment = Javac.getDocComment(cu, from.get());
- if (methodComment == null) return;
-
- Pattern pattern = Pattern.compile("@param " + param + " (\\S|\\s)+?(?=^ ?@)", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
- Matcher matcher = pattern.matcher(methodComment);
- if (matcher.find()) {
- String newJavadoc = addReturnsThisIfNeeded(matcher.group());
- Javac.setDocComment(cu, to, newJavadoc);
- }
+ String newJavadoc = addReturnsThisIfNeeded(getParamJavadoc(methodComment, param));
+ Javac.setDocComment(cu, to, newJavadoc);
} catch (Exception ignore) {}
- }
+ }
public JavacNode makeBuilderClass(BuilderJob job) {
//boolean isStatic, JavacNode source, JavacNode tdParent, String builderClassName, List<JCTypeParameter> typeParams, JCAnnotation ast, AccessLevel access) {
diff --git a/src/core/lombok/javac/handlers/JavacHandlerUtil.java b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
index df1eb438..fbde9568 100644
--- a/src/core/lombok/javac/handlers/JavacHandlerUtil.java
+++ b/src/core/lombok/javac/handlers/JavacHandlerUtil.java
@@ -2120,10 +2120,10 @@ public class JavacHandlerUtil {
try {
JCCompilationUnit cu = ((JCCompilationUnit) from.top().get());
String newJavadoc = copyMode.apply(cu, from);
- if (newJavadoc != null) {
- if (forceAddReturn) newJavadoc = addReturnsThisIfNeeded(newJavadoc);
- Javac.setDocComment(cu, to, newJavadoc);
+ if (forceAddReturn) {
+ newJavadoc = addReturnsThisIfNeeded(newJavadoc);
}
+ Javac.setDocComment(cu, to, newJavadoc);
} catch (Exception ignore) {}
}