New J2K: check call name before resolving in post-processing
This commit is contained in:
+7
-11
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.postProcessing.processings
|
package org.jetbrains.kotlin.nj2k.postProcessing.processings
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiMethod
|
|
||||||
import com.intellij.psi.search.searches.ReferencesSearch
|
import com.intellij.psi.search.searches.ReferencesSearch
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||||
@@ -18,14 +17,15 @@ import org.jetbrains.kotlin.idea.core.implicitModality
|
|||||||
import org.jetbrains.kotlin.idea.core.implicitVisibility
|
import org.jetbrains.kotlin.idea.core.implicitVisibility
|
||||||
import org.jetbrains.kotlin.idea.core.replaced
|
import org.jetbrains.kotlin.idea.core.replaced
|
||||||
import org.jetbrains.kotlin.idea.core.setVisibility
|
import org.jetbrains.kotlin.idea.core.setVisibility
|
||||||
|
import org.jetbrains.kotlin.idea.debugger.sequence.psi.callName
|
||||||
import org.jetbrains.kotlin.idea.inspections.RedundantExplicitTypeInspection
|
import org.jetbrains.kotlin.idea.inspections.RedundantExplicitTypeInspection
|
||||||
import org.jetbrains.kotlin.idea.inspections.RedundantSamConstructorInspection
|
import org.jetbrains.kotlin.idea.inspections.RedundantSamConstructorInspection
|
||||||
import org.jetbrains.kotlin.idea.inspections.UseExpressionBodyInspection
|
import org.jetbrains.kotlin.idea.inspections.UseExpressionBodyInspection
|
||||||
|
import org.jetbrains.kotlin.idea.inspections.collections.isCalling
|
||||||
import org.jetbrains.kotlin.idea.intentions.ConvertToStringTemplateIntention
|
import org.jetbrains.kotlin.idea.intentions.ConvertToStringTemplateIntention
|
||||||
import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeArgumentsIntention
|
import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeArgumentsIntention
|
||||||
import org.jetbrains.kotlin.idea.intentions.UsePropertyAccessSyntaxIntention
|
import org.jetbrains.kotlin.idea.intentions.UsePropertyAccessSyntaxIntention
|
||||||
import org.jetbrains.kotlin.idea.intentions.addUseSiteTarget
|
import org.jetbrains.kotlin.idea.intentions.addUseSiteTarget
|
||||||
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
|
||||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.idea.references.readWriteAccess
|
import org.jetbrains.kotlin.idea.references.readWriteAccess
|
||||||
@@ -36,7 +36,6 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.nj2k.postProcessing.ApplicabilityBasedInspectionLikeProcessing
|
import org.jetbrains.kotlin.nj2k.postProcessing.ApplicabilityBasedInspectionLikeProcessing
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.InspectionLikeProcessing
|
import org.jetbrains.kotlin.nj2k.postProcessing.InspectionLikeProcessing
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.generalInspectionBasedProcessing
|
import org.jetbrains.kotlin.nj2k.postProcessing.generalInspectionBasedProcessing
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.resolve
|
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -106,8 +105,8 @@ class RemoveJavaStreamsCollectCallTypeArgumentsProcessing :
|
|||||||
ApplicabilityBasedInspectionLikeProcessing<KtCallExpression>(KtCallExpression::class) {
|
ApplicabilityBasedInspectionLikeProcessing<KtCallExpression>(KtCallExpression::class) {
|
||||||
override fun isApplicableTo(element: KtCallExpression, settings: ConverterSettings?): Boolean {
|
override fun isApplicableTo(element: KtCallExpression, settings: ConverterSettings?): Boolean {
|
||||||
if (element.typeArgumentList == null) return false
|
if (element.typeArgumentList == null) return false
|
||||||
val resolved = element.calleeExpression?.mainReference?.resolve() as? PsiMethod ?: return false
|
if (element.callName() != COLLECT_FQ_NAME.shortName().identifier) return false
|
||||||
return resolved.getKotlinFqName()?.asString() == COLLECT_FQ_NAME
|
return element.isCalling(COLLECT_FQ_NAME)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun apply(element: KtCallExpression) {
|
override fun apply(element: KtCallExpression) {
|
||||||
@@ -115,7 +114,7 @@ class RemoveJavaStreamsCollectCallTypeArgumentsProcessing :
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val COLLECT_FQ_NAME = "java.util.stream.Stream.collect"
|
private val COLLECT_FQ_NAME = FqName("java.util.stream.Stream.collect")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,13 +286,10 @@ class JavaObjectEqualsToEqOperatorProcessing : ApplicabilityBasedInspectionLikeP
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun isApplicableTo(element: KtCallExpression, settings: ConverterSettings?): Boolean {
|
override fun isApplicableTo(element: KtCallExpression, settings: ConverterSettings?): Boolean {
|
||||||
|
if (element.callName() != CALL_FQ_NAME.shortName().identifier) return false
|
||||||
if (element.valueArguments.size != 2) return false
|
if (element.valueArguments.size != 2) return false
|
||||||
if (element.valueArguments.any { it.getArgumentExpression() == null }) return false
|
if (element.valueArguments.any { it.getArgumentExpression() == null }) return false
|
||||||
val target = element.calleeExpression
|
return element.isCalling(CALL_FQ_NAME)
|
||||||
.safeAs<KtReferenceExpression>()
|
|
||||||
?.resolve()
|
|
||||||
?: return false
|
|
||||||
return target.getKotlinFqName() == CALL_FQ_NAME
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun apply(element: KtCallExpression) {
|
override fun apply(element: KtCallExpression) {
|
||||||
|
|||||||
Reference in New Issue
Block a user