diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java index 12cf5d8aae2f..5f2a00d6a18a 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateConstructorParameterFromFieldFix.java @@ -144,7 +144,9 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction { } for (PsiMethodMember member : elements) { - if (!addParameterToConstructor(project, file, editor, member.getElement(), new PsiField[] {getField()}, cleanupElements)) break; + if (!addParameterToConstructor(project, file, editor, member.getElement(), new PsiField[] {getField()}, cleanupElements)) { + break; + } } } else if (!constrs.isEmpty()) { @@ -317,9 +319,9 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction { assert constructor != null; PsiParameter[] newParameters = constructor.getParameterList().getParameters(); if (newParameters == parameters) return false; //user must have canceled dialog - boolean created = false; // do not introduce assignment in chanined constructor if (JavaHighlightUtil.getChainedConstructors(constructor) == null) { + boolean created = false; for (PsiField field : fields.keySet()) { final String defaultParamName = fields.get(field); PsiParameter parameter = findParamByName(defaultParamName, field.getType(), newParameters, parameterInfos); @@ -334,8 +336,10 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction { } created = true; } + return created; + } else { + return true; } - return created; } private static void notNull(PsiField field, PsiParameter parameter) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleChainedConstructors.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleChainedConstructors.java new file mode 100644 index 000000000000..f71c0f6e1dcd --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/afterMultipleChainedConstructors.java @@ -0,0 +1,16 @@ +// "Add constructor parameter" "true" +abstract class FooBar { + protected final String myFoo; + + public FooBar(String myFoo) { + this.myFoo = myFoo; + } + + public FooBar(Integer interestingType, String myFoo) { + this(myFoo); + } + + public FooBar(int i, String myFoo) { + this(myFoo); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeMultipleChainedConstructors.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeMultipleChainedConstructors.java new file mode 100644 index 000000000000..705a3bfad74b --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorParameterFromField/beforeMultipleChainedConstructors.java @@ -0,0 +1,15 @@ +// "Add constructor parameter" "true" +abstract class FooBar { + protected final String myFoo; + + public FooBar() { + } + + public FooBar(Integer interestingType) { + this(); + } + + public FooBar(int i) { + this(); + } +} \ No newline at end of file