Refactor clauseReplaceableBySafeCall (if-then to safe access)
This commit is contained in:
+5
-9
@@ -86,15 +86,11 @@ class IfThenToSafeAccessInspection : AbstractApplicabilityBasedInspection<KtIfEx
|
||||
baseClause == null -> false
|
||||
negatedClause == null && baseClause.isUsedAsExpression(context) -> false
|
||||
negatedClause != null && !negatedClause.isNullExpression() -> false
|
||||
else -> baseClause.evaluatesTo(receiverExpression) || baseClause.hasFirstReceiverOf(receiverExpression) ||
|
||||
receiverExpression is KtThisExpression && getImplicitReceiver()?.let { it.type == receiverExpression.getType(context) } == true ||
|
||||
replaceableCallExpression()
|
||||
}
|
||||
|
||||
private fun IfThenToSelectData.replaceableCallExpression(): Boolean {
|
||||
val callExpression = baseClause as? KtCallExpression ?: return false
|
||||
val arguments = callExpression.valueArguments.map { it.getArgumentExpression() }
|
||||
return arguments.any { it?.evaluatesTo(receiverExpression) == true } && arguments.all { it is KtNameReferenceExpression }
|
||||
baseClause.evaluatesTo(receiverExpression) -> true
|
||||
baseClause.hasFirstReceiverOf(receiverExpression) -> true
|
||||
baseClause.anyArgumentEvaluatesTo(receiverExpression) -> true
|
||||
receiverExpression is KtThisExpression -> getImplicitReceiver()?.let { it.type == receiverExpression.getType(context) } == true
|
||||
else -> false
|
||||
}
|
||||
|
||||
private fun KtSafeQualifiedExpression.renameLetParameter(editor: Editor) {
|
||||
|
||||
@@ -106,6 +106,12 @@ fun KtThrowExpression.throwsNullPointerExceptionWithNoArguments(): Boolean {
|
||||
fun KtExpression.evaluatesTo(other: KtExpression): Boolean =
|
||||
this.unwrapBlockOrParenthesis().text == other.text
|
||||
|
||||
fun KtExpression.anyArgumentEvaluatesTo(argument: KtExpression): Boolean {
|
||||
val callExpression = this as? KtCallExpression ?: return false
|
||||
val arguments = callExpression.valueArguments.map { it.getArgumentExpression() }
|
||||
return arguments.any { it?.evaluatesTo(argument) == true } && arguments.all { it is KtNameReferenceExpression }
|
||||
}
|
||||
|
||||
fun KtExpression.convertToIfNotNullExpression(
|
||||
conditionLhs: KtExpression,
|
||||
thenClause: KtExpression,
|
||||
|
||||
Reference in New Issue
Block a user