From c57fa18eaadce2665674bedebb007c3b5520e401 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 23 Sep 2015 17:54:16 +0200 Subject: [PATCH] display type arguments in java completion suggestions (IDEA-143204) --- .../completion/TypeArgumentCompletionProvider.java | 2 +- .../com/intellij/codeInsight/lookup/PsiTypeLookupItem.java | 6 ++++-- .../completion/normal/SuggestAllTypeArguments.java | 4 ++-- .../completion/normal/SuggestAllTypeArguments_after.java | 4 ++-- .../completion/NormalCompletionOrderingTest.groovy | 3 ++- .../codeInsight/completion/NormalCompletionTest.groovy | 3 ++- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/TypeArgumentCompletionProvider.java b/java/java-impl/src/com/intellij/codeInsight/completion/TypeArgumentCompletionProvider.java index ec1e6d19c78b..48b58d54f590 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/TypeArgumentCompletionProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/TypeArgumentCompletionProvider.java @@ -205,7 +205,7 @@ class TypeArgumentCompletionProvider extends CompletionProvider() { @Override public String fun(PsiTypeLookupItem item) { - return item.getLookupString(); + return item.getType().getPresentableText(); } }, ", "); } diff --git a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java index 23d063c383ed..7014cdce4d84 100644 --- a/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java +++ b/java/java-impl/src/com/intellij/codeInsight/lookup/PsiTypeLookupItem.java @@ -73,11 +73,13 @@ public class PsiTypeLookupItem extends LookupItem implements TypedLookupItem { @Override public PsiType getType() { Object object = getObject(); - PsiType type = object instanceof PsiType ? (PsiType)object : JavaPsiFacade.getElementFactory(((PsiClass) object).getProject()).createType((PsiClass)object); + PsiType type = object instanceof PsiType + ? getSubstitutor().substitute((PsiType)object) + : JavaPsiFacade.getElementFactory(((PsiClass) object).getProject()).createType((PsiClass)object, getSubstitutor()); for (int i = 0; i < getBracketsCount(); i++) { type = new PsiArrayType(type); } - return getSubstitutor().substitute(type); + return type; } diff --git a/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments.java b/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments.java index 853b8c08c99b..bc73fc1926da 100644 --- a/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments.java +++ b/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments.java @@ -1,5 +1,5 @@ -import java.util.HashMap; +import java.util.*; public class A { - private HashMap m = new HashMap>() + private HashMap> m = new HashMap>() } diff --git a/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments_after.java b/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments_after.java index e1350895943c..391c5b314ce8 100644 --- a/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments_after.java +++ b/java/java-tests/testData/codeInsight/completion/normal/SuggestAllTypeArguments_after.java @@ -1,5 +1,5 @@ -import java.util.HashMap; +import java.util.*; public class A { - private HashMap m = new HashMap() + private HashMap> m = new HashMap>() } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy index 4c2485df1e40..956e3a5db3d7 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -696,8 +696,9 @@ interface TxANotAnno {} } public void testPreferValueTypesReturnedFromMethod() { - checkPreferredItems 0, 'StringBuffer', 'String', 'Serializable', 'SomeInterface', 'SomeOtherClass' + checkPreferredItems 0, 'StringBuffer', 'String', 'Serializable', 'SomeInterface', 'SomeInterface', 'SomeOtherClass' assert 'SomeInterface' == LookupElementPresentation.renderElement(myFixture.lookupElements[3]).itemText + assert 'SomeInterface' == LookupElementPresentation.renderElement(myFixture.lookupElements[4]).itemText } public void testPreferCastTypesHavingSpecifiedMethod() { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 398d8f899aba..df9087e84238 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -1324,7 +1324,8 @@ class XInternalError {} public void testSuggestAllTypeArguments() { configure() - assert 'String, String' == lookup.items[0].lookupString + assert 'String, List' == lookup.items[0].lookupString + assert 'String, List' == LookupElementPresentation.renderElement(lookup.items[0]).itemText type '\n' checkResult() }