diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt index 8baa9cc8310..f8ed15683be 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea import com.intellij.lang.documentation.AbstractDocumentationProvider import com.intellij.lang.java.JavaDocumentationProvider import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiElement import com.intellij.psi.PsiManager import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration @@ -57,7 +56,7 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() { val bindingContext = navElement.analyze(BodyResolveMode.PARTIAL) val contextDescriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, navElement] ?: return null val descriptors = resolveKDocLink(bindingContext, navElement.getResolutionFacade(), - contextDescriptor, null, StringUtil.split(link, ",")) + contextDescriptor, null, link.split('.')) val target = descriptors.firstOrNull() ?: return null return DescriptorToSourceUtilsIde.getAnyDeclaration(psiManager.project, target) } diff --git a/idea/testData/kdoc/navigate/qualifiedName.kt b/idea/testData/kdoc/navigate/qualifiedName.kt new file mode 100644 index 00000000000..7623277e562 --- /dev/null +++ b/idea/testData/kdoc/navigate/qualifiedName.kt @@ -0,0 +1,9 @@ +package a.b.c + +class D { + +} + +fun foo() { + +} \ No newline at end of file diff --git a/idea/testData/kdoc/navigate/topLevelFun.kt b/idea/testData/kdoc/navigate/topLevelFun.kt new file mode 100644 index 00000000000..453df9b9194 --- /dev/null +++ b/idea/testData/kdoc/navigate/topLevelFun.kt @@ -0,0 +1,8 @@ +package doc + +fun topLevelFun() {} + +/** + * @see doc.topLevelFun + */ +class DocReferrer \ No newline at end of file diff --git a/idea/testData/kdoc/navigate/topLevelProperty.kt b/idea/testData/kdoc/navigate/topLevelProperty.kt new file mode 100644 index 00000000000..1846fe70663 --- /dev/null +++ b/idea/testData/kdoc/navigate/topLevelProperty.kt @@ -0,0 +1,8 @@ +package doc + +val topLevelProperty = "A" + +/** + * @see doc.topLevelProperty + */ +class DocReferrer \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt index 77310d0b0b1..f23a6aa8702 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocNavigationTest.kt @@ -24,7 +24,9 @@ import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources import org.jetbrains.kotlin.psi.KtClass +import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtFunction +import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.junit.Assert @@ -58,9 +60,27 @@ class QuickDocNavigationTest() : KotlinLightCodeInsightFixtureTestCase() { Assert.assertEquals("InputStream", (secondaryTarget as PsiClass).name) } + fun testQualifiedName() { + val target = resolveDocLink("a.b.c.D") + UsefulTestCase.assertInstanceOf(target, KtClass::class.java) + Assert.assertEquals("D", (target as KtClass).name) + } + + fun testTopLevelFun() { + val target = resolveDocLink("doc.topLevelFun") + UsefulTestCase.assertInstanceOf(target, KtFunction::class.java) + Assert.assertEquals("topLevelFun", (target as KtFunction).name) + } + + fun testTopLevelProperty() { + val target = resolveDocLink("doc.topLevelProperty") + UsefulTestCase.assertInstanceOf(target, KtProperty::class.java) + Assert.assertEquals("topLevelProperty", (target as KtProperty).name) + } + private fun resolveDocLink(linkText: String): PsiElement? { myFixture.configureByFile(getTestName(true) + ".kt") - val source = myFixture.elementAtCaret.getParentOfType(false) + val source = myFixture.elementAtCaret.getParentOfType(false) return KotlinQuickDocumentationProvider().getDocumentationElementForLink( myFixture.psiManager, linkText, source) }