From 9accd8c9ad838344d70916ffc8a34fdff853ce74 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 13 Apr 2021 13:48:21 +0300 Subject: [PATCH] FIR: use unsafe .coneType in type mismatch checkers when possible --- .../checkers/declaration/FirInitializerTypeMismatchChecker.kt | 4 +++- .../expression/FirFunctionReturnTypeMismatchChecker.kt | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInitializerTypeMismatchChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInitializerTypeMismatchChecker.kt index c93603159cf..ccc3e9af40d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInitializerTypeMismatchChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirInitializerTypeMismatchChecker.kt @@ -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() ?: return + if (declaration.returnTypeRef.source?.kind != FirRealSourceElementKind) return + val propertyType = declaration.returnTypeRef.coneType val expressionType = initializer.typeRef.coneTypeSafe() ?: return val typeContext = context.session.typeContext diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt index 71a705ec373..e1c945f66a9 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirFunctionReturnTypeMismatchChecker.kt @@ -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() ?: return + val functionReturnType = targetElement.returnTypeRef.coneType val typeContext = context.session.typeContext val returnExpressionType = resultExpression.typeRef.coneTypeSafe() ?: return