Java: check for immutable types in records (IDEA-372966)

in "Assignment or return of field with mutable type" inspection

GitOrigin-RevId: 96e782484fde1ad2229b19b30cf928847b04d4ba
This commit is contained in:
Bas Leijdekkers
2025-06-09 14:24:43 +00:00
committed by intellij-monorepo-bot
parent c0b6890c72
commit d461d596f7
2 changed files with 3 additions and 0 deletions
@@ -161,6 +161,7 @@ public final class AssignmentOrReturnOfFieldWithMutableTypeInspection extends Ba
boolean reportAssignment = !ContainerUtil.or(recordClass.getConstructors(), c -> JavaPsiRecordUtil.isExplicitCanonicalConstructor(c));
for (PsiRecordComponent component : recordHeader.getRecordComponents()) {
final PsiType type = component.getType();
if (ClassUtils.isImmutable(type)) continue;
final boolean mutable = type instanceof PsiArrayType ||
ContainerUtil.exists(MUTABLE_TYPES, typeName -> InheritanceUtil.isInheritor(type, typeName));
if (!mutable) continue;
@@ -226,4 +226,6 @@ record Data4(Collection<String> strings) {
public Collection<String> strings() {
return <warning descr="Return of Collection<String> field 'strings'">strings</warning>;
}
}
record Fooz(ImmutableList<Integer> ints) {
}