From bc71a7605a65ed472b25092ae4f2db69519e9313 Mon Sep 17 00:00:00 2001 From: Andrey Uskov Date: Mon, 24 Dec 2018 19:42:28 +0300 Subject: [PATCH] Fix KNPE in introduce when expression (EA-118718) --- .../branchedTransformations/branchedTransformationUtils.kt | 4 ++-- .../branchedTransformations/intentions/IfToWhenIntention.kt | 2 +- .../refactoring/introduce/extractionEngine/extractorUtil.kt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt index 6f6683c43d8..e3379c63793 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/branchedTransformationUtils.kt @@ -98,8 +98,8 @@ private fun KtExpression?.getWhenConditionSubjectCandidate(): KtExpression? { } } -fun KtWhenExpression.introduceSubject(): KtWhenExpression { - val subject = getSubjectToIntroduce()!! +fun KtWhenExpression.introduceSubject(): KtWhenExpression? { + val subject = getSubjectToIntroduce() ?: return null val commentSaver = CommentSaver(this, saveLineBreaks = true) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfToWhenIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfToWhenIntention.kt index 47963522368..e478d150208 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfToWhenIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/intentions/IfToWhenIntention.kt @@ -192,7 +192,7 @@ class IfToWhenIntention : SelfTargetingRangeIntention(KtIfExpres if (whenExpression.getSubjectToIntroduce() != null) { - whenExpression = whenExpression.introduceSubject() + whenExpression = whenExpression.introduceSubject() ?: return } val result = ifExpression.replaced(whenExpression) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt index 507095e36bf..871628a5bad 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt @@ -334,7 +334,7 @@ private fun makeCall( val inlinableCall = controlFlow.outputValues.size <= 1 val unboxingExpressions = if (inlinableCall) { - controlFlow.outputValueBoxer.getUnboxingExpressions(callText!!) + controlFlow.outputValueBoxer.getUnboxingExpressions(callText ?: return) } else { val varNameValidator = NewDeclarationNameValidator(block, anchorInBlock, NewDeclarationNameValidator.Target.VARIABLES)