diff --git a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java index edf78ed8fb9a..116458dae6da 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java @@ -324,6 +324,9 @@ public class MethodParameterInfoHandler implements ParameterInfoHandlerWithTabAc } context.setUIComponentEnabled(i, enabled); + if (!enabled && context.getHighlightedParameter() == candidate) { + context.setHighlightedParameter(null); + } if (candidates.length > 1 && enabled) { if (PsiManager.getInstance(context.getProject()).areElementsEquivalent(chosenMethod, method)) { chosenInfo = candidate; diff --git a/java/java-tests/testData/codeInsight/parameterInfo/HighlightCurrentParameterAfterTypingFirstArgumentOfThree.java b/java/java-tests/testData/codeInsight/parameterInfo/HighlightCurrentParameterAfterTypingFirstArgumentOfThree.java new file mode 100644 index 000000000000..c2f155128807 --- /dev/null +++ b/java/java-tests/testData/codeInsight/parameterInfo/HighlightCurrentParameterAfterTypingFirstArgumentOfThree.java @@ -0,0 +1,7 @@ +class A { + void foo() {} + void foo(int a, int b, int c) {} + { + foo() + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/ParameterInfoTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/ParameterInfoTest.java index d359ccced74a..81a05977034e 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/ParameterInfoTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/ParameterInfoTest.java @@ -361,4 +361,27 @@ public class ParameterInfoTest extends LightCodeInsightFixtureTestCase { myFixture.checkResultByFile(getTestName(false) + "_after.java"); } + public void testHighlightCurrentParameterAfterTypingFirstArgumentOfThree() { + myFixture.configureByFile(getTestName(false) + ".java"); + + MethodParameterInfoHandler handler = new MethodParameterInfoHandler(); + CreateParameterInfoContext context = new MockCreateParameterInfoContext(getEditor(), getFile()); + PsiExpressionList argList = handler.findElementForParameterInfo(context); + assertNotNull(argList); + Object[] items = context.getItemsToShow(); + assertSize(2, items); + + MockUpdateParameterInfoContext updateContext = updateParameterInfo(handler, argList, items); + assertTrue(updateContext.isUIComponentEnabled(0)); + assertTrue(updateContext.isUIComponentEnabled(1)); + assertEquals(-1, updateContext.getCurrentParameter()); + + myFixture.type("1, "); + PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); + handler.updateParameterInfo(argList, updateContext); + assertFalse(updateContext.isUIComponentEnabled(0)); + assertTrue(updateContext.isUIComponentEnabled(1)); + assertEquals(1, updateContext.getCurrentParameter()); + } + } \ No newline at end of file