From c967cc8a23daf2f4ba51cd282b4df149eeee92e2 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 28 Apr 2016 12:03:30 +0200 Subject: [PATCH] resolve references from @param to type parameters of functions #KT-12001 Fixed --- .../jetbrains/kotlin/idea/kdoc/KDocReference.kt | 2 +- .../quickDoc/OnMethodUsageWithTypeParameter.kt | 17 +++++++++++++++++ idea/testData/kdoc/rename/TypeParamReference.kt | 4 ++++ .../kdoc/rename/TypeParamReference.kt.after | 4 ++++ .../quickDoc/QuickDocProviderTestGenerated.java | 6 ++++++ .../kotlin/idea/kdoc/KdocRenameTest.java | 4 ++++ 6 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 idea/testData/editor/quickDoc/OnMethodUsageWithTypeParameter.kt create mode 100644 idea/testData/kdoc/rename/TypeParamReference.kt create mode 100644 idea/testData/kdoc/rename/TypeParamReference.kt.after diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt index 1f940a0c5cf..8631b4f040e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/KDocReference.kt @@ -102,7 +102,7 @@ fun getParamDescriptors(fromDescriptor: DeclarationDescriptor): List - return fromDescriptor.valueParameters + return fromDescriptor.valueParameters + fromDescriptor.typeParameters is ClassifierDescriptor -> { val typeParams = fromDescriptor.typeConstructor.parameters if (fromDescriptor is ClassDescriptor) { diff --git a/idea/testData/editor/quickDoc/OnMethodUsageWithTypeParameter.kt b/idea/testData/editor/quickDoc/OnMethodUsageWithTypeParameter.kt new file mode 100644 index 00000000000..5e378c12200 --- /dev/null +++ b/idea/testData/editor/quickDoc/OnMethodUsageWithTypeParameter.kt @@ -0,0 +1,17 @@ +/** +Some documentation + + * @param T the type parameter + * @param a Some int + * @param b String + */ +fun testMethod(a: Int, b: String) { + +} + +fun test() { + testMethod(1, "value") +} + +//INFO: public fun <T> testMethod(a: Int, b: String): Unit defined in root package

Some documentation

+//INFO:
Parameters:
T - the type parameter
a - Some int
b - String
diff --git a/idea/testData/kdoc/rename/TypeParamReference.kt b/idea/testData/kdoc/rename/TypeParamReference.kt new file mode 100644 index 00000000000..60e5144ffb6 --- /dev/null +++ b/idea/testData/kdoc/rename/TypeParamReference.kt @@ -0,0 +1,4 @@ +/** + * @param T this is a type parameter + */ +fun <T> f(s: String) { } diff --git a/idea/testData/kdoc/rename/TypeParamReference.kt.after b/idea/testData/kdoc/rename/TypeParamReference.kt.after new file mode 100644 index 00000000000..0baa60addd6 --- /dev/null +++ b/idea/testData/kdoc/rename/TypeParamReference.kt.after @@ -0,0 +1,4 @@ +/** + * @param R this is a type parameter + */ +fun <R> f(s: String) { } 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 b3428484142..29f800b0557 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/QuickDocProviderTestGenerated.java @@ -155,6 +155,12 @@ public class QuickDocProviderTestGenerated extends AbstractQuickDocProviderTest doTest(fileName); } + @TestMetadata("OnMethodUsageWithTypeParameter.kt") + public void testOnMethodUsageWithTypeParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/OnMethodUsageWithTypeParameter.kt"); + doTest(fileName); + } + @TestMetadata("TopLevelMethodFromJava.java") public void testTopLevelMethodFromJava() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/TopLevelMethodFromJava.java"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocRenameTest.java b/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocRenameTest.java index a7f62c4e114..469cab6d7bd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocRenameTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocRenameTest.java @@ -36,6 +36,10 @@ public class KdocRenameTest extends LightCodeInsightTestCase { doTest("bar"); } + public void testTypeParamReference() throws Exception { + doTest("R"); + } + public void testCodeReference() throws Exception { doTest("xyzzy"); }