name suggestions: by assignment context (IDEA-167826)

This commit is contained in:
Anna Kozlova
2017-05-26 12:00:34 +03:00
parent 9f160ca1d2
commit a0c646cbdb
2 changed files with 19 additions and 1 deletions
@@ -783,7 +783,7 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager {
}
}
}
else if (expr.getParent() instanceof PsiAssignmentExpression && variableKind == VariableKind.PARAMETER) {
else if (expr.getParent() instanceof PsiAssignmentExpression) {
final PsiAssignmentExpression assignmentExpression = (PsiAssignmentExpression)expr.getParent();
if (expr == assignmentExpression.getRExpression()) {
final PsiExpression leftExpression = assignmentExpression.getLExpression();
@@ -800,6 +800,14 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager {
}
}
}
else if (expr.getParent() instanceof PsiLocalVariable) {
PsiVariable variable = (PsiVariable)expr.getParent();
String variableName = variable.getName();
if (variableName != null) {
String propertyName = variableNameToPropertyName(variableName, getVariableKind(variable));
return new NamesByExprInfo(propertyName, getSuggestionsByName(propertyName, variableKind, false, correctKeywords));
}
}
return new NamesByExprInfo(null, ArrayUtil.EMPTY_STRING_ARRAY);
}
@@ -46,4 +46,14 @@ public class NameSuggestionsByExpressionTest extends LightCodeInsightFixtureTest
new String[] {"getParentOfType", "parentOfType", "ofType", "type", "parent", "s"},
nameInfo.names);
}
public void testNameByAssignmentContext() throws Exception {
PsiFile file = myFixture.configureByText("A.java", "class A {{String bar = \"<caret>\";}}");
PsiExpression expression = PsiTreeUtil.getParentOfType(file.findElementAt(getEditor().getCaretModel().getOffset()), PsiExpression.class);
SuggestedNameInfo nameInfo = JavaCodeStyleManager.getInstance(getProject())
.suggestVariableName(VariableKind.LOCAL_VARIABLE, null, expression, null);
Assert.assertArrayEquals("Suggested: " + Arrays.toString(nameInfo.names),
new String[] {"bar", "s"},
nameInfo.names);
}
}