mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] AddJvmStaticIntention: code reformatting and minor fixes
#KTIJ-32004 GitOrigin-RevId: 780b7afeeb53525da32773877f655742fe34a92b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0542813d03
commit
1bb2d6c5fc
+22
-24
@@ -12,7 +12,6 @@ import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiReferenceExpression
|
||||
import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.idea.base.psi.KotlinPsiHeuristics
|
||||
@@ -32,11 +31,11 @@ import org.jetbrains.kotlin.psi.KtProperty
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
|
||||
class AddJvmStaticIntention : SelfTargetingRangeIntention<KtNamedDeclaration>(
|
||||
KtNamedDeclaration::class.java,
|
||||
KotlinBundle.lazyMessage("add.jvmstatic.annotation")
|
||||
KtNamedDeclaration::class.java,
|
||||
KotlinBundle.lazyMessage("add.jvmstatic.annotation")
|
||||
), LowPriorityAction {
|
||||
|
||||
override fun startInWriteAction() = false
|
||||
override fun startInWriteAction(): Boolean = false
|
||||
|
||||
override fun applicabilityRange(element: KtNamedDeclaration): TextRange? {
|
||||
if (element !is KtNamedFunction && element !is KtProperty) return null
|
||||
@@ -70,27 +69,26 @@ class AddJvmStaticIntention : SelfTargetingRangeIntention<KtNamedDeclaration>(
|
||||
|
||||
val expressionsToReplaceWithQualifier =
|
||||
project.runSynchronouslyWithProgress(KotlinBundle.message("looking.for.usages.in.java.files"), true) {
|
||||
runReadAction {
|
||||
val searchScope = element.codeUsageScope().restrictByFileType(JavaFileType.INSTANCE)
|
||||
ReferencesSearch
|
||||
.search(element, searchScope)
|
||||
.asIterable()
|
||||
.mapNotNull {
|
||||
val refExpr = it.element as? PsiReferenceExpression ?: return@mapNotNull null
|
||||
if ((refExpr.resolve() as? KtLightElement<*, *>)?.kotlinOrigin != element) return@mapNotNull null
|
||||
val qualifierExpr = refExpr.qualifierExpression as? PsiReferenceExpression ?: return@mapNotNull null
|
||||
if (qualifierExpr.qualifierExpression == null) return@mapNotNull null
|
||||
val instanceField = qualifierExpr.resolve() as? KtLightField ?: return@mapNotNull null
|
||||
if (instanceField.name != instanceFieldName) return@mapNotNull null
|
||||
if ((instanceField.containingClass as? KtLightClass)?.kotlinOrigin != instanceFieldContainingClass) return@mapNotNull null
|
||||
qualifierExpr
|
||||
}
|
||||
}
|
||||
runReadAction {
|
||||
val searchScope = element.codeUsageScope().restrictByFileType(JavaFileType.INSTANCE)
|
||||
ReferencesSearch
|
||||
.search(element, searchScope)
|
||||
.mapNotNull {
|
||||
val refExpr = it.element as? PsiReferenceExpression ?: return@mapNotNull null
|
||||
if ((refExpr.resolve() as? KtLightElement<*, *>)?.kotlinOrigin != element) return@mapNotNull null
|
||||
val qualifierExpr = refExpr.qualifierExpression as? PsiReferenceExpression ?: return@mapNotNull null
|
||||
if (qualifierExpr.qualifierExpression == null) return@mapNotNull null
|
||||
val instanceField = qualifierExpr.resolve() as? KtLightField ?: return@mapNotNull null
|
||||
if (instanceField.name != instanceFieldName) return@mapNotNull null
|
||||
if (instanceField.containingClass.kotlinOrigin != instanceFieldContainingClass) return@mapNotNull null
|
||||
qualifierExpr
|
||||
}
|
||||
}
|
||||
} ?: return
|
||||
|
||||
runWriteAction {
|
||||
element.addAnnotation(JvmStandardClassIds.Annotations.JvmStatic)
|
||||
expressionsToReplaceWithQualifier.forEach { it.replace(it.qualifierExpression!!) }
|
||||
}
|
||||
runWriteAction {
|
||||
element.addAnnotation(JvmStandardClassIds.Annotations.JvmStatic)
|
||||
expressionsToReplaceWithQualifier.forEach { it.replace(it.qualifierExpression!!) }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user