diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt index e56381b4d5a..f0a475116d8 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/references/FirReferenceResolveHelper.kt @@ -412,10 +412,10 @@ internal object FirReferenceResolveHelper { var qualifiedAccess: KtDotQualifiedExpression = firSourcePsi val referencedClassId = if ((referencedClass as? FirRegularClass)?.isCompanion == true && - (qualifiedAccess.selectorExpression as? KtNameReferenceExpression)?.getReferencedName() != "Companion" + (qualifiedAccess.selectorExpression as? KtNameReferenceExpression)?.getReferencedName() != referencedClass.classId.shortClassName.asString() ) { - // Remove the last "Companion" part if the qualified access does not contain it. This is needed because the "Companion" - // part is optional. + // Remove the last companion name part if the qualified access does not contain it. + // This is needed because the companion name part is optional. referencedClass.classId.outerClassId ?: return referencedSymbolsByFir } else { referencedClass.classId diff --git a/idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.kt b/idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.kt new file mode 100644 index 00000000000..8cb7e9bb9a6 --- /dev/null +++ b/idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.kt @@ -0,0 +1,11 @@ +package foo.bar.baz + +class X { + companion object COMP { + fun lol() {} + } +} + +class E { + val x = foo.bar.baz.X.COMP +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.txt b/idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.txt new file mode 100644 index 00000000000..37327649210 --- /dev/null +++ b/idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.txt @@ -0,0 +1,2 @@ +Resolved to: +0: (in foo.bar.baz.X) companion object COMP \ No newline at end of file diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/ReferenceResolveTestGenerated.java b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/ReferenceResolveTestGenerated.java index 13a9c0f7bfc..1822f852c1c 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/ReferenceResolveTestGenerated.java +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/fir/frontend/api/ReferenceResolveTestGenerated.java @@ -971,6 +971,12 @@ public class ReferenceResolveTestGenerated extends AbstractReferenceResolveTest runTest("idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveMiddleOfPackageInType.kt"); } + @Test + @TestMetadata("ResolveNamedCompanionInCompanionType.kt") + public void testResolveNamedCompanionInCompanionType() throws Exception { + runTest("idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.kt"); + } + @Test @TestMetadata("ResolveStartOfPackageInType.kt") public void testResolveStartOfPackageInType() throws Exception {