diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index 4d44146b699..e727a03bf78 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -333,26 +333,27 @@ class JavaClassUseSiteMemberScope( } } - override fun FirNamedFunctionSymbol.createSuspendView(): FirSimpleFunction? { - val continuationParameter = fir.valueParameters.lastOrNull() ?: return null - val owner = ownerClassLookupTag.toSymbol(session)?.fir as? FirJavaClass ?: return null + override fun FirNamedFunctionSymbol.replaceWithWrapperSymbolIfNeeded(): FirNamedFunctionSymbol { + if (!isJavaOrEnhancement) return this + val continuationParameter = fir.valueParameters.lastOrNull() ?: return this + val owner = ownerClassLookupTag.toSymbol(session)?.fir as? FirJavaClass ?: return this val continuationParameterType = continuationParameter .returnTypeRef .resolveIfJavaType(session, owner.javaTypeParameterStack) .coneTypeSafe() ?.lowerBoundIfFlexible() as? ConeClassLikeType - ?: return null - if (continuationParameterType.lookupTag.classId.asSingleFqName() != StandardNames.CONTINUATION_INTERFACE_FQ_NAME) return null + ?: return this + if (continuationParameterType.lookupTag.classId.asSingleFqName() != StandardNames.CONTINUATION_INTERFACE_FQ_NAME) return this return buildSimpleFunctionCopy(fir) { valueParameters.clear() valueParameters.addAll(fir.valueParameters.dropLast(1)) returnTypeRef = buildResolvedTypeRef { - type = continuationParameterType.typeArguments[0].type ?: return null + type = continuationParameterType.typeArguments[0].type ?: return this@replaceWithWrapperSymbolIfNeeded } (status as FirDeclarationStatusImpl).isSuspend = true symbol = FirNamedFunctionSymbol(callableId) - } + }.symbol } // --------------------------------------------------------------------------------------------------------- diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt index fa6b60d0985..2aff19d2cb8 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt @@ -6,8 +6,6 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction -import org.jetbrains.kotlin.fir.declarations.isJavaOrEnhancement import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.scopes.* @@ -77,7 +75,7 @@ abstract class AbstractFirUseSiteMemberScope( if (!symbol.isVisibleInCurrentClass()) return@processFunctionsByName val directOverridden = computeDirectOverriddenForDeclaredFunction(symbol) directOverriddenFunctions[symbol] = directOverridden - destination += (symbol.takeIf { it.isJavaOrEnhancement }?.createSuspendView()?.symbol ?: symbol) + destination += symbol.replaceWithWrapperSymbolIfNeeded() } } @@ -219,7 +217,10 @@ abstract class AbstractFirUseSiteMemberScope( return classifierNamesCached } - protected open fun FirNamedFunctionSymbol.createSuspendView(): FirSimpleFunction? { - return null + /** + * This function is currently used only for creating suspend views in Java. + */ + protected open fun FirNamedFunctionSymbol.replaceWithWrapperSymbolIfNeeded(): FirNamedFunctionSymbol { + return this } }