diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/scope/CompletionElement.java b/java/java-impl/src/com/intellij/codeInsight/completion/scope/CompletionElement.java index 5f95ae74e467..a6f3e94dbc09 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/scope/CompletionElement.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/scope/CompletionElement.java @@ -54,10 +54,13 @@ public class CompletionElement{ return ((PsiMethod)myElement).getSignature(mySubstitutor); } if (myElement instanceof PsiVariable) { - return "#" + ((PsiVariable)myElement).getName(); + return getVariableUniqueId((PsiVariable)myElement); } return null; } + public static String getVariableUniqueId(final PsiVariable variable) { + return "#" + variable.getName(); + } } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java index 0344cfd602fb..041b7f6a2489 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java @@ -227,7 +227,10 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme (sp == StaticProblem.staticAfterInstance ? myFilteredResults : myResults).add(element1); } } + } else if (element instanceof PsiLocalVariable || element instanceof PsiParameter) { + myResultNames.add(CompletionElement.getVariableUniqueId((PsiVariable)element)); } + return true; } diff --git a/java/java-tests/testData/codeInsight/completion/smartType/NoHiddenParameter-out.java b/java/java-tests/testData/codeInsight/completion/smartType/NoHiddenParameter-out.java new file mode 100644 index 000000000000..31d2231f3cf5 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/NoHiddenParameter-out.java @@ -0,0 +1,18 @@ +import java.util.Collection; + +class A { + String join(Collection strings) { + return StringUtil.join(strings, ","); + } + + void method(Collection param) { + new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + String[] param = {""}; // hides the parameter + Collection params = Arrays.asList(param); + join(params) + } + }; + } +} diff --git a/java/java-tests/testData/codeInsight/completion/smartType/NoHiddenParameter.java b/java/java-tests/testData/codeInsight/completion/smartType/NoHiddenParameter.java new file mode 100644 index 000000000000..1b697dd14e3a --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/NoHiddenParameter.java @@ -0,0 +1,18 @@ +import java.util.Collection; + +class A { + String join(Collection strings) { + return StringUtil.join(strings, ","); + } + + void method(Collection param) { + new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + String[] param = {""}; // hides the parameter + Collection params = Arrays.asList(param); + join() + } + }; + } +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java index bea6707b71e1..9cf3b7dc27bc 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionTest.java @@ -994,6 +994,8 @@ public class SmartTypeCompletionTest extends LightFixtureCompletionTestCase { public void testCaseMissingEnumValue() throws Throwable { doTest(); } public void testCaseMissingEnumValue2() throws Throwable { doTest(); } + + public void testNoHiddenParameter() { doTest(); } public void testTypeVariableInstanceOf() throws Throwable { configureByTestName(); @@ -1106,7 +1108,7 @@ public class SmartTypeCompletionTest extends LightFixtureCompletionTestCase { complete(); } - private void doTest() throws Exception { + private void doTest() { doTest(Lookup.NORMAL_SELECT_CHAR); }