diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 95e43a356e9..ab0ff5bb23d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.fir.resolve.diagnostics.FirOperatorAmbiguityError import org.jetbrains.kotlin.fir.resolve.diagnostics.FirVariableExpectedError import org.jetbrains.kotlin.fir.resolve.transformers.InvocationKindTransformer import org.jetbrains.kotlin.fir.resolve.transformers.StoreReceiver +import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol @@ -34,7 +35,6 @@ import org.jetbrains.kotlin.fir.symbols.invoke import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.impl.ConeClassTypeImpl import org.jetbrains.kotlin.fir.types.impl.FirErrorTypeRefImpl -import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.compose @@ -168,7 +168,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) : else -> null } block.resultType = if (resultExpression == null) { - FirImplicitUnitTypeRef(block.source) + block.resultType.resolvedTypeFromPrototype(session.builtinTypes.unitType.type) } else { (resultExpression.resultType as? FirResolvedTypeRef) ?: FirErrorTypeRefImpl(null, FirSimpleDiagnostic("No type for block", DiagnosticKind.InferenceError)) } @@ -186,7 +186,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) : override fun transformOperatorCall(operatorCall: FirOperatorCall, data: ResolutionMode): CompositeTransformResult { if (operatorCall.operation in FirOperation.BOOLEANS) { val result = (operatorCall.transformChildren(transformer, ResolutionMode.ContextIndependent) as FirOperatorCall).also { - it.resultType = builtinTypes.booleanType + it.resultType = operatorCall.typeRef.resolvedTypeFromPrototype(builtinTypes.booleanType.type) } dataFlowAnalyzer.exitOperatorCall(result) return result.compose() @@ -274,7 +274,7 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) : binaryLogicExpression: FirBinaryLogicExpression, data: ResolutionMode ): CompositeTransformResult { - val booleanType = builtinTypes.booleanType + val booleanType = binaryLogicExpression.typeRef.resolvedTypeFromPrototype(builtinTypes.booleanType.type) return when (binaryLogicExpression.kind) { LogicOperationKind.AND -> binaryLogicExpression.also(dataFlowAnalyzer::enterBinaryAnd)