From cafb5ac10a9632db134d460809696385e137d572 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 7 Aug 2015 19:05:12 +0300 Subject: [PATCH] Fixed parameter name&type completion for type parameters --- .../kotlin/idea/completion/LookupElementFactory.kt | 4 ++-- ...assInsertHandler.kt => KotlinClassifierInsertHandler.kt} | 5 +++-- .../handlers/basic/parameterNameAndType/TypeParameter.kt | 3 +++ .../basic/parameterNameAndType/TypeParameter.kt.after | 3 +++ .../test/handlers/BasicCompletionHandlerTestGenerated.java | 6 ++++++ 5 files changed, 17 insertions(+), 4 deletions(-) rename idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/{KotlinClassInsertHandler.kt => KotlinClassifierInsertHandler.kt} (96%) create mode 100644 idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt create mode 100644 idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt.after diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt index 20db3daa20f..f3c657e0e8b 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupElementFactory.kt @@ -125,7 +125,7 @@ public class LookupElementFactory( override fun getIcon(flags: Int) = psiClass.getIcon(flags) } var element = LookupElementBuilder.create(lookupObject, psiClass.getName()!!) - .withInsertHandler(KotlinClassInsertHandler) + .withInsertHandler(KotlinClassifierInsertHandler) val typeParams = psiClass.getTypeParameters() if (includeClassTypeArguments && typeParams.isNotEmpty()) { @@ -391,7 +391,7 @@ public class LookupElementFactory( is PropertyDescriptor -> KotlinPropertyInsertHandler - is ClassDescriptor -> KotlinClassInsertHandler + is ClassifierDescriptor -> KotlinClassifierInsertHandler else -> BaseDeclarationInsertHandler() } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinClassInsertHandler.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinClassifierInsertHandler.kt similarity index 96% rename from idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinClassInsertHandler.kt rename to idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinClassifierInsertHandler.kt index 8a942149637..91dd951bfcc 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinClassInsertHandler.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/KotlinClassifierInsertHandler.kt @@ -21,6 +21,7 @@ import com.intellij.codeInsight.lookup.LookupElement import com.intellij.psi.PsiClass import com.intellij.psi.PsiDocumentManager import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.completion.isAfterDot import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject @@ -33,7 +34,7 @@ import org.jetbrains.kotlin.renderer.render import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode -object KotlinClassInsertHandler : BaseDeclarationInsertHandler() { +object KotlinClassifierInsertHandler : BaseDeclarationInsertHandler() { override fun handleInsert(context: InsertionContext, item: LookupElement) { super.handleInsert(context, item) @@ -86,7 +87,7 @@ object KotlinClassInsertHandler : BaseDeclarationInsertHandler() { private fun qualifiedNameToInsert(item: LookupElement): String { val lookupObject = item.getObject() as DeclarationLookupObject if (lookupObject.descriptor != null) { - return IdeDescriptorRenderers.SOURCE_CODE.renderClassifierName(lookupObject.descriptor as ClassDescriptor) + return IdeDescriptorRenderers.SOURCE_CODE.renderClassifierName(lookupObject.descriptor as ClassifierDescriptor) } else { val qualifiedName = (lookupObject.psiElement as PsiClass).getQualifiedName()!! diff --git a/idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt new file mode 100644 index 00000000000..1fc146184f5 --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt @@ -0,0 +1,3 @@ +fun foo(t) + +// ELEMENT: t diff --git a/idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt.after b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt.after new file mode 100644 index 00000000000..837d0a1aaa9 --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt.after @@ -0,0 +1,3 @@ +fun foo(t: T) + +// ELEMENT: t diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java index 652258695cc..91a7d9cd735 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java @@ -319,6 +319,12 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion doTest(fileName); } + @TestMetadata("TypeParameter.kt") + public void testTypeParameter() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/parameterNameAndType/TypeParameter.kt"); + doTest(fileName); + } + @TestMetadata("UserPrefix.kt") public void testUserPrefix() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/handlers/basic/parameterNameAndType/UserPrefix.kt");