diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt index 8ef3a86925d..9c02ac39a54 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/smart/SmartCompletion.kt @@ -377,8 +377,8 @@ class SmartCompletion( val expectedInfosGrouped: Map> = expectedInfos.groupBy { it.type.makeNotNullable() } val items = ArrayList() - for ((jetType, infos) in expectedInfosGrouped) { - val lookupElement = lookupElementForType(jetType) ?: continue + for ((type, infos) in expectedInfosGrouped) { + val lookupElement = lookupElementForType(type) ?: continue items.add(lookupElement.addTailAndNameSimilarity(infos)) } return Result(null, items, null) @@ -446,16 +446,13 @@ class SmartCompletion( return Result(::filterDeclaration, listOf(), null) } - private fun lookupElementForType(jetType: JetType): LookupElement? { - if (jetType.isError()) return null - val classifier = jetType.getConstructor().getDeclarationDescriptor() ?: return null + private fun lookupElementForType(type: JetType): LookupElement? { + if (type.isError()) return null + val classifier = type.getConstructor().getDeclarationDescriptor() ?: return null val lookupElement = lookupElementFactory.createLookupElement(classifier, bindingContext, false) - val lookupString = lookupElement.getLookupString() - - val typeArgs = jetType.getArguments() - var itemText = lookupString + IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderTypeArguments(typeArgs) - val typeText = DescriptorUtils.getFqName(classifier).toString() + IdeDescriptorRenderers.SOURCE_CODE.renderTypeArguments(typeArgs) + var itemText = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(type) + val typeText = IdeDescriptorRenderers.SOURCE_CODE.renderType(type) val insertHandler: InsertHandler = object : InsertHandler { override fun handleInsert(context: InsertionContext, item: LookupElement) { diff --git a/idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt b/idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt new file mode 100644 index 00000000000..d540253412a --- /dev/null +++ b/idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt @@ -0,0 +1,5 @@ +package ppp + +fun foo(o: Any): T { + return o as +} diff --git a/idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt.after b/idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt.after new file mode 100644 index 00000000000..aa438505784 --- /dev/null +++ b/idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt.after @@ -0,0 +1,5 @@ +package ppp + +fun foo(o: Any): T { + return o as T +} diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/SmartCompletionHandlerTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/SmartCompletionHandlerTestGenerated.java index dd00e0bd93c..775f0b969b9 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/SmartCompletionHandlerTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/SmartCompletionHandlerTestGenerated.java @@ -719,6 +719,12 @@ public class SmartCompletionHandlerTestGenerated extends AbstractSmartCompletion doTest(fileName); } + @TestMetadata("TypeParameterAfterAs.kt") + public void testTypeParameterAfterAs() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/smart/TypeParameterAfterAs.kt"); + doTest(fileName); + } + @TestMetadata("Vararg1.kt") public void testVararg1() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/smart/Vararg1.kt");