Java: don't ask about array field nullability when generating equals/hashCode (IDEA-339226)

GitOrigin-RevId: b898bfde3537225d694e146b8763a6ec3b43553f
This commit is contained in:
Bas Leijdekkers
2023-11-29 20:30:30 +00:00
committed by intellij-monorepo-bot
parent 10f0f43940
commit 5c5c16a392
@@ -154,8 +154,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
final ArrayList<MemberInfo> list = new ArrayList<>();
for (MemberInfo equalsMemberInfo : equalsMemberInfos) {
PsiField field = (PsiField)equalsMemberInfo.getMember();
if (!(field.getType() instanceof PsiPrimitiveType)) {
if (mayNeedNullCheck((PsiField)equalsMemberInfo.getMember())) {
list.add(myFieldsToNonNull.get(equalsMemberInfo.getMember()));
}
}
@@ -227,11 +226,8 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
if (step + 1 == getNonNullStepCode()) {
if (templateDependsOnFieldsNullability()) {
for (MemberInfo classField : myClassFields) {
if (classField.isChecked()) {
PsiField field = (PsiField)classField.getMember();
if (!(field.getType() instanceof PsiPrimitiveType)) {
return getNonNullStepCode();
}
if (classField.isChecked() && mayNeedNullCheck((PsiField)classField.getMember())) {
return getNonNullStepCode();
}
}
}
@@ -241,6 +237,11 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard<PsiClass,
return super.getNextStep(step);
}
private static boolean mayNeedNullCheck(PsiField field) {
PsiType type = field.getType();
return !(type instanceof PsiPrimitiveType) && !(type instanceof PsiArrayType);
}
private static boolean templateDependsOnFieldsNullability() {
final EqualsHashCodeTemplatesManager templatesManager = EqualsHashCodeTemplatesManager.getInstance();
final String notNullCheckPresent = "\\.notNull\\W";