KT-7484 Companion object is marked unused if it's only usages are statically imported from Java
#KT-7484 fixed
This commit is contained in:
@@ -24,8 +24,6 @@ import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
import org.jetbrains.kotlin.utils.emptyOrSingletonList
|
||||
@@ -90,15 +88,14 @@ public fun PsiReference.matchesTarget(candidateTarget: PsiElement): Boolean {
|
||||
}
|
||||
if ((parent as? PsiNewExpression)?.resolveConstructor()?.unwrapped == unwrappedCandidate) return true
|
||||
}
|
||||
if (this is PsiReferenceExpression && candidateTarget is JetObjectDeclaration && unwrappedTargets.size() == 1) {
|
||||
if (this is PsiJavaCodeReferenceElement && candidateTarget is JetObjectDeclaration && unwrappedTargets.size() == 1) {
|
||||
val referredClass = unwrappedTargets.first()
|
||||
if (referredClass is JetClass && candidateTarget in referredClass.getCompanionObjects()) {
|
||||
val parentReference = getParent().getReference()
|
||||
if (parentReference != null) {
|
||||
return parentReference.unwrappedTargets.any {
|
||||
(it is JetProperty || it is JetNamedFunction) && it.getParent()?.getParent() == candidateTarget
|
||||
}
|
||||
}
|
||||
if (getParent() is PsiImportStaticStatement) return true
|
||||
|
||||
return getParent().getReference()?.unwrappedTargets?.any {
|
||||
(it is JetProperty || it is JetNamedFunction) && it.getParent()?.getParent() == candidateTarget
|
||||
} ?: false
|
||||
}
|
||||
}
|
||||
return false
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import static Foo.*;
|
||||
|
||||
class JavaUsage {
|
||||
public static void main(String[] args) {
|
||||
System.out.println(Foo.CONST);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
Class static member access (3: 28) System.out.println(Foo.CONST);
|
||||
Class static member access (4: 9) Foo.s();
|
||||
Unclassified usage (5: 13) Foo.Companion.f();
|
||||
Class static member access (5: 28) System.out.println(Foo.CONST);
|
||||
Class static member access (6: 9) Foo.s();
|
||||
Unclassified usage (1: 15) import static Foo.*;
|
||||
Unclassified usage (7: 13) Foo.Companion.f();
|
||||
@@ -0,0 +1,8 @@
|
||||
import static companionObjectWithStatics.Foo.*
|
||||
|
||||
class JavaUsage {
|
||||
public static void main(String[] args) {
|
||||
System.out.println(CONST + CONST);
|
||||
foo()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package companionObjectWithStatics
|
||||
|
||||
class Foo {
|
||||
companion object {
|
||||
platformStatic fun foo() {
|
||||
}
|
||||
|
||||
val CONST = 111
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user