SetterBackingFieldAssignment: minor refactoring

This commit is contained in:
Mikhail Glukhikh
2018-10-23 12:35:35 +03:00
parent 29cc727c5a
commit fcc6395b14
@@ -34,13 +34,17 @@ class SetterBackingFieldAssignmentInspection : AbstractKotlinInspection(), Clean
if (bodyExpression.anyDescendantOfType<KtExpression> {
when (it) {
is KtBinaryExpression ->
it.left?.text == KtTokens.FIELD_KEYWORD.value && it.operationToken in assignmentOperators
it.left.isBackingFieldReference(property) && it.operationToken in assignmentOperators
is KtUnaryExpression ->
it.baseExpression?.text == KtTokens.FIELD_KEYWORD.value && it.operationToken in incrementAndDecrementOperators
it.baseExpression.isBackingFieldReference(property) && it.operationToken in incrementAndDecrementOperators
is KtCallExpression ->
it.valueArguments.any { arg ->
arg.text == parameter?.text
&& arg.getArgumentExpression().getResolvedCall(accessorContext)?.resultingDescriptor == parameterDescriptor
arg.text == parameter?.text && run {
val argumentResultingDescriptor =
arg.getArgumentExpression().getResolvedCall(accessorContext)?.resultingDescriptor
argumentResultingDescriptor == parameterDescriptor
}
}
else -> false
}
@@ -54,6 +58,10 @@ class SetterBackingFieldAssignmentInspection : AbstractKotlinInspection(), Clean
)
})
}
private fun KtExpression?.isBackingFieldReference(property: KtProperty) = with(SuspiciousVarPropertyInspection) {
this@isBackingFieldReference != null && isBackingFieldReference(property)
}
}
private val assignmentOperators = listOf(KtTokens.EQ, KtTokens.PLUSEQ, KtTokens.MINUSEQ, KtTokens.MULTEQ, KtTokens.DIVEQ, KtTokens.PERCEQ)