FIR: use unsafe .coneType in type mismatch checkers when possible

This commit is contained in:
Mikhail Glukhikh
2021-04-13 13:48:21 +03:00
parent b58e5b182c
commit 9accd8c9ad
2 changed files with 5 additions and 2 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.analysis.checkers.declaration
import org.jetbrains.kotlin.fir.FirRealSourceElementKind
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
import org.jetbrains.kotlin.fir.analysis.checkers.isComponentCall
import org.jetbrains.kotlin.fir.analysis.checkers.isDestructuringDeclaration
@@ -22,7 +23,8 @@ object FirInitializerTypeMismatchChecker : FirPropertyChecker() {
val initializer = declaration.initializer ?: return
if (declaration.isDestructuringDeclaration) return
if (initializer.isComponentCall) return
val propertyType = declaration.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: return
if (declaration.returnTypeRef.source?.kind != FirRealSourceElementKind) return
val propertyType = declaration.returnTypeRef.coneType
val expressionType = initializer.typeRef.coneTypeSafe<ConeKotlinType>() ?: return
val typeContext = context.session.typeContext
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.expressions.FirWhenExpression
import org.jetbrains.kotlin.fir.expressions.isExhaustive
import org.jetbrains.kotlin.fir.typeContext
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.coneType
import org.jetbrains.kotlin.fir.types.coneTypeSafe
object FirFunctionReturnTypeMismatchChecker : FirReturnExpressionChecker() {
@@ -25,7 +26,7 @@ object FirFunctionReturnTypeMismatchChecker : FirReturnExpressionChecker() {
val resultExpression = expression.result
if (resultExpression is FirWhenExpression && !resultExpression.isExhaustive) return
val functionReturnType = targetElement.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: return
val functionReturnType = targetElement.returnTypeRef.coneType
val typeContext = context.session.typeContext
val returnExpressionType = resultExpression.typeRef.coneTypeSafe<ConeKotlinType>() ?: return