From 593b326c800c6d99dca65a20fd5d70f97b78945c Mon Sep 17 00:00:00 2001 From: "vladislav.grechko" Date: Mon, 28 Aug 2023 16:14:18 +0200 Subject: [PATCH] Don't do full type parameters erasure in `resultIsActuallyAny` The only case when erasure required is when type is a type parameter. --- .../kotlin/backend/jvm/codegen/ExpressionCodegen.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index 9dd47d74d92..53dbbbb846a 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -5,7 +5,9 @@ package org.jetbrains.kotlin.backend.jvm.codegen -import org.jetbrains.kotlin.backend.common.ir.* +import org.jetbrains.kotlin.backend.common.ir.getDefaultAdditionalStatementsFromInlinedBlock +import org.jetbrains.kotlin.backend.common.ir.getNonDefaultAdditionalStatementsFromInlinedBlock +import org.jetbrains.kotlin.backend.common.ir.getOriginalStatementsFromInlinedBlock import org.jetbrains.kotlin.backend.common.lower.BOUND_RECEIVER_PARAMETER import org.jetbrains.kotlin.backend.common.lower.LoweredStatementOrigins import org.jetbrains.kotlin.backend.jvm.* @@ -808,7 +810,7 @@ class ExpressionCodegen( index < 0 -> extensionReceiverParameter!!.type else -> valueParameters[index].type } - if (!type.eraseTypeParameters().isKotlinResult()) return null + if (!type.eraseIfTypeParameter().isKotlinResult()) return null // If there's a bridge, it will unbox `Result` along with transforming all other arguments. // Otherwise, we need to treat `Result` as boxed if it overrides a non-`Result` or boxed `Result` type. // TODO: if results of `needsResultArgumentUnboxing` for `overriddenSymbols` are inconsistent, the boxedness