diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionReturnChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionReturnChecker.kt index 09b7c3ce68b..374471da3d3 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionReturnChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionReturnChecker.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor import org.jetbrains.kotlin.fir.resolve.dfa.cfg.BlockExitNode import org.jetbrains.kotlin.fir.resolve.dfa.controlFlowGraph +import org.jetbrains.kotlin.fir.resolve.fullyExpandedType +import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.isNothing import org.jetbrains.kotlin.fir.types.isUnit @@ -32,7 +34,8 @@ object FirFunctionReturnChecker : FirFunctionChecker() { if (declaration is FirPropertyAccessor && declaration.isSetter) return if (declaration is FirConstructor) return if (declaration is FirAnonymousFunction && declaration.isLambda) return - if (declaration.returnTypeRef.isUnit || declaration.returnTypeRef.isNothing) return + val returnType = declaration.returnTypeRef.coneType.fullyExpandedType(context.session) + if (returnType.isUnit || returnType.isNothing) return val graph = declaration.controlFlowGraphReference?.controlFlowGraph ?: return val blockExitNode = graph.exitNode.previousNodes.lastOrNull { it is BlockExitNode } ?: return diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.fir.kt b/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.fir.kt deleted file mode 100644 index d6bbfcb24fc..00000000000 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.fir.kt +++ /dev/null @@ -1,8 +0,0 @@ -// ISSUE: KT-60299 - -private typealias T = Unit - -internal fun x(): T { - val something = "OK" - something.hashCode() -} diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.kt b/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.kt index b760e11ba43..75bcde40891 100644 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.kt +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/definiteReturn/returnAliasedUnitNotRequired.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // ISSUE: KT-60299 private typealias T = Unit