From e2f245096c9d876f0c927ee0153b52ccd1d38ea5 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 21 Dec 2023 23:10:58 +0100 Subject: [PATCH] [FIR] ReturnTypeCalculator: replace `!!` with useful exception ^KT-64196 --- .../fir/resolve/transformers/ReturnTypeCalculator.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/transformers/ReturnTypeCalculator.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/transformers/ReturnTypeCalculator.kt index 2da8c29a809..0400bbcfd4a 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/transformers/ReturnTypeCalculator.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/transformers/ReturnTypeCalculator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -9,6 +9,8 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration import org.jetbrains.kotlin.fir.scopes.CallableCopyTypeCalculator import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef +import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry +import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment abstract class ReturnTypeCalculator { abstract val callableCopyTypeCalculator: CallableCopyTypeCalculator @@ -16,7 +18,10 @@ abstract class ReturnTypeCalculator { abstract fun tryCalculateReturnTypeOrNull(declaration: FirCallableDeclaration): FirResolvedTypeRef? fun tryCalculateReturnType(declaration: FirCallableDeclaration): FirResolvedTypeRef { - return tryCalculateReturnTypeOrNull(declaration)!! + return tryCalculateReturnTypeOrNull(declaration) + ?: errorWithAttachment("Return type cannot be calculated for ${declaration::class.simpleName}") { + withFirEntry("declaration", declaration) + } } fun tryCalculateReturnType(symbol: FirCallableSymbol<*>): FirResolvedTypeRef {