From ab919886aecbd368e16e4a116b5a53ccc757a518 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 27 Jun 2017 21:42:42 +0300 Subject: [PATCH] Fix rendering of local anonymous object types for quick doc #KT-8893 fixed --- .../idea/KotlinQuickDocumentationProvider.kt | 19 +++++++++++++++++++ .../quickDoc/AnonymousObjectLocalVariable.kt | 9 +++++++++ .../QuickDocProviderTestGenerated.java | 6 ++++++ 3 files changed, 34 insertions(+) create mode 100644 idea/testData/editor/quickDoc/AnonymousObjectLocalVariable.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt index d3b36bbe210..5a404b15bc7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt @@ -60,6 +60,25 @@ import org.jetbrains.kotlin.utils.addToStdlib.constant class HtmlClassifierNamePolicy(val base: ClassifierNamePolicy) : ClassifierNamePolicy { override fun renderClassifier(classifier: ClassifierDescriptor, renderer: DescriptorRenderer): String { + if (DescriptorUtils.isAnonymousObject(classifier)) { + + val supertypes = classifier.typeConstructor.supertypes + return buildString { + append("<anonymous object") + if (supertypes.isNotEmpty()) { + append(" : ") + supertypes.joinTo(this) { + val ref = it.constructor.declarationDescriptor + if (ref != null) + renderClassifier(ref, renderer) + else + "<ERROR CLASS>" + } + } + append(">") + } + } + val name = base.renderClassifier(classifier, renderer) if (classifier.isBoringBuiltinClass()) return name diff --git a/idea/testData/editor/quickDoc/AnonymousObjectLocalVariable.kt b/idea/testData/editor/quickDoc/AnonymousObjectLocalVariable.kt new file mode 100644 index 00000000000..886d34b5118 --- /dev/null +++ b/idea/testData/editor/quickDoc/AnonymousObjectLocalVariable.kt @@ -0,0 +1,9 @@ +interface OurFace +open class OurClass + +fun context() { + val v = object : OurClass(), OurFace {} + v +} + +//INFO:
val v: <anonymous object : OurClass, OurFace>
diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java index e124dc64c9e..f6c3e47470d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java @@ -36,6 +36,12 @@ public class QuickDocProviderTestGenerated extends AbstractQuickDocProviderTest KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/editor/quickDoc"), Pattern.compile("^([^_]+)\\.[^\\.]*$"), TargetBackend.ANY, true); } + @TestMetadata("AnonymousObjectLocalVariable.kt") + public void testAnonymousObjectLocalVariable() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/AnonymousObjectLocalVariable.kt"); + doTest(fileName); + } + @TestMetadata("AtConstantWithUnderscore.kt") public void testAtConstantWithUnderscore() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/AtConstantWithUnderscore.kt");