From f20f15ec4665706c4642f784c0cd512a47f112ee Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 20 Nov 2015 18:21:32 +0100 Subject: [PATCH] resolve KDoc references to members of companion object --- .../org/jetbrains/kotlin/idea/kdoc/KDocReference.kt | 11 +++++++++-- idea/testData/kdoc/resolve/CompanionObjectMember.kt | 13 +++++++++++++ .../kotlin/idea/kdoc/KdocResolveTestGenerated.java | 6 ++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 idea/testData/kdoc/resolve/CompanionObjectMember.kt 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 d196ee0083a..ba257661384 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 @@ -138,10 +138,17 @@ private fun getClassInnerScope(outerScope: LexicalScope, descriptor: ClassDescri addFunctionDescriptor(constructor) } } + + val scopeChain = arrayListOf(descriptor.defaultType.memberScope, + descriptor.staticScope) + + descriptor.companionObjectDescriptor?.let { + scopeChain.add(it.defaultType.memberScope) + } + return LexicalChainedScope(headerScope, descriptor, false, null, "Class ${descriptor.name} scope", - descriptor.defaultType.memberScope, - descriptor.staticScope) + *scopeChain.toTypedArray()) } public fun getResolutionScope(resolutionFacade: ResolutionFacade, descriptor: DeclarationDescriptor): LexicalScope { diff --git a/idea/testData/kdoc/resolve/CompanionObjectMember.kt b/idea/testData/kdoc/resolve/CompanionObjectMember.kt new file mode 100644 index 00000000000..419da8d400f --- /dev/null +++ b/idea/testData/kdoc/resolve/CompanionObjectMember.kt @@ -0,0 +1,13 @@ +/** See [Foo.bar] */ +class T { + +} + +class Foo { + companion object { + fun bar() { + } + } +} + +// REF: (in Foo.Companion).bar() diff --git a/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocResolveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocResolveTestGenerated.java index a8d651a596a..2616b3fda7d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/kdoc/KdocResolveTestGenerated.java @@ -60,6 +60,12 @@ public class KdocResolveTestGenerated extends AbstractReferenceResolveTest { doTest(fileName); } + @TestMetadata("CompanionObjectMember.kt") + public void testCompanionObjectMember() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/kdoc/resolve/CompanionObjectMember.kt"); + doTest(fileName); + } + @TestMetadata("ConstructorParamReference.kt") public void testConstructorParamReference() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/kdoc/resolve/ConstructorParamReference.kt");