mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 04:16:19 +00:00
[fixes #2011] If you have a field named build or toString, and you generate a builder, that builder wouldn’t make the build or toString methods because it thinks the builder-setter methods it just generated that so happen to have that name indicate you don’t want lombok to do that.
You really shouldn’t name any fields builder or toString, though.
This commit is contained in:
5 files changed
+99
-10
No files matched your search
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2013-2018 The Project Lombok Authors.
|
||||
* Copyright (C) 2013-2019 The Project Lombok Authors.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -87,6 +87,7 @@ import lombok.core.HandlerPriority;
|
||||
import lombok.eclipse.Eclipse;
|
||||
import lombok.eclipse.EclipseAnnotationHandler;
|
||||
import lombok.eclipse.EclipseNode;
|
||||
import lombok.eclipse.handlers.EclipseHandlerUtil.MemberExistsResult;
|
||||
import lombok.eclipse.handlers.EclipseSingularsRecipes.EclipseSingularizer;
|
||||
import lombok.eclipse.handlers.EclipseSingularsRecipes.SingularData;
|
||||
import lombok.eclipse.handlers.HandleConstructor.SkipIfConstructorExists;
|
||||
@@ -460,9 +461,13 @@ public class HandleBuilder extends EclipseAnnotationHandler<Builder> {
|
||||
makeSetterMethodsForBuilder(builderType, bfd, annotationNode, fluent, chain);
|
||||
}
|
||||
|
||||
if (methodExists(buildMethodName, builderType, -1) == MemberExistsResult.NOT_EXISTS) {
|
||||
MethodDeclaration md = generateBuildMethod(tdParent, isStatic, buildMethodName, nameOfStaticBuilderMethod, returnType, builderFields, builderType, thrownExceptions, addCleaning, ast);
|
||||
if (md != null) injectMethod(builderType, md);
|
||||
{
|
||||
MemberExistsResult methodExists = methodExists(buildMethodName, builderType, -1);
|
||||
if (methodExists == MemberExistsResult.EXISTS_BY_LOMBOK) methodExists = methodExists(buildMethodName, builderType, 0);
|
||||
if (methodExists == MemberExistsResult.NOT_EXISTS) {
|
||||
MethodDeclaration md = generateBuildMethod(tdParent, isStatic, buildMethodName, nameOfStaticBuilderMethod, returnType, builderFields, builderType, thrownExceptions, addCleaning, ast);
|
||||
if (md != null) injectMethod(builderType, md);
|
||||
}
|
||||
}
|
||||
|
||||
if (methodExists("toString", builderType, 0) == MemberExistsResult.NOT_EXISTS) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2013-2018 The Project Lombok Authors.
|
||||
* Copyright (C) 2013-2019 The Project Lombok Authors.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -405,11 +405,15 @@ public class HandleBuilder extends JavacAnnotationHandler<Builder> {
|
||||
makeSetterMethodsForBuilder(builderType, bfd, annotationNode, fluent, chain);
|
||||
}
|
||||
|
||||
if (methodExists(buildMethodName, builderType, -1) == MemberExistsResult.NOT_EXISTS) {
|
||||
JCMethodDecl md = generateBuildMethod(tdParent, isStatic, buildMethodName, nameOfBuilderMethod, returnType, builderFields, builderType, thrownExceptions, ast, addCleaning);
|
||||
if (md != null) {
|
||||
injectMethod(builderType, md);
|
||||
recursiveSetGeneratedBy(md, ast, annotationNode.getContext());
|
||||
{
|
||||
MemberExistsResult methodExists = methodExists(builderMethodName, builderType, -1);
|
||||
if (methodExists == MemberExistsResult.EXISTS_BY_LOMBOK) methodExists = methodExists(buildMethodName, builderType, 0);
|
||||
if (methodExists == MemberExistsResult.NOT_EXISTS) {
|
||||
JCMethodDecl md = generateBuildMethod(tdParent, isStatic, buildMethodName, nameOfBuilderMethod, returnType, builderFields, builderType, thrownExceptions, ast, addCleaning);
|
||||
if (md != null) {
|
||||
injectMethod(builderType, md);
|
||||
recursiveSetGeneratedBy(md, ast, annotationNode.getContext());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
public class BuilderWithBadNames {
|
||||
String build;
|
||||
String toString;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
BuilderWithBadNames(final String build, final String toString) {
|
||||
this.build = build;
|
||||
this.toString = toString;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public static class BuilderWithBadNamesBuilder {
|
||||
@java.lang.SuppressWarnings("all")
|
||||
private String build;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
private String toString;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
BuilderWithBadNamesBuilder() {
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public BuilderWithBadNamesBuilder build(final String build) {
|
||||
this.build = build;
|
||||
return this;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public BuilderWithBadNamesBuilder toString(final String toString) {
|
||||
this.toString = toString;
|
||||
return this;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public BuilderWithBadNames build() {
|
||||
return new BuilderWithBadNames(build, toString);
|
||||
}
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public java.lang.String toString() {
|
||||
return "BuilderWithBadNames.BuilderWithBadNamesBuilder(build=" + this.build + ", toString=" + this.toString + ")";
|
||||
}
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public static BuilderWithBadNamesBuilder builder() {
|
||||
return new BuilderWithBadNamesBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
public @lombok.Builder class BuilderWithBadNames {
|
||||
public static @java.lang.SuppressWarnings("all") class BuilderWithBadNamesBuilder {
|
||||
private @java.lang.SuppressWarnings("all") String build;
|
||||
private @java.lang.SuppressWarnings("all") String toString;
|
||||
@java.lang.SuppressWarnings("all") BuilderWithBadNamesBuilder() {
|
||||
super();
|
||||
}
|
||||
public @java.lang.SuppressWarnings("all") BuilderWithBadNamesBuilder build(final String build) {
|
||||
this.build = build;
|
||||
return this;
|
||||
}
|
||||
public @java.lang.SuppressWarnings("all") BuilderWithBadNamesBuilder toString(final String toString) {
|
||||
this.toString = toString;
|
||||
return this;
|
||||
}
|
||||
public @java.lang.SuppressWarnings("all") BuilderWithBadNames build() {
|
||||
return new BuilderWithBadNames(build, toString);
|
||||
}
|
||||
public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
|
||||
return (((("BuilderWithBadNames.BuilderWithBadNamesBuilder(build=" + this.build) + ", toString=") + this.toString) + ")");
|
||||
}
|
||||
}
|
||||
String build;
|
||||
String toString;
|
||||
@java.lang.SuppressWarnings("all") BuilderWithBadNames(final String build, final String toString) {
|
||||
super();
|
||||
this.build = build;
|
||||
this.toString = toString;
|
||||
}
|
||||
public static @java.lang.SuppressWarnings("all") BuilderWithBadNamesBuilder builder() {
|
||||
return new BuilderWithBadNamesBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
@lombok.Builder
|
||||
public class BuilderWithBadNames {
|
||||
String build;
|
||||
String toString;
|
||||
}
|
||||
Reference in new issue
Block a user