[java-inspections] IDEA-374865 ClassCanBeRecord: make containingClass local in ConstructorBodyProcessor

Replaced the field with a local variable to simplify the class structure.

In response to IJ-CR-167896

GitOrigin-RevId: d1678890cdb3733d7f670a5d63c6d854e1926b0c
This commit is contained in:
Bartek Pacia
2025-07-08 21:40:33 +00:00
committed by intellij-monorepo-bot
parent dd147c932a
commit 3c61fc793b
@@ -19,7 +19,6 @@ import static com.intellij.psi.PsiModifier.STATIC;
@NotNullByDefault
final class ConstructorBodyProcessor {
private final PsiClass containingClass;
private final PsiMethod constructor;
private final Map<PsiParameter, @Nullable PsiField> paramsToFields = new HashMap<>();
// TODO(bartekpacia): change type to SequencedMap once we move to Java 21
@@ -42,7 +41,6 @@ final class ConstructorBodyProcessor {
ConstructorBodyProcessor(PsiMethod constructor,
List<PsiField> instanceFields) {
this.containingClass = Objects.requireNonNull(constructor.getContainingClass(), "constructor must have containing class");
this.constructor = constructor;
this.instanceFields = instanceFields;
final PsiCodeBlock body = Objects.requireNonNull(constructor.getBody(), "constructor must have body");
@@ -60,6 +58,9 @@ final class ConstructorBodyProcessor {
}
final PsiExpression expression = expressionStatement.getExpression();
final PsiClass containingClass = constructor.getContainingClass();
if (containingClass == null) return;
if (expression instanceof PsiMethodCallExpression methodCallExpr && JavaPsiConstructorUtil.isChainedConstructorCall(methodCallExpr)) {
delegating = true;
for (PsiExpression arg : methodCallExpr.getArgumentList().getExpressions()) {