Handle constructor usage for actual class as usage of expect class
#KT-25498 Fixed
This commit is contained in:
@@ -181,10 +181,13 @@ fun KtSimpleNameReference.canBePsiMethodReference(): Boolean {
|
||||
}
|
||||
|
||||
private fun PsiElement.isConstructorOf(unwrappedCandidate: PsiElement) =
|
||||
// call to Java constructor
|
||||
(this is PsiMethod && isConstructor && containingClass == unwrappedCandidate) ||
|
||||
when {
|
||||
// call to Java constructor
|
||||
this is PsiMethod && isConstructor && containingClass == unwrappedCandidate -> true
|
||||
// call to Kotlin constructor
|
||||
(this is KtConstructor<*> && getContainingClassOrObject() == unwrappedCandidate)
|
||||
this is KtConstructor<*> && getContainingClassOrObject().isEquivalentTo(unwrappedCandidate) -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
fun AbstractKtReference<out KtExpression>.renameImplicitConventionalCall(newName: String?): KtExpression {
|
||||
if (newName == null) return expression
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
expect interface I
|
||||
expect class C : I
|
||||
@@ -0,0 +1,5 @@
|
||||
// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtClass
|
||||
// OPTIONS: usages, expected
|
||||
|
||||
actual interface <caret>I
|
||||
actual class C : I
|
||||
@@ -0,0 +1,2 @@
|
||||
[common.kt] Supertype 2 expect class C : I
|
||||
[jvm.kt] Supertype 5 actual class C : I
|
||||
@@ -0,0 +1,5 @@
|
||||
// PSI_ELEMENT: org.jetbrains.kotlin.psi.KtClass
|
||||
// OPTIONS: usages, expected
|
||||
|
||||
expect open class O<caret>Class(i: Int)
|
||||
expect class Inheritor : OClass
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
[common.kt] Supertype 5 expect class Inheritor : OClass
|
||||
[jvm.kt] Supertype 2 actual class Inheritor : OClass(42)
|
||||
@@ -0,0 +1,2 @@
|
||||
actual open class OClass actual constructor(i: Int)
|
||||
actual class Inheritor : OClass(42)
|
||||
@@ -22,6 +22,11 @@ import java.io.File
|
||||
|
||||
class FindUsagesMultiModuleTest : AbstractFindUsagesMultiModuleTest() {
|
||||
|
||||
@Test
|
||||
fun testFindActualInterface() {
|
||||
doTest()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFindCommonClassFromActual() {
|
||||
doTest()
|
||||
@@ -37,6 +42,11 @@ class FindUsagesMultiModuleTest : AbstractFindUsagesMultiModuleTest() {
|
||||
doTest()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFindCommonSuperclass() {
|
||||
doTest()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFindImplFromHeader() {
|
||||
doTest()
|
||||
|
||||
Reference in New Issue
Block a user