diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java index efa22ddfa31c..cb9c72693561 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java @@ -289,6 +289,12 @@ public final class FieldFromParameterUtils { return false; } } + if (method.isConstructor()) { + PsiMethodCallExpression chainedCall = JavaPsiConstructorUtil.findThisOrSuperCallInConstructor(method); + if (JavaPsiConstructorUtil.isChainedConstructorCall(chainedCall)) { + return false; + } + } return method.getBody() != null && !targetClass.isInterface() && (!targetClass.isRecord() || method.hasModifierProperty(PsiModifier.STATIC)) && diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeChain.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeChain.java new file mode 100644 index 000000000000..5fa15be3ff3b --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeChain.java @@ -0,0 +1,15 @@ +// "Bind constructor parameters to fields" "false" + +class Bar { + + private int myi1; + private int myi2; + + Bar(int i1, int i2, String i3) { + this(); + } + Bar(){ + myi1 = 1; + myi2 = 1; + } +} \ No newline at end of file