diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/MethodReturnTypeProvider.java b/java/java-impl/src/com/intellij/codeInsight/completion/MethodReturnTypeProvider.java index 0bfa5bc99efb..a1fa8186209b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/MethodReturnTypeProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/MethodReturnTypeProvider.java @@ -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 @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)); } diff --git a/java/java-tests/testData/codeInsight/completion/smartType/SuggestMethodReturnTypeAnonymous.java b/java/java-tests/testData/codeInsight/completion/smartType/SuggestMethodReturnTypeAnonymous.java new file mode 100644 index 000000000000..19fd1cf95556 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/smartType/SuggestMethodReturnTypeAnonymous.java @@ -0,0 +1,7 @@ +public class Main { + + public x main() { + return new Object(){}; + } + +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/SmartTypeCompletionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/SmartTypeCompletionTest.java index 48dddbcf3027..5138411913ad 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/SmartTypeCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/SmartTypeCompletionTest.java @@ -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(); }