try our best to find fields corresponding to params (IDEA-89773)

This commit is contained in:
Anna Kozlova
2012-08-07 20:14:55 +04:00
parent 5d76e83d34
commit 2af9adfc2c
3 changed files with 36 additions and 1 deletions

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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 <caret>f(String p, String longParameterName, String shortParameterName){
}
}