if then to elvis: propose transformation to 'let' #KT-26653 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
539c55c5b2
commit
1c8e75eb34
+9
-7
@@ -93,12 +93,14 @@ class IfThenToSafeAccessInspection : AbstractApplicabilityBasedInspection<KtIfEx
|
||||
else -> false
|
||||
}
|
||||
|
||||
private fun KtSafeQualifiedExpression.renameLetParameter(editor: Editor) {
|
||||
val callExpression = selectorExpression as? KtCallExpression ?: return
|
||||
if (callExpression.calleeExpression?.text != "let") return
|
||||
val parameter = callExpression.lambdaArguments.singleOrNull()?.getLambdaExpression()?.valueParameters?.singleOrNull() ?: return
|
||||
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(editor.document)
|
||||
editor.caretModel.moveToOffset(parameter.startOffset)
|
||||
KotlinVariableInplaceRenameHandler().doRename(parameter, editor, null)
|
||||
companion object {
|
||||
internal fun KtSafeQualifiedExpression.renameLetParameter(editor: Editor) {
|
||||
val callExpression = selectorExpression as? KtCallExpression ?: return
|
||||
if (callExpression.calleeExpression?.text != "let") return
|
||||
val parameter = callExpression.lambdaArguments.singleOrNull()?.getLambdaExpression()?.valueParameters?.singleOrNull() ?: return
|
||||
PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(editor.document)
|
||||
editor.caretModel.moveToOffset(parameter.startOffset)
|
||||
KotlinVariableInplaceRenameHandler().doRename(parameter, editor, null)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.core.replaced
|
||||
import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
|
||||
import org.jetbrains.kotlin.idea.inspections.branchedTransformations.IfThenToSafeAccessInspection
|
||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingOffsetIndependentIntention
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.*
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
@@ -54,6 +55,8 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
|
||||
false
|
||||
baseClause.evaluatesTo(receiverExpression) ->
|
||||
true
|
||||
baseClause.anyArgumentEvaluatesTo(receiverExpression) ->
|
||||
true
|
||||
hasImplicitReceiverReplaceableBySafeCall() || baseClause.hasFirstReceiverOf(receiverExpression) ->
|
||||
!baseClause.hasNullableType(context)
|
||||
else ->
|
||||
@@ -95,6 +98,9 @@ class IfThenToElvisIntention : SelfTargetingOffsetIndependentIntention<KtIfExpre
|
||||
|
||||
if (editor != null) {
|
||||
elvis.inlineLeftSideIfApplicableWithPrompt(editor)
|
||||
with(IfThenToSafeAccessInspection) {
|
||||
(elvis.left as? KtSafeQualifiedExpression)?.renameLetParameter(editor)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user