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 64f27cd85634..02b13ce4767a 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 @@ -336,7 +336,7 @@ public class MethodParameterInfoHandler implements ParameterInfoHandlerWithTabAc } } - context.setHighlightedParameter(ObjectUtils.coalesce(chosenInfo, completeMatch)); + context.setHighlightedParameter(ObjectUtils.coalesce(completeMatch, chosenInfo)); Object highlightedCandidate = candidates.length == 1 ? candidates[0] : context.getHighlightedParameter(); if (highlightedCandidate != null) { diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/AbstractParameterInfoTestCase.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/AbstractParameterInfoTestCase.java index 258335fc5f62..f879645b6fdf 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/AbstractParameterInfoTestCase.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/AbstractParameterInfoTestCase.java @@ -6,6 +6,8 @@ import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.completion.LightFixtureCompletionTestCase; import com.intellij.codeInsight.daemon.impl.ParameterHintsPresentationManager; import com.intellij.codeInsight.hint.ParameterInfoController; +import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.codeInsight.lookup.LookupElementPresentation; import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.editor.Editor; @@ -15,6 +17,7 @@ import com.intellij.util.ui.UIUtil; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.locks.LockSupport; +import java.util.stream.Stream; public abstract class AbstractParameterInfoTestCase extends LightFixtureCompletionTestCase { private EditorHintFixture myHintFixture; @@ -51,10 +54,24 @@ public abstract class AbstractParameterInfoTestCase extends LightFixtureCompleti assertEquals(hintText, myHintFixture.getCurrentHintText()); } + public void checkResult(String text) { + myFixture.checkResult(text); + } + public void type(String text) { myFixture.type(text); } + public void complete(String partOfItemText) { + LookupElement[] elements = myFixture.completeBasic(); + LookupElement element = Stream.of(elements).filter(e -> { + LookupElementPresentation p = new LookupElementPresentation(); + e.renderElement(p); + return (p.getItemText() + p.getTailText()).contains(partOfItemText); + }).findAny().get(); + selectItem(element); + } + private void waitForParameterInfoUpdate() throws TimeoutException { ParameterInfoController.waitForDelayedActions(getEditor(), 1, TimeUnit.MINUTES); } 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 d6c74d943e8a..04f9500cc010 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/ParameterInfoTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/ParameterInfoTest.java @@ -378,4 +378,29 @@ public class ParameterInfoTest extends AbstractParameterInfoTestCase { "-\n" + "int a, int b, int c"); } + + public void testOverloadIsChangedAfterCompletion() { + configureJava("class C { void m() { System.out.pr } }"); + complete("print(int i)"); + type("'a"); + checkResult("class C { void m() { System.out.print('a'); } }"); + showParameterInfo(); + checkHintContents("boolean b\n" + + "-\n" + + "[char c]\n" + + "-\n" + + "int i\n" + + "-\n" + + "long l\n" + + "-\n" + + "float v\n" + + "-\n" + + "double v\n" + + "-\n" + + "char[] chars\n" + + "-\n" + + "@Nullable String s\n" + + "-\n" + + "@Nullable Object o"); + } } \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java index 2638f3beba05..fd187657acde 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java @@ -6,8 +6,6 @@ import com.intellij.codeInsight.completion.CompletionType; import com.intellij.codeInsight.hints.JavaInlayParameterHintsProvider; import com.intellij.codeInsight.hints.Option; import com.intellij.codeInsight.intention.IntentionAction; -import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupElementPresentation; import com.intellij.java.codeInsight.AbstractParameterInfoTestCase; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.editor.ex.EditorSettingsExternalizable; @@ -17,8 +15,6 @@ import com.intellij.psi.JavaCodeFragmentFactory; import com.intellij.psi.PsiExpressionCodeFragment; import com.intellij.testFramework.EditorTestUtil; -import java.util.stream.Stream; - public class CompletionHintsTest extends AbstractParameterInfoTestCase { private boolean myStoredSettingValue; @@ -898,10 +894,6 @@ public class CompletionHintsTest extends AbstractParameterInfoTestCase { } } - private void checkResult(String text) { - myFixture.checkResult(text); - } - private void checkResultWithInlays(String text) { myFixture.checkResultWithInlays(text); } @@ -949,14 +941,4 @@ public class CompletionHintsTest extends AbstractParameterInfoTestCase { private void escape() { myFixture.performEditorAction(IdeActions.ACTION_EDITOR_ESCAPE); } - - private void complete(String partOfItemText) { - LookupElement[] elements = myFixture.completeBasic(); - LookupElement element = Stream.of(elements).filter(e -> { - LookupElementPresentation p = new LookupElementPresentation(); - e.renderElement(p); - return (p.getItemText() + p.getTailText()).contains(partOfItemText); - }).findAny().get(); - selectItem(element); - } } \ No newline at end of file