diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSingleLineLetIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSingleLineLetIntention.kt index 62e6621aee0..ff24c79fb60 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSingleLineLetIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSingleLineLetIntention.kt @@ -26,8 +26,8 @@ class ReplaceSingleLineLetInspection : IntentionBasedInspection( - KtCallExpression::class.java, - "Remove redundant '.let' call" + KtCallExpression::class.java, + "Remove redundant '.let' call" ) { override fun applyTo(element: KtCallExpression, editor: Editor?) { element.lambdaArguments.firstOrNull()?.getLambdaExpression()?.bodyExpression?.children?.singleOrNull()?.let { @@ -98,8 +98,7 @@ class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention if (!left.isApplicable(parameterName)) return false else -> return false } - } - else { + } else { if (!left.isApplicable(parameterName)) return false } @@ -122,17 +121,15 @@ class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention - receiver is KtNameReferenceExpression && - receiver.getReferencedName() == parameterName && - !nameUsed(parameterName, except = receiver) - } + !hasLambdaExpression() && getLeftMostReceiverExpression().let { receiver -> + receiver is KtNameReferenceExpression && + receiver.getReferencedName() == parameterName && + !nameUsed(parameterName, except = receiver) + } - private fun KtDotQualifiedExpression.hasLambdaExpression() - = selectorExpression?.anyDescendantOfType() ?: false + private fun KtDotQualifiedExpression.hasLambdaExpression() = selectorExpression?.anyDescendantOfType() ?: false - private fun KtCallExpression.isLetMethodCall() = - calleeExpression?.text == "let" && isMethodCall("kotlin.let") + private fun KtCallExpression.isLetMethodCall() = calleeExpression?.text == "let" && isMethodCall("kotlin.let") private fun KtLambdaExpression.getParameterName(): String? { val parameters = valueParameters @@ -141,5 +138,5 @@ class ReplaceSingleLineLetIntention : SelfTargetingOffsetIndependentIntention { it != except && it.getReferencedName() == name } + anyDescendantOfType { it != except && it.getReferencedName() == name } } \ No newline at end of file