From 389c7d03b7b1067f5742cc84ce7bee88c98c0dd8 Mon Sep 17 00:00:00 2001 From: Knize Date: Fri, 14 Jul 2017 22:28:16 +0300 Subject: [PATCH] KT-6676 Show enum ordinal in quickdoc (#1165) KT-6676: Show enum ordinal in quickdoc #KT-6676 fixed --- .../kotlin/idea/KotlinQuickDocumentationProvider.kt | 12 ++++++++++++ idea/testData/editor/quickDoc/OnEnumEntry.kt | 7 +++++++ idea/testData/editor/quickDoc/OnEnumEntryUsage.kt | 9 +++++++++ .../quickDoc/QuickDocProviderTestGenerated.java | 12 ++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 idea/testData/editor/quickDoc/OnEnumEntry.kt create mode 100644 idea/testData/editor/quickDoc/OnEnumEntryUsage.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt index 5a404b15bc7..dc6c48e3ae6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinQuickDocumentationProvider.kt @@ -194,6 +194,18 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() { // element is not an KtReferenceExpression, but KtClass of enum return renderEnum(element, originalElement, quickNavigation) } + else if (element is KtEnumEntry && !quickNavigation) { + val ordinal = element.containingClassOrObject?.getBody()?.run { getChildrenOfType().indexOf(element) } + + return buildString { + append(renderKotlinDeclaration(element, quickNavigation)) + ordinal?.let { + wrapTag("b") { + append("Enum constant ordinal: $ordinal") + } + } + } + } else if (element is KtDeclaration) { return renderKotlinDeclaration(element, quickNavigation) } diff --git a/idea/testData/editor/quickDoc/OnEnumEntry.kt b/idea/testData/editor/quickDoc/OnEnumEntry.kt new file mode 100644 index 00000000000..bfd7d3bd39b --- /dev/null +++ b/idea/testData/editor/quickDoc/OnEnumEntry.kt @@ -0,0 +1,7 @@ +enum class TestEnum{ + A, B, C +} + + + +//INFO:
enum entry C defined in TestEnum
Enum constant ordinal: 2 diff --git a/idea/testData/editor/quickDoc/OnEnumEntryUsage.kt b/idea/testData/editor/quickDoc/OnEnumEntryUsage.kt new file mode 100644 index 00000000000..0c1419055c7 --- /dev/null +++ b/idea/testData/editor/quickDoc/OnEnumEntryUsage.kt @@ -0,0 +1,9 @@ +enum class TestEnum{ + A, B, C +} + +fun test() { + TestEnum.C +} + +//INFO:
enum entry C defined in TestEnum
Enum constant ordinal: 2 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 f6c3e47470d..daaac4abafe 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java @@ -180,6 +180,18 @@ public class QuickDocProviderTestGenerated extends AbstractQuickDocProviderTest doTest(fileName); } + @TestMetadata("OnEnumEntry.kt") + public void testOnEnumEntry() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/OnEnumEntry.kt"); + doTest(fileName); + } + + @TestMetadata("OnEnumEntryUsage.kt") + public void testOnEnumEntryUsage() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/OnEnumEntryUsage.kt"); + doTest(fileName); + } + @TestMetadata("OnEnumUsage.kt") public void testOnEnumUsage() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/OnEnumUsage.kt");