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