Simplify boolean with constants optimization: use partial analysis
This commit is contained in:
+3
-2
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
|||||||
import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils
|
import org.jetbrains.kotlin.resolve.CompileTimeConstantUtils
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
|
||||||
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode.*
|
||||||
import org.jetbrains.kotlin.types.isFlexible
|
import org.jetbrains.kotlin.types.isFlexible
|
||||||
|
|
||||||
class SimplifyBooleanWithConstantsInspection : IntentionBasedInspection<KtBinaryExpression>(SimplifyBooleanWithConstantsIntention::class)
|
class SimplifyBooleanWithConstantsInspection : IntentionBasedInspection<KtBinaryExpression>(SimplifyBooleanWithConstantsIntention::class)
|
||||||
@@ -154,12 +155,12 @@ class SimplifyBooleanWithConstantsIntention :
|
|||||||
private fun simplifyExpression(expression: KtExpression) = expression.replaced(toSimplifiedExpression(expression))
|
private fun simplifyExpression(expression: KtExpression) = expression.replaced(toSimplifiedExpression(expression))
|
||||||
|
|
||||||
private fun KtExpression?.hasBooleanType(): Boolean {
|
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()
|
return KotlinBuiltIns.isBoolean(type) && !type.isFlexible()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtExpression.canBeReducedToBooleanConstant(constant: Boolean? = null): Boolean {
|
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)
|
private fun KtExpression.canBeReducedToTrue() = canBeReducedToBooleanConstant(true)
|
||||||
|
|||||||
Reference in New Issue
Block a user