mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-186367 Parameter info popup is confused about overloaded method signature
This commit is contained in:
+1
-1
@@ -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) {
|
||||
|
||||
+17
@@ -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);
|
||||
}
|
||||
|
||||
@@ -378,4 +378,29 @@ public class ParameterInfoTest extends AbstractParameterInfoTestCase {
|
||||
"-\n" +
|
||||
"<html>int a, <b>int b</b>, int c</html>");
|
||||
}
|
||||
|
||||
public void testOverloadIsChangedAfterCompletion() {
|
||||
configureJava("class C { void m() { System.out.pr<caret> } }");
|
||||
complete("print(int i)");
|
||||
type("'a");
|
||||
checkResult("class C { void m() { System.out.print('a<caret>'); } }");
|
||||
showParameterInfo();
|
||||
checkHintContents("<html><b>boolean b</b></html>\n" +
|
||||
"-\n" +
|
||||
"[<html><b>char c</b></html>]\n" +
|
||||
"-\n" +
|
||||
"<html><b>int i</b></html>\n" +
|
||||
"-\n" +
|
||||
"<html><b>long l</b></html>\n" +
|
||||
"-\n" +
|
||||
"<html><b>float v</b></html>\n" +
|
||||
"-\n" +
|
||||
"<html><b>double v</b></html>\n" +
|
||||
"-\n" +
|
||||
"<html><b>char[] chars</b></html>\n" +
|
||||
"-\n" +
|
||||
"<html><b>@Nullable String s</b></html>\n" +
|
||||
"-\n" +
|
||||
"<html><b>@Nullable Object o</b></html>");
|
||||
}
|
||||
}
|
||||
-18
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user