diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/SmartCastProvider.java b/java/java-impl/src/com/intellij/codeInsight/completion/SmartCastProvider.java index 9b7b878a6146..7f3048553d0b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/SmartCastProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/SmartCastProvider.java @@ -125,7 +125,7 @@ class SmartCastProvider extends CompletionProvider { if (info.getKind() == ExpectedTypeInfo.TYPE_OR_SUPERTYPE) { InheritanceUtil.processSupers(infoClass, true, superClass -> { if (!CommonClassNames.JAVA_LANG_OBJECT.equals(superClass.getQualifiedName())) { - result.consume(JavaPsiFacade.getElementFactory(superClass.getProject()).createType(superClass)); + result.consume(JavaPsiFacade.getElementFactory(superClass.getProject()).createType(CompletionUtil.getOriginalOrSelf(superClass))); } return true; }); diff --git a/java/java-tests/testData/codeInsight/completion/normal/NoDuplicateInCast.java b/java/java-tests/testData/codeInsight/completion/normal/NoDuplicateInCast.java new file mode 100644 index 000000000000..10b937f946b2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/NoDuplicateInCast.java @@ -0,0 +1,11 @@ +class X { + void foo(Object o){ + if (o instanceof Foo) { + ((Foo) o).bar(); + } + } + + class Foo { + void bar() {} + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy index cf0fc5a5b723..de50be614956 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/NormalCompletionTest.groovy @@ -1837,4 +1837,9 @@ class Bar {{ assert LookupElementPresentation.renderElement(item).tailText.contains('local class') } + void testNoDuplicateInCast() { + configure() + assert myFixture.lookupElementStrings == null + } + }