From 99a402ee3032462822e32b1c41b6d1228eea99a4 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 16 Aug 2017 17:57:38 +0200 Subject: [PATCH] Correctly show quick doc for lookup elements that only have descriptors #KT-19716 Fixed --- .../idea/KotlinQuickDocumentationProvider.kt | 5 +++- idea/testData/kdoc/inCompletion/prop.kt | 1 + .../quickDoc/QuickDocInCompletionTest.kt | 24 +++++++++++++++---- 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 idea/testData/kdoc/inCompletion/prop.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt index 6b190d70c31..6b644166062 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt @@ -111,7 +111,10 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() { override fun getDocumentationElementForLookupItem(psiManager: PsiManager, `object`: Any?, element: PsiElement?): PsiElement? { if (`object` is DeclarationLookupObject) { - return `object`.psiElement + `object`.psiElement?.let { return it } + `object`.descriptor?.let { descriptor -> + return DescriptorToSourceUtilsIde.getAnyDeclaration(psiManager.project, descriptor) + } } return null } diff --git a/idea/testData/kdoc/inCompletion/prop.kt b/idea/testData/kdoc/inCompletion/prop.kt new file mode 100644 index 00000000000..68b9c20a5fb --- /dev/null +++ b/idea/testData/kdoc/inCompletion/prop.kt @@ -0,0 +1 @@ +val s = "foo".le \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocInCompletionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocInCompletionTest.kt index f7500404577..ff1271f9fd8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocInCompletionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocInCompletionTest.kt @@ -16,23 +16,37 @@ package org.jetbrains.kotlin.idea.editor.quickDoc -import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase -import org.jetbrains.kotlin.idea.KotlinFileType +import com.intellij.psi.PsiElement import org.jetbrains.kotlin.idea.KotlinQuickDocumentationProvider +import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase +import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.psi.KtClass +import org.jetbrains.kotlin.psi.KtProperty import org.junit.Assert -class QuickDocInCompletionTest(): LightPlatformCodeInsightFixtureTestCase() { +class QuickDocInCompletionTest: KotlinLightCodeInsightFixtureTestCase() { override fun getTestDataPath(): String { return PluginTestCaseBase.getTestDataPathBase() + "/kdoc/inCompletion/" } + + override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE + fun testSimple() { + val element = getElementFromLookup() + Assert.assertTrue(element is KtClass) + } + + fun testProp() { + val element = getElementFromLookup() + Assert.assertTrue(element is KtProperty) + } + + private fun getElementFromLookup(): PsiElement? { myFixture.configureByFile(getTestName(true) + ".kt") val lookupElements = myFixture.completeBasic() val lookupObject = lookupElements.first().`object` - val element = KotlinQuickDocumentationProvider().getDocumentationElementForLookupItem( + return KotlinQuickDocumentationProvider().getDocumentationElementForLookupItem( myFixture.psiManager, lookupObject, null) - Assert.assertTrue(element is KtClass) } } \ No newline at end of file