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) =
|
private fun PsiElement.isConstructorOf(unwrappedCandidate: PsiElement) =
|
||||||
// call to Java constructor
|
when {
|
||||||
(this is PsiMethod && isConstructor && containingClass == unwrappedCandidate) ||
|
// call to Java constructor
|
||||||
|
this is PsiMethod && isConstructor && containingClass == unwrappedCandidate -> true
|
||||||
// call to Kotlin constructor
|
// 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 {
|
fun AbstractKtReference<out KtExpression>.renameImplicitConventionalCall(newName: String?): KtExpression {
|
||||||
if (newName == null) return expression
|
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() {
|
class FindUsagesMultiModuleTest : AbstractFindUsagesMultiModuleTest() {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testFindActualInterface() {
|
||||||
|
doTest()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testFindCommonClassFromActual() {
|
fun testFindCommonClassFromActual() {
|
||||||
doTest()
|
doTest()
|
||||||
@@ -37,6 +42,11 @@ class FindUsagesMultiModuleTest : AbstractFindUsagesMultiModuleTest() {
|
|||||||
doTest()
|
doTest()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testFindCommonSuperclass() {
|
||||||
|
doTest()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testFindImplFromHeader() {
|
fun testFindImplFromHeader() {
|
||||||
doTest()
|
doTest()
|
||||||
|
|||||||
Reference in New Issue
Block a user