diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt index b7508c946db..40612a789a1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt @@ -54,8 +54,15 @@ class FirSamResolver( private val samConstructorsCache = session.samConstructorStorage.samConstructors private val samConversionTransformers = session.extensionService.samConversionTransformers - fun isSamType(type: ConeKotlinType): Boolean = - getFunctionTypeForPossibleSamType(type) != null + fun isSamType(type: ConeKotlinType): Boolean = when (type) { + is ConeClassLikeType -> { + val symbol = type.fullyExpandedType(session).lookupTag.toSymbol(session) + symbol is FirRegularClassSymbol && resolveFunctionTypeIfSamInterface(symbol.fir) != null + } + + is ConeFlexibleType -> isSamType(type.lowerBound) && isSamType(type.upperBound) + else -> false + } fun getFunctionTypeForPossibleSamType(type: ConeKotlinType): ConeKotlinType? { return when (type) {