From e359658c55e0df4912bb3051584c31426f8f68c1 Mon Sep 17 00:00:00 2001 From: pyos Date: Thu, 20 Oct 2022 14:07:03 +0200 Subject: [PATCH] Minor: slightly speed up isSamType for FIR IDE --- .../org/jetbrains/kotlin/fir/resolve/SamResolution.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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) {