[FIR IDE] Fix invalid reference resolve into companion with custom name
This commit is contained in:
+3
-3
@@ -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
|
||||
|
||||
idea/idea-frontend-fir/testData/referenceResolve/nestedTypes/ResolveNamedCompanionInCompanionType.kt
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
package foo.bar.baz
|
||||
|
||||
class X {
|
||||
companion object COMP {
|
||||
fun lol() {}
|
||||
}
|
||||
}
|
||||
|
||||
class E {
|
||||
val x = foo.bar.baz.X.CO<caret>MP
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Resolved to:
|
||||
0: (in foo.bar.baz.X) companion object COMP
|
||||
+6
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user