mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[lombok] added support for lombok 1.18.24 change: "@Accessors now 'cascades'"
GitOrigin-RevId: 6cdfa706f1d0c0925ec250207c01b6adf38ac56c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7c68d729fe
commit
d4642aea1b
@@ -2,6 +2,7 @@ package de.plushnikov.intellij.plugin.extension;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.refactoring.rename.RenameJavaVariableProcessor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import de.plushnikov.intellij.plugin.LombokClassNames;
|
||||
import de.plushnikov.intellij.plugin.processor.field.AccessorsInfo;
|
||||
import de.plushnikov.intellij.plugin.processor.handler.singular.BuilderElementHandler;
|
||||
@@ -24,8 +25,8 @@ public class LombokRenameFieldReferenceProcessor extends RenameJavaVariableProce
|
||||
if (element instanceof PsiField && !(element instanceof LombokLightFieldBuilder)) {
|
||||
final PsiClass containingClass = ((PsiField) element).getContainingClass();
|
||||
if (null != containingClass) {
|
||||
return Arrays.stream(containingClass.getMethods()).anyMatch(LombokLightMethodBuilder.class::isInstance) ||
|
||||
Arrays.stream(containingClass.getInnerClasses()).anyMatch(LombokLightClassBuilder.class::isInstance);
|
||||
return ContainerUtil.exists(containingClass.getMethods(), LombokLightMethodBuilder.class::isInstance) ||
|
||||
ContainerUtil.exists(containingClass.getInnerClasses(), LombokLightClassBuilder.class::isInstance);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -36,10 +37,10 @@ public class LombokRenameFieldReferenceProcessor extends RenameJavaVariableProce
|
||||
final PsiField psiField = (PsiField) element;
|
||||
final PsiClass containingClass = psiField.getContainingClass();
|
||||
final String currentFieldName = psiField.getName();
|
||||
if (null != containingClass && null != currentFieldName) {
|
||||
if (null != containingClass) {
|
||||
final boolean isBoolean = PsiType.BOOLEAN.equals(psiField.getType());
|
||||
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
|
||||
final String getterName = LombokUtils.toGetterName(accessorsInfo, currentFieldName, isBoolean);
|
||||
final PsiMethod[] psiGetterMethods = containingClass.findMethodsByName(getterName, false);
|
||||
|
||||
@@ -82,6 +82,7 @@ public final class GetterProcessor extends AbstractClassProcessor {
|
||||
final Collection<PsiMethod> classMethods = PsiClassUtil.collectClassMethodsIntern(psiClass);
|
||||
filterToleratedElements(classMethods);
|
||||
|
||||
final AccessorsInfo.AccessorsValues classAccessorsValues = AccessorsInfo.getAccessorsValues(psiClass);
|
||||
GetterFieldProcessor fieldProcessor = getGetterFieldProcessor();
|
||||
for (PsiField psiField : psiClass.getFields()) {
|
||||
boolean createGetter = true;
|
||||
@@ -94,7 +95,7 @@ public final class GetterProcessor extends AbstractClassProcessor {
|
||||
//Skip fields that start with $
|
||||
createGetter &= !psiField.getName().startsWith(LombokUtils.LOMBOK_INTERN_FIELD_MARKER);
|
||||
//Skip fields if a method with same name and arguments count already exists
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField, classAccessorsValues);
|
||||
final Collection<String> methodNames = LombokUtils.toAllGetterNames(accessorsInfo, psiField.getName(), PsiType.BOOLEAN.equals(psiField.getType()));
|
||||
for (String methodName : methodNames) {
|
||||
createGetter &= !PsiMethodUtil.hasSimilarMethod(classMethods, methodName, 0);
|
||||
|
||||
@@ -53,7 +53,7 @@ public class WitherProcessor extends AbstractClassProcessor {
|
||||
protected void generatePsiElements(@NotNull PsiClass psiClass, @NotNull PsiAnnotation psiAnnotation, @NotNull List<? super PsiElement> target) {
|
||||
final String methodVisibility = LombokProcessorUtil.getMethodModifier(psiAnnotation);
|
||||
if (methodVisibility != null) {
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiClass).withFluent(false);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiClass).withFluent(false);
|
||||
target.addAll(createFieldWithers(psiClass, methodVisibility, accessorsInfo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,7 +290,8 @@ public abstract class AbstractConstructorClassProcessor extends AbstractClassPro
|
||||
|
||||
private static boolean isAnyConstructorDefined(@NotNull PsiClass psiClass) {
|
||||
Collection<PsiMethod> constructors = PsiClassUtil.collectClassConstructorIntern(psiClass);
|
||||
return constructors.stream().anyMatch(psiMethod -> PsiAnnotationSearchUtil.isNotAnnotatedWith(psiMethod, LombokClassNames.TOLERATE));
|
||||
return ContainerUtil.exists(constructors,
|
||||
psiMethod -> PsiAnnotationSearchUtil.isNotAnnotatedWith(psiMethod, LombokClassNames.TOLERATE));
|
||||
}
|
||||
|
||||
private PsiMethod createConstructor(@NotNull PsiClass psiClass, @PsiModifier.ModifierConstant @NotNull String modifier,
|
||||
@@ -302,9 +303,9 @@ public abstract class AbstractConstructorClassProcessor extends AbstractClassPro
|
||||
.withModifier(modifier);
|
||||
|
||||
final List<String> fieldNames = new ArrayList<>();
|
||||
final AccessorsInfo classAccessorsInfo = AccessorsInfo.build(psiClass);
|
||||
final AccessorsInfo.AccessorsValues classAccessorsValues = AccessorsInfo.getAccessorsValues(psiClass);
|
||||
for (PsiField psiField : params) {
|
||||
final AccessorsInfo paramAccessorsInfo = AccessorsInfo.build(psiField, classAccessorsInfo);
|
||||
final AccessorsInfo paramAccessorsInfo = AccessorsInfo.buildFor(psiField, classAccessorsValues);
|
||||
fieldNames.add(paramAccessorsInfo.removePrefix(psiField.getName()));
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ public abstract class AbstractFieldProcessor extends AbstractProcessor implement
|
||||
final List<MethodSignatureBackedByPsiMethod> classMethods = new ArrayList<>(ownSignatures);
|
||||
|
||||
final boolean isBoolean = PsiType.BOOLEAN.equals(psiField.getType());
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
final String fieldName = psiField.getName();
|
||||
String accessorName = isGetter ? LombokUtils.toGetterName(accessorsInfo, fieldName, isBoolean)
|
||||
: LombokUtils.toSetterName(accessorsInfo, fieldName, isBoolean);
|
||||
|
||||
@@ -3,7 +3,6 @@ package de.plushnikov.intellij.plugin.processor.field;
|
||||
import com.intellij.psi.PsiAnnotation;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiVariable;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import de.plushnikov.intellij.plugin.LombokClassNames;
|
||||
import de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery;
|
||||
@@ -21,6 +20,10 @@ import java.util.Collections;
|
||||
*/
|
||||
public class AccessorsInfo {
|
||||
public static final AccessorsInfo EMPTY = new AccessorsInfo(false, false, false, false);
|
||||
private static final String CHAIN_VALUE = "chain";
|
||||
private static final String FLUENT_VALUE = "fluent";
|
||||
private static final String MAKE_FINAL_VALUE = "makeFinal";
|
||||
private static final String PREFIX_VALUE = "prefix";
|
||||
|
||||
private final boolean fluent;
|
||||
private final boolean chain;
|
||||
@@ -37,61 +40,14 @@ public class AccessorsInfo {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo build(boolean fluentValue, boolean chainValue, boolean makeFinal, boolean doNotUseIsPrefix, String... prefixes) {
|
||||
public static AccessorsInfo build(boolean fluentValue,
|
||||
boolean chainValue,
|
||||
boolean makeFinal,
|
||||
boolean doNotUseIsPrefix,
|
||||
String... prefixes) {
|
||||
return new AccessorsInfo(fluentValue, chainValue, makeFinal, doNotUseIsPrefix, prefixes);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo build(@NotNull PsiField psiField) {
|
||||
return build(psiField, psiField.getContainingClass());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo build(@NotNull PsiVariable psiVariable, @Nullable PsiClass containingClass) {
|
||||
final PsiAnnotation accessorsFieldAnnotation = PsiAnnotationSearchUtil.findAnnotation(psiVariable, LombokClassNames.ACCESSORS);
|
||||
if (null != accessorsFieldAnnotation) {
|
||||
return buildFromAnnotation(accessorsFieldAnnotation, containingClass);
|
||||
}
|
||||
else {
|
||||
return build(containingClass);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo build(@NotNull PsiField psiField, @NotNull AccessorsInfo classAccessorsInfo) {
|
||||
final PsiAnnotation accessorsFieldAnnotation = PsiAnnotationSearchUtil.findAnnotation(psiField, LombokClassNames.ACCESSORS);
|
||||
if (null != accessorsFieldAnnotation) {
|
||||
return buildFromAnnotation(accessorsFieldAnnotation, psiField.getContainingClass());
|
||||
}
|
||||
else {
|
||||
return classAccessorsInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo build(@Nullable PsiClass psiClass) {
|
||||
PsiClass containingClass = psiClass;
|
||||
while (null != containingClass) {
|
||||
final PsiAnnotation accessorsClassAnnotation = PsiAnnotationSearchUtil.findAnnotation(containingClass, LombokClassNames.ACCESSORS);
|
||||
if (null != accessorsClassAnnotation) {
|
||||
return buildFromAnnotation(accessorsClassAnnotation, containingClass);
|
||||
}
|
||||
containingClass = containingClass.getContainingClass();
|
||||
}
|
||||
|
||||
return buildAccessorsInfo(psiClass, null, null, null, Collections.emptySet());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static AccessorsInfo buildFromAnnotation(@NotNull PsiAnnotation accessorsAnnotation, @Nullable PsiClass psiClass) {
|
||||
Boolean chainDeclaredValue = PsiAnnotationUtil.getDeclaredBooleanAnnotationValue(accessorsAnnotation, "chain");
|
||||
Boolean fluentDeclaredValue = PsiAnnotationUtil.getDeclaredBooleanAnnotationValue(accessorsAnnotation, "fluent");
|
||||
Boolean makeFinal = PsiAnnotationUtil.getDeclaredBooleanAnnotationValue(accessorsAnnotation, "makeFinal");
|
||||
Collection<String> prefixes = PsiAnnotationUtil.getAnnotationValues(accessorsAnnotation, "prefix", String.class);
|
||||
|
||||
return buildAccessorsInfo(psiClass, chainDeclaredValue, fluentDeclaredValue, makeFinal, prefixes);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static AccessorsInfo buildAccessorsInfo(@Nullable PsiClass psiClass, @Nullable Boolean chainDeclaredValue,
|
||||
@Nullable Boolean fluentDeclaredValue,
|
||||
@@ -147,6 +103,98 @@ public class AccessorsInfo {
|
||||
return build(isFluent, isChainDeclaredOrImplicit, makeFinal, doNotUseIsPrefix, prefixes);
|
||||
}
|
||||
|
||||
public record AccessorsValues(Boolean chainDeclaredValue, Boolean fluentDeclaredValue, Boolean makeFinalDeclaredValue,
|
||||
Collection<String> prefixes) {
|
||||
|
||||
private AccessorsValues() {
|
||||
this(null, null, null, Collections.emptyList());
|
||||
}
|
||||
private AccessorsValues combine(AccessorsValues defaults) {
|
||||
Boolean combinedChain = chainDeclaredValue;
|
||||
Boolean combinedFluent = fluentDeclaredValue;
|
||||
Boolean combinedMakeFinal = makeFinalDeclaredValue;
|
||||
Collection<String> combinedPrefixes = prefixes;
|
||||
|
||||
if (combinedChain == null && null != defaults.chainDeclaredValue) {
|
||||
combinedChain = defaults.chainDeclaredValue;
|
||||
}
|
||||
if (combinedFluent == null && null != defaults.fluentDeclaredValue) {
|
||||
combinedFluent = defaults.fluentDeclaredValue;
|
||||
}
|
||||
if (combinedMakeFinal == null && null != defaults.makeFinalDeclaredValue) {
|
||||
combinedMakeFinal = defaults.makeFinalDeclaredValue;
|
||||
}
|
||||
if (combinedPrefixes.isEmpty() && !defaults.prefixes.isEmpty()) {
|
||||
combinedPrefixes = defaults.prefixes;
|
||||
}
|
||||
return new AccessorsValues(combinedChain, combinedFluent, combinedMakeFinal, combinedPrefixes);
|
||||
}
|
||||
}
|
||||
|
||||
private static AccessorsValues collectValues(@NotNull PsiAnnotation accessorsAnnotation) {
|
||||
Boolean chainDeclaredValue = PsiAnnotationUtil.getDeclaredBooleanAnnotationValue(accessorsAnnotation, CHAIN_VALUE);
|
||||
Boolean fluentDeclaredValue = PsiAnnotationUtil.getDeclaredBooleanAnnotationValue(accessorsAnnotation, FLUENT_VALUE);
|
||||
Boolean makeFinalDeclaredValue = PsiAnnotationUtil.getDeclaredBooleanAnnotationValue(accessorsAnnotation, MAKE_FINAL_VALUE);
|
||||
Collection<String> prefixes = PsiAnnotationUtil.getAnnotationValues(accessorsAnnotation, PREFIX_VALUE, String.class);
|
||||
return new AccessorsValues(chainDeclaredValue, fluentDeclaredValue, makeFinalDeclaredValue, prefixes);
|
||||
}
|
||||
|
||||
private static AccessorsInfo buildFrom(@Nullable PsiClass psiClass, AccessorsValues values) {
|
||||
return buildAccessorsInfo(psiClass, values.chainDeclaredValue, values.fluentDeclaredValue, values.makeFinalDeclaredValue,
|
||||
values.prefixes);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo buildFor(@NotNull PsiField psiField) {
|
||||
final AccessorsValues fieldAccessorsValues = getAccessorsValues(psiField);
|
||||
final AccessorsValues classAccessorsValues = getAccessorsValues(psiField.getContainingClass());
|
||||
final AccessorsValues combinedAccessorValues = fieldAccessorsValues.combine(classAccessorsValues);
|
||||
|
||||
final PsiClass containingClass = psiField.getContainingClass();
|
||||
return buildFrom(containingClass, combinedAccessorValues);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo buildFor(@NotNull PsiClass psiClass) {
|
||||
AccessorsValues resultAccessorsValues = getAccessorsValues(psiClass);
|
||||
return buildFrom(psiClass, resultAccessorsValues);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static AccessorsValues getAccessorsValues(@NotNull PsiField psiField) {
|
||||
AccessorsValues accessorsValues = new AccessorsValues();
|
||||
final PsiAnnotation accessorsFieldAnnotation = PsiAnnotationSearchUtil.findAnnotation(psiField, LombokClassNames.ACCESSORS);
|
||||
if (null != accessorsFieldAnnotation) {
|
||||
accessorsValues = collectValues(accessorsFieldAnnotation);
|
||||
}
|
||||
return accessorsValues;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsValues getAccessorsValues(@Nullable PsiClass psiClass) {
|
||||
AccessorsValues resultAccessorsValues = new AccessorsValues();
|
||||
|
||||
PsiClass containingClass = psiClass;
|
||||
while (null != containingClass) {
|
||||
final PsiAnnotation accessorsClassAnnotation = PsiAnnotationSearchUtil.findAnnotation(containingClass, LombokClassNames.ACCESSORS);
|
||||
if (null != accessorsClassAnnotation) {
|
||||
final AccessorsValues classAccessorsValues = collectValues(accessorsClassAnnotation);
|
||||
resultAccessorsValues = resultAccessorsValues.combine(classAccessorsValues);
|
||||
}
|
||||
containingClass = containingClass.getContainingClass();
|
||||
}
|
||||
return resultAccessorsValues;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static AccessorsInfo buildFor(@NotNull PsiField psiField, AccessorsValues classAccessorsValues) {
|
||||
final AccessorsValues fieldAccessorsValues = getAccessorsValues(psiField);
|
||||
final AccessorsValues combinedAccessorValues = fieldAccessorsValues.combine(classAccessorsValues);
|
||||
|
||||
final PsiClass containingClass = psiField.getContainingClass();
|
||||
return buildFrom(containingClass, combinedAccessorValues);
|
||||
}
|
||||
|
||||
public boolean isFluent() {
|
||||
return fluent;
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ public final class GetterFieldProcessor extends AbstractFieldProcessor {
|
||||
|
||||
private static boolean validateAccessorPrefix(@NotNull PsiField psiField, @NotNull ProblemBuilder builder) {
|
||||
boolean result = true;
|
||||
if (AccessorsInfo.build(psiField).isPrefixUnDefinedOrNotStartsWith(psiField.getName())) {
|
||||
if (AccessorsInfo.buildFor(psiField).isPrefixUnDefinedOrNotStartsWith(psiField.getName())) {
|
||||
builder.addWarning(LombokBundle.message("inspection.message.not.generating.getter.for.this.field"));
|
||||
result = false;
|
||||
}
|
||||
@@ -93,7 +93,7 @@ public final class GetterFieldProcessor extends AbstractFieldProcessor {
|
||||
|
||||
@NotNull
|
||||
public PsiMethod createGetterMethod(@NotNull PsiField psiField, @NotNull PsiClass psiClass, @NotNull String methodModifier) {
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
final String methodName = LombokUtils.getGetterName(psiField, accessorsInfo);
|
||||
|
||||
LombokLightMethodBuilder methodBuilder = new LombokLightMethodBuilder(psiField.getManager(), methodName)
|
||||
|
||||
@@ -79,7 +79,7 @@ public final class SetterFieldProcessor extends AbstractFieldProcessor {
|
||||
|
||||
private static boolean validateAccessorPrefix(@NotNull PsiField psiField, @NotNull ProblemBuilder builder) {
|
||||
boolean result = true;
|
||||
if (AccessorsInfo.build(psiField).isPrefixUnDefinedOrNotStartsWith(psiField.getName())) {
|
||||
if (AccessorsInfo.buildFor(psiField).isPrefixUnDefinedOrNotStartsWith(psiField.getName())) {
|
||||
builder.addWarning(LombokBundle.message("inspection.message.not.generating.setter.for.this.field.it"));
|
||||
result = false;
|
||||
}
|
||||
@@ -87,7 +87,7 @@ public final class SetterFieldProcessor extends AbstractFieldProcessor {
|
||||
}
|
||||
|
||||
public Collection<String> getAllSetterNames(@NotNull PsiField psiField, boolean isBoolean) {
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
return LombokUtils.toAllSetterNames(accessorsInfo, psiField.getName(), isBoolean);
|
||||
}
|
||||
|
||||
@@ -97,10 +97,10 @@ public final class SetterFieldProcessor extends AbstractFieldProcessor {
|
||||
final PsiType psiFieldType = psiField.getType();
|
||||
final PsiAnnotation setterAnnotation = PsiAnnotationSearchUtil.findAnnotation(psiField, LombokClassNames.SETTER);
|
||||
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
final String methodName = LombokUtils.getSetterName(psiField, accessorsInfo);
|
||||
|
||||
PsiType returnType = getReturnType(psiField);
|
||||
PsiType returnType = getReturnType(psiField, accessorsInfo.isChain());
|
||||
LombokLightMethodBuilder methodBuilder = new LombokLightMethodBuilder(psiField.getManager(), methodName)
|
||||
.withMethodReturnType(returnType)
|
||||
.withContainingClass(psiClass)
|
||||
@@ -156,9 +156,9 @@ public final class SetterFieldProcessor extends AbstractFieldProcessor {
|
||||
return codeBlockText;
|
||||
}
|
||||
|
||||
private static PsiType getReturnType(@NotNull PsiField psiField) {
|
||||
private static PsiType getReturnType(@NotNull PsiField psiField, boolean isChained) {
|
||||
PsiType result = PsiType.VOID;
|
||||
if (!psiField.hasModifierProperty(PsiModifier.STATIC) && AccessorsInfo.build(psiField).isChain()) {
|
||||
if (!psiField.hasModifierProperty(PsiModifier.STATIC) && isChained) {
|
||||
final PsiClass fieldClass = psiField.getContainingClass();
|
||||
if (null != fieldClass) {
|
||||
result = PsiClassUtil.getTypeWithGenerics(fieldClass);
|
||||
|
||||
@@ -207,7 +207,7 @@ public final class WitherFieldProcessor extends AbstractFieldProcessor {
|
||||
}
|
||||
|
||||
private static AccessorsInfo buildAccessorsInfo(@NotNull PsiField psiField) {
|
||||
return AccessorsInfo.build(psiField).withFluent(false);
|
||||
return AccessorsInfo.buildFor(psiField).withFluent(false);
|
||||
}
|
||||
|
||||
private static String getWitherName(@NotNull AccessorsInfo accessorsInfo, String psiFieldName, PsiType psiFieldType) {
|
||||
|
||||
@@ -80,7 +80,7 @@ public class BuilderInfo {
|
||||
result.fieldInitializer = psiField.getInitializer();
|
||||
result.hasBuilderDefaultAnnotation = PsiAnnotationSearchUtil.isAnnotatedWith(psiField, BUILDER_DEFAULT_ANNOTATION);
|
||||
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
result.fieldInBuilderName = accessorsInfo.removePrefix(psiField.getName());
|
||||
|
||||
result.singularAnnotation = PsiAnnotationSearchUtil.findAnnotation(psiField, LombokClassNames.SINGULAR);
|
||||
|
||||
@@ -278,7 +278,7 @@ public final class LombokUtils {
|
||||
"com.fasterxml.jackson.databind.annotation.JsonNaming"};
|
||||
|
||||
public static String getGetterName(final @NotNull PsiField psiField) {
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
return getGetterName(psiField, accessorsInfo);
|
||||
}
|
||||
|
||||
@@ -290,7 +290,7 @@ public final class LombokUtils {
|
||||
}
|
||||
|
||||
public static String getSetterName(@NotNull PsiField psiField) {
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.build(psiField);
|
||||
final AccessorsInfo accessorsInfo = AccessorsInfo.buildFor(psiField);
|
||||
return getSetterName(psiField, accessorsInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,10 @@ public class AccessorsTest extends AbstractLombokConfigSystemTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
////////////
|
||||
public void testMakefinal$AccessorsMakeFinalLombokConfig() {
|
||||
doTest();
|
||||
}
|
||||
////////////
|
||||
|
||||
public void testSuperbuilder$SuperBuilderWithPrefixes() {
|
||||
|
||||
@@ -11,6 +11,10 @@ public class AccessorsTest extends AbstractLombokParsingTestCase {
|
||||
doTest(true);
|
||||
}
|
||||
|
||||
public void testAccessors$AccessorsCascade() {
|
||||
doTest(true);
|
||||
}
|
||||
|
||||
public void testAccessors$AccessorsMakeFinal() {
|
||||
doTest(true);
|
||||
}
|
||||
|
||||
@@ -1,178 +1,127 @@
|
||||
// Generated by delombok at Sat Jun 11 11:12:44 CEST 2016
|
||||
|
||||
class AccessorsFluent {
|
||||
private String fieldName = "";
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public String fieldName() {
|
||||
return this.fieldName;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsFluent fieldName(final String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsFluentOnClass {
|
||||
private String fieldName = "";
|
||||
private String otherFieldWithOverride = "";
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public String fieldName() {
|
||||
return this.fieldName;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public String getOtherFieldWithOverride() {
|
||||
return this.otherFieldWithOverride;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsFluentOnClass fieldName(final String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsChain {
|
||||
private boolean isRunning;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsChain setRunning(final boolean isRunning) {
|
||||
this.isRunning = isRunning;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsPrefix {
|
||||
private String fieldName;
|
||||
private String fActualField;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setActualField(final String fActualField) {
|
||||
this.fActualField = fActualField;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsPrefix2 {
|
||||
private String fieldName;
|
||||
private String fActualField;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setFieldName(final String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setActualField(final String fActualField) {
|
||||
this.fActualField = fActualField;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsPrefix3 {
|
||||
private String fName;
|
||||
|
||||
private String getName() {
|
||||
return fName;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public java.lang.String toString() {
|
||||
return "AccessorsPrefix3(fName=" + this.getName() + ")";
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public boolean equals(final java.lang.Object o) {
|
||||
if (o == this) return true;
|
||||
if (!(o instanceof AccessorsPrefix3)) return false;
|
||||
final AccessorsPrefix3 other = (AccessorsPrefix3) o;
|
||||
if (!other.canEqual((java.lang.Object) this)) return false;
|
||||
final java.lang.Object this$fName = this.getName();
|
||||
final java.lang.Object other$fName = other.getName();
|
||||
if (this$fName == null ? other$fName != null : !this$fName.equals(other$fName)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected boolean canEqual(final java.lang.Object other) {
|
||||
return other instanceof AccessorsPrefix3;
|
||||
}
|
||||
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public int hashCode() {
|
||||
final int PRIME = 59;
|
||||
int result = 1;
|
||||
final java.lang.Object $fName = this.getName();
|
||||
result = result * PRIME + ($fName == null ? 43 : $fName.hashCode());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsPrefix4 {
|
||||
private String _underscore;
|
||||
private String $DollarSign;
|
||||
private String m_fieldName;
|
||||
private String foo;
|
||||
private String bAr;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setUnderscore(final String _underscore) {
|
||||
this._underscore = _underscore;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setDollarSign(final String $DollarSign) {
|
||||
this.$DollarSign = $DollarSign;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setFieldName(final String m_fieldName) {
|
||||
this.m_fieldName = m_fieldName;
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setAr(final String bAr) {
|
||||
this.bAr = bAr;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsFluentGenerics<T extends Number> {
|
||||
private String name;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsFluentGenerics<T> name(final String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsFluentNoChaining {
|
||||
private String name;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void name(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsFluentStatic<T extends Number> {
|
||||
private static String name;
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public static void name(final String name) {
|
||||
AccessorsFluentStatic.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorNumericStartIssue724 {
|
||||
private float m3Titanic;
|
||||
|
||||
public float get3Titanic() {
|
||||
return this.m3Titanic;
|
||||
private String fieldName = "";
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public String fieldName() {
|
||||
return this.fieldName;
|
||||
}
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsFluent fieldName(final String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
class AccessorsFluentOnClass {
|
||||
private String fieldName = "";
|
||||
private String otherFieldWithOverride = "";
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public String fieldName() {
|
||||
return this.fieldName;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public String getOtherFieldWithOverride() {
|
||||
return this.otherFieldWithOverride;
|
||||
}
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsFluentOnClass fieldName(final String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
class AccessorsChain {
|
||||
private boolean isRunning;
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsChain setRunning(final boolean isRunning) {
|
||||
this.isRunning = isRunning;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
class AccessorsPrefix {
|
||||
private String fieldName;
|
||||
private String fActualField;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setActualField(final String fActualField) {
|
||||
this.fActualField = fActualField;
|
||||
}
|
||||
}
|
||||
class AccessorsPrefix2 {
|
||||
private String fieldName;
|
||||
private String fActualField;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setFieldName(final String fieldName) {
|
||||
this.fieldName = fieldName;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setActualField(final String fActualField) {
|
||||
this.fActualField = fActualField;
|
||||
}
|
||||
}
|
||||
class AccessorsPrefix3 {
|
||||
private String fName;
|
||||
private String getName() {
|
||||
return fName;
|
||||
}
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public java.lang.String toString() {
|
||||
return "AccessorsPrefix3(fName=" + this.getName() + ")";
|
||||
}
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public boolean equals(final java.lang.Object o) {
|
||||
if (o == this) return true;
|
||||
if (!(o instanceof AccessorsPrefix3)) return false;
|
||||
final AccessorsPrefix3 other = (AccessorsPrefix3) o;
|
||||
if (!other.canEqual((java.lang.Object) this)) return false;
|
||||
final java.lang.Object this$fName = this.getName();
|
||||
final java.lang.Object other$fName = other.getName();
|
||||
if (this$fName == null ? other$fName != null : !this$fName.equals(other$fName)) return false;
|
||||
return true;
|
||||
}
|
||||
@java.lang.SuppressWarnings("all")
|
||||
protected boolean canEqual(final java.lang.Object other) {
|
||||
return other instanceof AccessorsPrefix3;
|
||||
}
|
||||
@java.lang.Override
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public int hashCode() {
|
||||
final int PRIME = 59;
|
||||
int result = 1;
|
||||
final java.lang.Object $fName = this.getName();
|
||||
result = result * PRIME + ($fName == null ? 43 : $fName.hashCode());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
class AccessorsFluentGenerics<T extends Number> {
|
||||
private String name;
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsFluentGenerics<T> name(final String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
class AccessorsFluentNoChaining {
|
||||
private String name;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void name(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
class AccessorsFluentStatic<T extends Number> {
|
||||
private static String name;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public static void name(final String name) {
|
||||
AccessorsFluentStatic.name = name;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
class AccessorsOuter {
|
||||
private String fTest;
|
||||
private String zTest2;
|
||||
class AccessorsInner1 {
|
||||
private String zTest3;
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsOuter.AccessorsInner1 setTest3(final String zTest3) {
|
||||
this.zTest3 = zTest3;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
class AccessorsInner2 {
|
||||
private String fTest4;
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public void setTest4(final String fTest4) {
|
||||
this.fTest4 = fTest4;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsOuter setTest(final String fTest) {
|
||||
this.fTest = fTest;
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public AccessorsOuter setTest2(final String zTest2) {
|
||||
this.zTest2 = zTest2;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
class AccessorsMakeFinal {
|
||||
private String test;
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@SuppressWarnings("all")
|
||||
public final AccessorsMakeFinal test(final String test) {
|
||||
this.test = test;
|
||||
return this;
|
||||
}
|
||||
class AccessorsMakeFinal1 {
|
||||
private String test;
|
||||
/**
|
||||
* @return {@code this}.
|
||||
*/
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public final AccessorsMakeFinal1 test(final String test) {
|
||||
this.test = test;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,65 +1,50 @@
|
||||
class AccessorsFluent {
|
||||
@lombok.Getter @lombok.Setter @lombok.experimental.Accessors(fluent=true)
|
||||
private String fieldName = "";
|
||||
@lombok.Getter @lombok.Setter @lombok.experimental.Accessors(fluent=true)
|
||||
private String fieldName = "";
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(fluent=true)
|
||||
@lombok.Getter
|
||||
class AccessorsFluentOnClass {
|
||||
@lombok.Setter private String fieldName = "";
|
||||
@lombok.experimental.Accessors private String otherFieldWithOverride = "";
|
||||
@lombok.Setter private String fieldName = "";
|
||||
@lombok.experimental.Accessors(fluent=false) private String otherFieldWithOverride = "";
|
||||
}
|
||||
|
||||
class AccessorsChain {
|
||||
@lombok.Setter @lombok.experimental.Accessors(chain=true) private boolean isRunning;
|
||||
@lombok.Setter @lombok.experimental.Accessors(chain=true) private boolean isRunning;
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(prefix="f")
|
||||
class AccessorsPrefix {
|
||||
@lombok.Setter private String fieldName;
|
||||
@lombok.Setter private String fActualField;
|
||||
@lombok.Setter private String fieldName;
|
||||
@lombok.Setter private String fActualField;
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(prefix={"f", ""})
|
||||
class AccessorsPrefix2 {
|
||||
@lombok.Setter private String fieldName;
|
||||
@lombok.Setter private String fActualField;
|
||||
@lombok.Setter private String fieldName;
|
||||
@lombok.Setter private String fActualField;
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(prefix="f")
|
||||
@lombok.ToString
|
||||
@lombok.EqualsAndHashCode
|
||||
class AccessorsPrefix3 {
|
||||
private String fName;
|
||||
private String fName;
|
||||
|
||||
private String getName() {
|
||||
return fName;
|
||||
}
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(prefix={"_", "$", "m_", "f", "b"})
|
||||
class AccessorsPrefix4 {
|
||||
@lombok.Setter private String _underscore;
|
||||
@lombok.Setter private String $DollarSign;
|
||||
@lombok.Setter private String m_fieldName;
|
||||
@lombok.Setter private String foo;
|
||||
@lombok.Setter private String bAr;
|
||||
private String getName() {
|
||||
return fName;
|
||||
}
|
||||
}
|
||||
|
||||
class AccessorsFluentGenerics<T extends Number> {
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent=true) private String name;
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent=true) private String name;
|
||||
}
|
||||
|
||||
class AccessorsFluentNoChaining {
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent=true,chain=false) private String name;
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent=true,chain=false) private String name;
|
||||
}
|
||||
|
||||
class AccessorsFluentStatic<T extends Number> {
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent=true) private static String name;
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(prefix = "m")
|
||||
class AccessorNumericStartIssue724 {
|
||||
@lombok.Getter
|
||||
private float m3Titanic;
|
||||
}
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent=true) private static String name;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
@lombok.experimental.Accessors(chain=true, prefix="f")
|
||||
class AccessorsOuter {
|
||||
@lombok.Setter
|
||||
private String fTest;
|
||||
|
||||
@lombok.experimental.Accessors(prefix="z")
|
||||
@lombok.Setter
|
||||
private String zTest2;
|
||||
|
||||
class AccessorsInner1 {
|
||||
@lombok.experimental.Accessors(prefix="z")
|
||||
@lombok.Setter
|
||||
private String zTest3;
|
||||
}
|
||||
|
||||
@lombok.experimental.Accessors(chain=false)
|
||||
class AccessorsInner2 {
|
||||
@lombok.Setter
|
||||
private String fTest4;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
class AccessorsMakeFinal {
|
||||
@lombok.Setter
|
||||
@lombok.experimental.Accessors(fluent = true, makeFinal = true)
|
||||
private String test;
|
||||
@lombok.experimental.Accessors(makeFinal = true)
|
||||
class AccessorsMakeFinal1 {
|
||||
@lombok.Setter @lombok.experimental.Accessors(fluent = true)
|
||||
private String test;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
class AccessorsMakeFinalLombokConfig {
|
||||
private String test;
|
||||
|
||||
public final void setTest(final String test) {
|
||||
this.test = test;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
//CONF: lombok.Accessors.makeFinal = true
|
||||
|
||||
class AccessorsMakeFinalLombokConfig {
|
||||
@lombok.Setter
|
||||
private String test;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
lombok.Accessors.makeFinal = true
|
||||
|
||||
config.stopBubbling = true
|
||||
@@ -6,7 +6,7 @@ import lombok.experimental.Accessors;
|
||||
public class FindUsageAccessors {
|
||||
private int mFoo;
|
||||
|
||||
@Accessors(prefix = "_")
|
||||
@Accessors(prefix = "_", fluent = false)
|
||||
private String _<caret>Bar;
|
||||
|
||||
private String bMar;
|
||||
|
||||
Reference in New Issue
Block a user