mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java completion: suggest only denotable method return types (IDEA-194462)
This commit is contained in:
+2
-1
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.lookup.PsiTypeLookupItem;
|
||||
import com.intellij.patterns.ElementPattern;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
@@ -60,7 +61,7 @@ class MethodReturnTypeProvider extends CompletionProvider<CompletionParameters>
|
||||
@Nullable
|
||||
@Override
|
||||
public PsiType visitType(PsiType type) {
|
||||
if (!(type instanceof PsiPrimitiveType) && myProcessed.add(type)) {
|
||||
if (!(type instanceof PsiPrimitiveType) && PsiTypesUtil.isDenotableType(type, position) && myProcessed.add(type)) {
|
||||
int priority = type.equalsToText(CommonClassNames.JAVA_LANG_OBJECT) ? 1 : 1000 - myProcessed.size();
|
||||
consumer.consume(PrioritizedLookupElement.withPriority(PsiTypeLookupItem.createLookupItem(type, position), priority));
|
||||
}
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
public class Main {
|
||||
|
||||
public <caret>x main() {
|
||||
return new Object(){};
|
||||
}
|
||||
|
||||
}
|
||||
+5
@@ -1170,6 +1170,11 @@ public class SmartTypeCompletionTest extends LightFixtureCompletionTestCase {
|
||||
myFixture.assertPreferredCompletionItems(0, "Serializable", "CharSequence", "Object");
|
||||
}
|
||||
|
||||
public void testSuggestMethodReturnTypeAnonymous() {
|
||||
configureByTestName();
|
||||
assertOrderedEquals(myFixture.getLookupElementStrings(), "Object");
|
||||
}
|
||||
|
||||
public void testSuggestCastReturnTypeByCalledMethod() { doTest(); }
|
||||
|
||||
public void testOnlyInterfacesInImplements() { doTest(); }
|
||||
|
||||
Reference in New Issue
Block a user