diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java index 9b34522e6046..5566f3778c5c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BindFieldsFromParametersAction.java @@ -266,7 +266,17 @@ public class BindFieldsFromParametersAction extends BaseIntentionAction implemen String[] names = suggestedNameInfo.names; final boolean isFinal = !isMethodStatic && method.isConstructor(); - final String fieldName = usedNames.add(names[0]) ? names[0] : JavaCodeStyleManager.getInstance(project).suggestUniqueVariableName(names[0], myParameter, true); + String name = names[0]; + if (targetClass != null) { + for (String curName : names) { + if (!usedNames.contains(curName) && targetClass.findFieldByName(curName, false) != null) { + name = curName; + break; + } + } + } + final String fieldName = usedNames.add(name) ? name + : JavaCodeStyleManager.getInstance(project).suggestUniqueVariableName(name, myParameter, true); ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/afterAlreadyExistingFields.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/afterAlreadyExistingFields.java new file mode 100644 index 000000000000..acee0e0a79a3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/afterAlreadyExistingFields.java @@ -0,0 +1,14 @@ +// "Bind Method Parameters to Fields" "true" + +class A{ + private final String myP; + private final String myLongParameterName; + private final String myName; + + void f(String p, String longParameterName, String shortParameterName){ + myP = p; + myLongParameterName = longParameterName; + myName = shortParameterName; + } +} + diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeAlreadyExistingFields.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeAlreadyExistingFields.java new file mode 100644 index 000000000000..eae2e0b2090c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/bindFieldsFromParameters/beforeAlreadyExistingFields.java @@ -0,0 +1,11 @@ +// "Bind Method Parameters to Fields" "true" + +class A{ + private final String myP; + private final String myLongParameterName; + private final String myName; + + void f(String p, String longParameterName, String shortParameterName){ + } +} +