From 3c61fc793b6409a45795f5b468b4699d20c1ee6c Mon Sep 17 00:00:00 2001 From: Bartek Pacia Date: Tue, 8 Jul 2025 16:32:11 +0200 Subject: [PATCH] [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 --- .../classCanBeRecord/ConstructorBodyProcessor.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ConstructorBodyProcessor.java b/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ConstructorBodyProcessor.java index 9b8baed1b08a..170413c01234 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ConstructorBodyProcessor.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/classCanBeRecord/ConstructorBodyProcessor.java @@ -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 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 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()) {