Don't suggest cast when !! is possible #KT-18033 Fixed

This commit is contained in:
Dmitry Neverov
2017-05-24 07:42:06 +03:00
committed by Mikhail Glukhikh
parent af3a123c15
commit 0fd42bc747
3 changed files with 23 additions and 0 deletions
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.asFlexibleType
import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
import org.jetbrains.kotlin.types.typeUtil.makeNullable
class CastExpressionFix(element: KtExpression, type: KotlinType) : KotlinQuickFixAction<KtExpression>(element) {
private val typeSourceCode = IdeDescriptorRenderers.SOURCE_CODE.renderType(type)
@@ -39,6 +40,7 @@ class CastExpressionFix(element: KtExpression, type: KotlinType) : KotlinQuickFi
private val upOrDownCast: Boolean = run {
val expressionType = element.analyze(BodyResolveMode.PARTIAL).getType(element)
expressionType != null && (type.isSubtypeOf(expressionType) || expressionType.isSubtypeOf(type))
&& expressionType != type.makeNullable() //covered by AddExclExclCallFix
}
override fun getFamilyName() = "Cast expression"