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> { if (bodyExpression.anyDescendantOfType<KtExpression> {
when (it) { when (it) {
is KtBinaryExpression -> is KtBinaryExpression ->
it.left?.text == KtTokens.FIELD_KEYWORD.value && it.operationToken in assignmentOperators it.left.isBackingFieldReference(property) && it.operationToken in assignmentOperators
is KtUnaryExpression -> is KtUnaryExpression ->
it.baseExpression?.text == KtTokens.FIELD_KEYWORD.value && it.operationToken in incrementAndDecrementOperators it.baseExpression.isBackingFieldReference(property) && it.operationToken in incrementAndDecrementOperators
is KtCallExpression -> is KtCallExpression ->
it.valueArguments.any { arg -> it.valueArguments.any { arg ->
arg.text == parameter?.text arg.text == parameter?.text && run {
&& arg.getArgumentExpression().getResolvedCall(accessorContext)?.resultingDescriptor == parameterDescriptor val argumentResultingDescriptor =
arg.getArgumentExpression().getResolvedCall(accessorContext)?.resultingDescriptor
argumentResultingDescriptor == parameterDescriptor
}
} }
else -> false 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) private val assignmentOperators = listOf(KtTokens.EQ, KtTokens.PLUSEQ, KtTokens.MINUSEQ, KtTokens.MULTEQ, KtTokens.DIVEQ, KtTokens.PERCEQ)