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.kdoc.psi.impl.KDocName
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
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.firstIsInstance
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.kotlin.utils.emptyOrSingletonList
|
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 ((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()
|
val referredClass = unwrappedTargets.first()
|
||||||
if (referredClass is JetClass && candidateTarget in referredClass.getCompanionObjects()) {
|
if (referredClass is JetClass && candidateTarget in referredClass.getCompanionObjects()) {
|
||||||
val parentReference = getParent().getReference()
|
if (getParent() is PsiImportStaticStatement) return true
|
||||||
if (parentReference != null) {
|
|
||||||
return parentReference.unwrappedTargets.any {
|
return getParent().getReference()?.unwrappedTargets?.any {
|
||||||
(it is JetProperty || it is JetNamedFunction) && it.getParent()?.getParent() == candidateTarget
|
(it is JetProperty || it is JetNamedFunction) && it.getParent()?.getParent() == candidateTarget
|
||||||
}
|
} ?: false
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import static Foo.*;
|
||||||
|
|
||||||
class JavaUsage {
|
class JavaUsage {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println(Foo.CONST);
|
System.out.println(Foo.CONST);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
Class static member access (3: 28) System.out.println(Foo.CONST);
|
Class static member access (5: 28) System.out.println(Foo.CONST);
|
||||||
Class static member access (4: 9) Foo.s();
|
Class static member access (6: 9) Foo.s();
|
||||||
Unclassified usage (5: 13) Foo.Companion.f();
|
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