Handle constructor usage for actual class as usage of expect class

#KT-25498 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-08-08 15:31:43 +03:00
parent f4d048334f
commit 0fb8dd2f75
8 changed files with 34 additions and 3 deletions
@@ -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
@@ -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()