aboutsummaryrefslogtreecommitdiff
path: root/src/core/lombok/eclipse/handlers/HandleBuilder.java
diff options
context:
space:
mode:
authorRawi01 <Rawi01@users.noreply.github.com>2020-07-29 12:55:02 +0200
committerRawi01 <Rawi01@users.noreply.github.com>2020-07-29 13:39:42 +0200
commit2b4b5c983540af4a4c08cfb7a3d4057df0b84c39 (patch)
tree78a310e0f6d611d2113caf9a4b0a38889ac1926f /src/core/lombok/eclipse/handlers/HandleBuilder.java
parent7dfbe4323c15cbd88983380b27a250d2a381d148 (diff)
downloadlombok-2b4b5c983540af4a4c08cfb7a3d4057df0b84c39.tar.gz
lombok-2b4b5c983540af4a4c08cfb7a3d4057df0b84c39.tar.bz2
lombok-2b4b5c983540af4a4c08cfb7a3d4057df0b84c39.zip
Support javadoc copying in eclipse
Diffstat (limited to 'src/core/lombok/eclipse/handlers/HandleBuilder.java')
-rwxr-xr-xsrc/core/lombok/eclipse/handlers/HandleBuilder.java30
1 files changed, 27 insertions, 3 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleBuilder.java b/src/core/lombok/eclipse/handlers/HandleBuilder.java
index 801fe7e7..9e6c28e8 100755
--- a/src/core/lombok/eclipse/handlers/HandleBuilder.java
+++ b/src/core/lombok/eclipse/handlers/HandleBuilder.java
@@ -21,8 +21,8 @@
*/
package lombok.eclipse.handlers;
-import static lombok.eclipse.Eclipse.*;
import static lombok.core.handlers.HandlerUtil.*;
+import static lombok.eclipse.Eclipse.*;
import static lombok.eclipse.handlers.EclipseHandlerUtil.*;
import java.lang.reflect.Modifier;
@@ -30,6 +30,8 @@ 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;
@@ -84,14 +86,16 @@ import lombok.ConfigurationKeys;
import lombok.Singular;
import lombok.ToString;
import lombok.core.AST.Kind;
-import lombok.core.handlers.HandlerUtil;
-import lombok.core.handlers.InclusionExclusionUtils.Included;
import lombok.core.AnnotationValues;
import lombok.core.HandlerPriority;
import lombok.core.configuration.CheckerFrameworkVersion;
+import lombok.core.handlers.HandlerUtil;
+import lombok.core.handlers.HandlerUtil.FieldAccess;
+import lombok.core.handlers.InclusionExclusionUtils.Included;
import lombok.eclipse.Eclipse;
import lombok.eclipse.EclipseAnnotationHandler;
import lombok.eclipse.EclipseNode;
+import lombok.eclipse.handlers.EclipseHandlerUtil.CopyJavadoc;
import lombok.eclipse.handlers.EclipseHandlerUtil.MemberExistsResult;
import lombok.eclipse.handlers.EclipseSingularsRecipes.EclipseSingularizer;
import lombok.eclipse.handlers.EclipseSingularsRecipes.SingularData;
@@ -965,9 +969,29 @@ public class HandleBuilder extends EclipseAnnotationHandler<Builder> {
typeReference.annotations[0] = new Annotation[] {ann};
setter.receiver = new Receiver(new char[] { 't', 'h', 'i', 's' }, 0, typeReference, null, Modifier.FINAL);
}
+ if (sourceNode.up().getKind() == Kind.METHOD) {
+ copyJavadocFromParam(originalFieldNode.up(), setter, td, paramName.toString());
+ } else {
+ copyJavadoc(originalFieldNode, setter, td, CopyJavadoc.SETTER, true);
+ }
injectMethod(builderType, setter);
}
+ private void copyJavadocFromParam(EclipseNode from, MethodDeclaration to, TypeDeclaration type, String param) {
+ 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);
+ }
+ } catch (Exception ignore) {}
+ }
+
public EclipseNode makeBuilderClass(boolean isStatic, EclipseNode tdParent, String builderClassName, TypeParameter[] typeParams, ASTNode source, AccessLevel access) {
TypeDeclaration parent = (TypeDeclaration) tdParent.get();
TypeDeclaration builder = new TypeDeclaration(parent.compilationResult);