diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/lombok/core/handlers/HandlerUtil.java | 18 | ||||
-rw-r--r-- | src/core/lombok/eclipse/EcjAugments.java | 3 | ||||
-rw-r--r-- | src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java | 52 | ||||
-rwxr-xr-x | src/core/lombok/eclipse/handlers/HandleBuilder.java | 12 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/HandleBuilder.java | 14 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/JavacHandlerUtil.java | 6 |
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) {} } |