diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt index cac54ab035c..c40803ec917 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt @@ -19,33 +19,28 @@ 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.project.Project import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiElement import com.intellij.psi.PsiManager -import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.asJava.KotlinLightMethod import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource -import org.jetbrains.kotlin.descriptors.SourceElement -import org.jetbrains.kotlin.idea.caches.resolve.KotlinCacheService -import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade -import org.jetbrains.kotlin.idea.caches.resolve.* +import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.kdoc.KDocFinder import org.jetbrains.kotlin.idea.kdoc.KDocRenderer -import org.jetbrains.kotlin.idea.kdoc.* -import org.jetbrains.kotlin.idea.project.ResolveSessionForBodies -import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag +import org.jetbrains.kotlin.idea.kdoc.resolveKDocLink import org.jetbrains.kotlin.psi.JetDeclaration import org.jetbrains.kotlin.psi.JetElement import org.jetbrains.kotlin.psi.JetPsiUtil import org.jetbrains.kotlin.psi.JetReferenceExpression import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import org.jetbrains.kotlin.renderer.DescriptorRenderer +import org.jetbrains.kotlin.renderer.DescriptorRendererBuilder +import org.jetbrains.kotlin.renderer.NameShortness import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.source.PsiSourceElement -import java.util.Collections public class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() { @@ -79,6 +74,14 @@ public class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() companion object { private val LOG = Logger.getInstance(javaClass()) + val quickDocNameFormat = DescriptorRendererBuilder() + .setWithDefinedIn(true) + .setNameShortness(NameShortness.SHORT) + .setRenderCompanionObjectName(true) + .setTextFormat(DescriptorRenderer.TextFormat.HTML) + .build() + + private fun getText(element: PsiElement, originalElement: PsiElement, quickNavigation: Boolean): String? { if (element is JetDeclaration) { return renderKotlinDeclaration(element, quickNavigation) @@ -115,11 +118,10 @@ public class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() return "No documentation available" } - var renderedDecl = DescriptorRenderer.HTML_NAMES_WITH_SHORT_TYPES.render(declarationDescriptor) + var renderedDecl = quickDocNameFormat.render(declarationDescriptor) if (!quickNavigation) { - renderedDecl = "
" + DescriptorRenderer.HTML_NAMES_WITH_SHORT_TYPES.render(declarationDescriptor) + "
" + renderedDecl = "
" + renderedDecl + "
" } - val comment = KDocFinder.findKDoc(declarationDescriptor) if (comment != null) { renderedDecl = renderedDecl + "
" + KDocRenderer.renderKDoc(comment) diff --git a/idea/testData/editor/quickDoc/AtFunctionParameter.kt b/idea/testData/editor/quickDoc/AtFunctionParameter.kt index 0f6610a47c6..6dc2f04f73a 100644 --- a/idea/testData/editor/quickDoc/AtFunctionParameter.kt +++ b/idea/testData/editor/quickDoc/AtFunctionParameter.kt @@ -1,3 +1,3 @@ fun some(f: (Int) -> String) : String? = null -// INFO: value-parameter val f: (Int) → String \ No newline at end of file +//INFO: value-parameter val f: (Int) → String defined in some diff --git a/idea/testData/editor/quickDoc/AtTypeParameter.kt b/idea/testData/editor/quickDoc/AtTypeParameter.kt index 646082ac249..ed345b8ddca 100644 --- a/idea/testData/editor/quickDoc/AtTypeParameter.kt +++ b/idea/testData/editor/quickDoc/AtTypeParameter.kt @@ -2,4 +2,4 @@ trait Base class Some<T: Base> -// INFO: <T : Base> \ No newline at end of file +//INFO: <T : Base> defined in Some diff --git a/idea/testData/editor/quickDoc/AtVariableDeclaration.kt b/idea/testData/editor/quickDoc/AtVariableDeclaration.kt index f0799b25abb..6eef2e9091f 100644 --- a/idea/testData/editor/quickDoc/AtVariableDeclaration.kt +++ b/idea/testData/editor/quickDoc/AtVariableDeclaration.kt @@ -5,4 +5,4 @@ fun test() { } -// INFO: val test: String? \ No newline at end of file +//INFO: val test: String? defined in test diff --git a/idea/testData/editor/quickDoc/MethodFromStdLib.kt b/idea/testData/editor/quickDoc/MethodFromStdLib.kt index 72cc73da994..a0f6b0a2c0d 100644 --- a/idea/testData/editor/quickDoc/MethodFromStdLib.kt +++ b/idea/testData/editor/quickDoc/MethodFromStdLib.kt @@ -2,5 +2,5 @@ fun test() { listOf(1, 2, 4).filter { it > 0 } } -//INFO: inline public fun <T> Iterable<T>.filter(predicate: (T) → Boolean): List<T>

Returns a list containing all elements matching the given predicate +//INFO: inline public fun <T> Iterable<T>.filter(predicate: (T) → Boolean): List<T> defined in kotlin

Returns a list containing all elements matching the given predicate //INFO:

diff --git a/idea/testData/editor/quickDoc/OnClassDeclarationWithNoPackage.kt b/idea/testData/editor/quickDoc/OnClassDeclarationWithNoPackage.kt index b329cc907b0..dca8597b69b 100644 --- a/idea/testData/editor/quickDoc/OnClassDeclarationWithNoPackage.kt +++ b/idea/testData/editor/quickDoc/OnClassDeclarationWithNoPackage.kt @@ -3,5 +3,5 @@ */ class Some -//INFO: internal final class Some

Usefull comment +//INFO: internal final class Some defined in root package

Usefull comment //INFO:

diff --git a/idea/testData/editor/quickDoc/OnFunctionDeclarationWithPackage.kt b/idea/testData/editor/quickDoc/OnFunctionDeclarationWithPackage.kt index 758db8e473b..fb35b6666b6 100644 --- a/idea/testData/editor/quickDoc/OnFunctionDeclarationWithPackage.kt +++ b/idea/testData/editor/quickDoc/OnFunctionDeclarationWithPackage.kt @@ -12,6 +12,6 @@ package test */ fun testFun(first: String, second: Int) = 12 -//INFO: internal fun testFun(first: String, second: Int): Int

Test function +//INFO: internal fun testFun(first: String, second: Int): Int defined in test

Test function //INFO:

Parameters:
first - Some
second - Other
//INFO:

diff --git a/idea/testData/editor/quickDoc/OnInheritedMethodUsage.kt b/idea/testData/editor/quickDoc/OnInheritedMethodUsage.kt index 337d5fa80c9..7a4a587d5ae 100644 --- a/idea/testData/editor/quickDoc/OnInheritedMethodUsage.kt +++ b/idea/testData/editor/quickDoc/OnInheritedMethodUsage.kt @@ -14,5 +14,5 @@ fun test() { D().foo() } -//INFO: internal open fun foo(): Int

This method returns zero. +//INFO: internal open fun foo(): Int defined in D

This method returns zero. //INFO:

diff --git a/idea/testData/editor/quickDoc/OnInheritedPropertyUsage.kt b/idea/testData/editor/quickDoc/OnInheritedPropertyUsage.kt index 902c241713a..c9c19758f8c 100644 --- a/idea/testData/editor/quickDoc/OnInheritedPropertyUsage.kt +++ b/idea/testData/editor/quickDoc/OnInheritedPropertyUsage.kt @@ -14,5 +14,5 @@ fun test() { D().foo } -//INFO: internal open val foo: Int

This property returns zero. +//INFO: internal open val foo: Int defined in D

This property returns zero. //INFO:

diff --git a/idea/testData/editor/quickDoc/OnMethodUsage.kt b/idea/testData/editor/quickDoc/OnMethodUsage.kt index fa3c76d7675..f95cfe9e6f6 100644 --- a/idea/testData/editor/quickDoc/OnMethodUsage.kt +++ b/idea/testData/editor/quickDoc/OnMethodUsage.kt @@ -12,6 +12,6 @@ fun test() { testMethod(1, "value") } -//INFO: internal fun testMethod(a: Int, b: String): Unit

Some documentation +//INFO: internal fun testMethod(a: Int, b: String): Unit defined in root package

Some documentation //INFO:

Parameters:
a - Some int
b - String
//INFO:

diff --git a/idea/testData/editor/quickDoc/OnMethodUsageWithBracketsInParam.kt b/idea/testData/editor/quickDoc/OnMethodUsageWithBracketsInParam.kt index acd0dde376e..1b4b83ae749 100644 --- a/idea/testData/editor/quickDoc/OnMethodUsageWithBracketsInParam.kt +++ b/idea/testData/editor/quickDoc/OnMethodUsageWithBracketsInParam.kt @@ -12,6 +12,6 @@ fun test() { testMethod(1, "value") } -//INFO: internal fun testMethod(a: Int, b: String): Unit

Some documentation +//INFO: internal fun testMethod(a: Int, b: String): Unit defined in root package

Some documentation //INFO:

Parameters:
a - Some int
b - String
//INFO:

diff --git a/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt b/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt index 5039d12cdf4..4b4f39acae9 100644 --- a/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt +++ b/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt @@ -18,7 +18,7 @@ fun test() { testMethod(1, "value") } -//INFO: internal fun testMethod(): Unit

Some documentation. Bold underline code foo: bar (baz) quux

+//INFO: internal fun testMethod(): Unit defined in root package

Some documentation. Bold underline code foo: bar (baz) quux

//INFO:

a href="http://www.kotlinlang.org">Kotlin

//INFO:

C

//INFO:

See this class

diff --git a/idea/testData/editor/quickDoc/OnMethodUsageWithReturnAndThrows.kt b/idea/testData/editor/quickDoc/OnMethodUsageWithReturnAndThrows.kt index 3bb5eec0621..5394c0b978a 100644 --- a/idea/testData/editor/quickDoc/OnMethodUsageWithReturnAndThrows.kt +++ b/idea/testData/editor/quickDoc/OnMethodUsageWithReturnAndThrows.kt @@ -14,7 +14,7 @@ fun test() { testMethod(1, "value") } -//INFO: internal fun testMethod(a: Int, b: String): Unit

Some documentation +//INFO: internal fun testMethod(a: Int, b: String): Unit defined in root package

Some documentation //INFO:

Parameters:
a - Some int
b - String
//INFO:
Returns:
Return value
//INFO:
Throws:
IllegalArgumentException - if the weather is bad
diff --git a/idea/testData/editor/quickDoc/OnMethodUsageWithSee.kt b/idea/testData/editor/quickDoc/OnMethodUsageWithSee.kt index cb4d1a9d12b..28eebb459bf 100644 --- a/idea/testData/editor/quickDoc/OnMethodUsageWithSee.kt +++ b/idea/testData/editor/quickDoc/OnMethodUsageWithSee.kt @@ -16,5 +16,5 @@ fun test() { testMethod(1, "value") } -//INFO: internal fun testMethod(): Unit

+//INFO: internal fun testMethod(): Unit defined in root package

//INFO:

See Also:
C, D

diff --git a/idea/testData/editor/quickDoc/TopLevelMethodFromJava.java b/idea/testData/editor/quickDoc/TopLevelMethodFromJava.java index a58793107d9..cca09b295a3 100644 --- a/idea/testData/editor/quickDoc/TopLevelMethodFromJava.java +++ b/idea/testData/editor/quickDoc/TopLevelMethodFromJava.java @@ -8,5 +8,5 @@ class Testing { } } -//INFO: internal fun foo(bar: Int): Unit

KDoc foo +//INFO: internal fun foo(bar: Int): Unit defined in some

KDoc foo //INFO: