From 0a7c7800b7890f0fb59a5329a4980423a1fd7e32 Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Mon, 23 Dec 2024 16:49:20 +0100 Subject: [PATCH] [java-intention] IDEA-365124 don't propose BindFieldsFromParameters when there is chain constructors GitOrigin-RevId: 495ed3f77ff6bdd2f57deac303359cef25aa2d8e --- .../intention/impl/FieldFromParameterUtils.java | 6 ++++++ .../bindFieldsFromParameters/beforeChain.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeChain.java 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