Code cleanup: ReplaceAddWithPlusAssignIntention
This commit is contained in:
committed by
Mikhail Glukhikh
parent
45c9be2945
commit
fd95769780
@@ -29,15 +29,17 @@ import org.jetbrains.kotlin.resolve.calls.resolvedCallUtil.getExplicitReceiverVa
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isSubclassOf
|
import org.jetbrains.kotlin.resolve.descriptorUtil.isSubclassOf
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
|
|
||||||
class ReplaceAddWithPlusAssignIntention : SelfTargetingOffsetIndependentIntention<KtDotQualifiedExpression>(KtDotQualifiedExpression::class.java, "Replace with '+='") {
|
class ReplaceAddWithPlusAssignIntention : SelfTargetingOffsetIndependentIntention<KtDotQualifiedExpression>(
|
||||||
|
KtDotQualifiedExpression::class.java,
|
||||||
|
"Replace with '+='"
|
||||||
|
) {
|
||||||
|
private val compatibleNames = setOf("add", "addAll")
|
||||||
|
|
||||||
override fun isApplicableTo(element: KtDotQualifiedExpression): Boolean {
|
override fun isApplicableTo(element: KtDotQualifiedExpression): Boolean {
|
||||||
if (element.callExpression?.valueArguments?.size != 1) return false
|
if (element.callExpression?.valueArguments?.size != 1) return false
|
||||||
|
|
||||||
when (element.calleeName) {
|
if (element.calleeName !in compatibleNames) return false
|
||||||
"add" -> text = "Replace 'add()' with '+='"
|
text = "Replace '${element.calleeName}()' with '+='"
|
||||||
"addAll" -> text = "Replace 'addAll()' with '+='"
|
|
||||||
else -> return false
|
|
||||||
}
|
|
||||||
|
|
||||||
val context = element.analyze(BodyResolveMode.PARTIAL)
|
val context = element.analyze(BodyResolveMode.PARTIAL)
|
||||||
BindingContextUtils.extractVariableDescriptorFromReference(context, element.receiverExpression)?.let {
|
BindingContextUtils.extractVariableDescriptorFromReference(context, element.receiverExpression)?.let {
|
||||||
|
|||||||
Reference in New Issue
Block a user