From c172810d1d416382dffdb934fbcfdfe5cba98800 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 13 Apr 2018 13:22:28 +0300 Subject: [PATCH] Simplify boolean with constants optimization: use partial analysis --- .../idea/intentions/SimplifyBooleanWithConstantsIntention.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt index b2a074d075c..a31eb8d093f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils import org.jetbrains.kotlin.resolve.calls.callUtil.getType import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode.* import org.jetbrains.kotlin.types.isFlexible class SimplifyBooleanWithConstantsInspection : IntentionBasedInspection(SimplifyBooleanWithConstantsIntention::class) @@ -154,12 +155,12 @@ class SimplifyBooleanWithConstantsIntention : private fun simplifyExpression(expression: KtExpression) = expression.replaced(toSimplifiedExpression(expression)) private fun KtExpression?.hasBooleanType(): Boolean { - val type = this?.getType(this.analyze()) ?: return false + val type = this?.getType(this.analyze(PARTIAL)) ?: return false return KotlinBuiltIns.isBoolean(type) && !type.isFlexible() } private fun KtExpression.canBeReducedToBooleanConstant(constant: Boolean? = null): Boolean { - return CompileTimeConstantUtils.canBeReducedToBooleanConstant(this, this.analyze(), constant) + return CompileTimeConstantUtils.canBeReducedToBooleanConstant(this, this.analyze(PARTIAL), constant) } private fun KtExpression.canBeReducedToTrue() = canBeReducedToBooleanConstant(true)