[FIR] Create FirExtensionSyntheticFunctionInterfaceProvider only once for all sessions
This is needed to avoid duplication of symbols for the same classIds ^KT-58539 Fixed
This commit is contained in:
committed by
Space Team
parent
32891edc3e
commit
037572ee9f
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.*
|
|||||||
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
import org.jetbrains.kotlin.fir.checkers.registerExtendedCommonCheckers
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirExtensionSyntheticFunctionInterfaceProvider
|
||||||
import org.jetbrains.kotlin.fir.session.*
|
import org.jetbrains.kotlin.fir.session.*
|
||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectEnvironment
|
||||||
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
import org.jetbrains.kotlin.fir.session.environment.AbstractProjectFileSearchScope
|
||||||
|
|||||||
+4
-6
@@ -37,7 +37,7 @@ abstract class FirAbstractSessionFactory {
|
|||||||
extensionRegistrars: List<FirExtensionRegistrar>,
|
extensionRegistrars: List<FirExtensionRegistrar>,
|
||||||
registerExtraComponents: ((FirSession) -> Unit),
|
registerExtraComponents: ((FirSession) -> Unit),
|
||||||
createKotlinScopeProvider: () -> FirKotlinScopeProvider,
|
createKotlinScopeProvider: () -> FirKotlinScopeProvider,
|
||||||
createProviders: (FirSession, FirModuleData, FirKotlinScopeProvider) -> List<FirSymbolProvider>
|
createProviders: (FirSession, FirModuleData, FirKotlinScopeProvider, FirExtensionSyntheticFunctionInterfaceProvider?) -> List<FirSymbolProvider>
|
||||||
): FirSession {
|
): FirSession {
|
||||||
return FirCliSession(sessionProvider, FirSession.Kind.Library).apply session@{
|
return FirCliSession(sessionProvider, FirSession.Kind.Library).apply session@{
|
||||||
moduleDataProvider.allModuleData.forEach {
|
moduleDataProvider.allModuleData.forEach {
|
||||||
@@ -66,7 +66,9 @@ abstract class FirAbstractSessionFactory {
|
|||||||
}.configure()
|
}.configure()
|
||||||
registerCommonComponentsAfterExtensionsAreConfigured()
|
registerCommonComponentsAfterExtensionsAreConfigured()
|
||||||
|
|
||||||
val providers = createProviders(this, builtinsModuleData, kotlinScopeProvider)
|
val syntheticFunctionInterfaceProvider =
|
||||||
|
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(this, builtinsModuleData, kotlinScopeProvider)
|
||||||
|
val providers = createProviders(this, builtinsModuleData, kotlinScopeProvider, syntheticFunctionInterfaceProvider)
|
||||||
|
|
||||||
val symbolProvider = FirCachingCompositeSymbolProvider(this, providers)
|
val symbolProvider = FirCachingCompositeSymbolProvider(this, providers)
|
||||||
register(FirSymbolProvider::class, symbolProvider)
|
register(FirSymbolProvider::class, symbolProvider)
|
||||||
@@ -88,7 +90,6 @@ abstract class FirAbstractSessionFactory {
|
|||||||
createProviders: (
|
createProviders: (
|
||||||
FirSession, FirKotlinScopeProvider, FirSymbolProvider,
|
FirSession, FirKotlinScopeProvider, FirSymbolProvider,
|
||||||
FirSwitchableExtensionDeclarationsSymbolProvider?,
|
FirSwitchableExtensionDeclarationsSymbolProvider?,
|
||||||
FirExtensionSyntheticFunctionInterfaceProvider?,
|
|
||||||
dependencies: List<FirSymbolProvider>,
|
dependencies: List<FirSymbolProvider>,
|
||||||
) -> List<FirSymbolProvider>
|
) -> List<FirSymbolProvider>
|
||||||
): FirSession {
|
): FirSession {
|
||||||
@@ -120,15 +121,12 @@ abstract class FirAbstractSessionFactory {
|
|||||||
|
|
||||||
val dependencyProviders = computeDependencyProviderList(moduleData)
|
val dependencyProviders = computeDependencyProviderList(moduleData)
|
||||||
val generatedSymbolsProvider = FirSwitchableExtensionDeclarationsSymbolProvider.createIfNeeded(this)
|
val generatedSymbolsProvider = FirSwitchableExtensionDeclarationsSymbolProvider.createIfNeeded(this)
|
||||||
val syntheticFunctionInterfaceProvider =
|
|
||||||
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(this, moduleData, kotlinScopeProvider)
|
|
||||||
|
|
||||||
val providers = createProviders(
|
val providers = createProviders(
|
||||||
this,
|
this,
|
||||||
kotlinScopeProvider,
|
kotlinScopeProvider,
|
||||||
firProvider.symbolProvider,
|
firProvider.symbolProvider,
|
||||||
generatedSymbolsProvider,
|
generatedSymbolsProvider,
|
||||||
syntheticFunctionInterfaceProvider,
|
|
||||||
dependencyProviders,
|
dependencyProviders,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -56,7 +56,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
registerExtraComponents(it)
|
registerExtraComponents(it)
|
||||||
},
|
},
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
||||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
createProviders = { session, builtinsModuleData, kotlinScopeProvider, syntheticFunctionInterfaceProvider ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
MetadataSymbolProvider(
|
MetadataSymbolProvider(
|
||||||
session,
|
session,
|
||||||
@@ -73,6 +73,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
resolvedKLibs.map { it.library }
|
resolvedKLibs.map { it.library }
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
syntheticFunctionInterfaceProvider,
|
||||||
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
)
|
)
|
||||||
@@ -110,7 +111,7 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
},
|
},
|
||||||
registerExtraCheckers = {},
|
registerExtraCheckers = {},
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
||||||
createProviders = { session, kotlinScopeProvider, symbolProvider, syntheticFunctionalInterfaceProvider, generatedSymbolsProvider, dependencies ->
|
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, dependencies ->
|
||||||
var symbolProviderForBinariesFromIncrementalCompilation: MetadataSymbolProvider? = null
|
var symbolProviderForBinariesFromIncrementalCompilation: MetadataSymbolProvider? = null
|
||||||
incrementalCompilationContext?.let {
|
incrementalCompilationContext?.let {
|
||||||
val precompiledBinariesPackagePartProvider = it.precompiledBinariesPackagePartProvider
|
val precompiledBinariesPackagePartProvider = it.precompiledBinariesPackagePartProvider
|
||||||
@@ -133,7 +134,6 @@ object FirCommonSessionFactory : FirAbstractSessionFactory() {
|
|||||||
*(incrementalCompilationContext?.previousFirSessionsSymbolProviders?.toTypedArray() ?: emptyArray()),
|
*(incrementalCompilationContext?.previousFirSessionsSymbolProviders?.toTypedArray() ?: emptyArray()),
|
||||||
symbolProviderForBinariesFromIncrementalCompilation,
|
symbolProviderForBinariesFromIncrementalCompilation,
|
||||||
generatedSymbolsProvider,
|
generatedSymbolsProvider,
|
||||||
syntheticFunctionalInterfaceProvider,
|
|
||||||
*dependencies.toTypedArray(),
|
*dependencies.toTypedArray(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
|||||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
|
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirExtensionSyntheticFunctionInterfaceProvider
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
@@ -54,7 +53,7 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
|
|||||||
},
|
},
|
||||||
registerExtraCheckers = { it.registerJsCheckers() },
|
registerExtraCheckers = { it.registerJsCheckers() },
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
||||||
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, syntheticFunctionInterfaceProvider, dependencies ->
|
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, dependencies ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
symbolProvider,
|
symbolProvider,
|
||||||
generatedSymbolsProvider,
|
generatedSymbolsProvider,
|
||||||
@@ -66,7 +65,6 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
|
|||||||
it,
|
it,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
syntheticFunctionInterfaceProvider,
|
|
||||||
*dependencies.toTypedArray(),
|
*dependencies.toTypedArray(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -92,11 +90,11 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
|
|||||||
registerExtraComponents(it)
|
registerExtraComponents(it)
|
||||||
},
|
},
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
||||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
createProviders = { session, builtinsModuleData, kotlinScopeProvider, syntheticFunctionInterfaceProvider ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, resolvedLibraries),
|
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, resolvedLibraries),
|
||||||
FirBuiltinSyntheticFunctionInterfaceProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirBuiltinSyntheticFunctionInterfaceProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(session, builtinsModuleData, kotlinScopeProvider),
|
syntheticFunctionInterfaceProvider
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-4
@@ -54,7 +54,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
registerExtraComponents(it)
|
registerExtraComponents(it)
|
||||||
},
|
},
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
||||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
createProviders = { session, builtinsModuleData, kotlinScopeProvider, syntheticFunctionInterfaceProvider ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
JvmClassFileBasedSymbolProvider(
|
JvmClassFileBasedSymbolProvider(
|
||||||
session,
|
session,
|
||||||
@@ -65,7 +65,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
projectEnvironment.getFirJavaFacade(session, moduleDataProvider.allModuleData.last(), scope)
|
projectEnvironment.getFirJavaFacade(session, moduleDataProvider.allModuleData.last(), scope)
|
||||||
),
|
),
|
||||||
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(session, builtinsModuleData, kotlinScopeProvider),
|
syntheticFunctionInterfaceProvider,
|
||||||
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
OptionalAnnotationClassesProvider(
|
OptionalAnnotationClassesProvider(
|
||||||
session,
|
session,
|
||||||
@@ -108,7 +108,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
},
|
},
|
||||||
registerExtraCheckers = { it.registerJvmCheckers() },
|
registerExtraCheckers = { it.registerJvmCheckers() },
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
||||||
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, syntheticFunctionInterfaceProvider, dependencies ->
|
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, dependencies ->
|
||||||
var symbolProviderForBinariesFromIncrementalCompilation: JvmClassFileBasedSymbolProvider? = null
|
var symbolProviderForBinariesFromIncrementalCompilation: JvmClassFileBasedSymbolProvider? = null
|
||||||
var optionalAnnotationClassesProviderForBinariesFromIncrementalCompilation: OptionalAnnotationClassesProvider? = null
|
var optionalAnnotationClassesProviderForBinariesFromIncrementalCompilation: OptionalAnnotationClassesProvider? = null
|
||||||
incrementalCompilationContext?.let {
|
incrementalCompilationContext?.let {
|
||||||
@@ -145,7 +145,6 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
symbolProviderForBinariesFromIncrementalCompilation,
|
symbolProviderForBinariesFromIncrementalCompilation,
|
||||||
generatedSymbolsProvider,
|
generatedSymbolsProvider,
|
||||||
javaSymbolProvider,
|
javaSymbolProvider,
|
||||||
syntheticFunctionInterfaceProvider,
|
|
||||||
*dependencies.toTypedArray(),
|
*dependencies.toTypedArray(),
|
||||||
optionalAnnotationClassesProviderForBinariesFromIncrementalCompilation,
|
optionalAnnotationClassesProviderForBinariesFromIncrementalCompilation,
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-4
@@ -41,7 +41,7 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() {
|
|||||||
registerExtraComponents(session)
|
registerExtraComponents(session)
|
||||||
},
|
},
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
||||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
createProviders = { session, builtinsModuleData, kotlinScopeProvider, syntheticFunctionInterfaceProvider ->
|
||||||
val forwardDeclarationsModuleData = BinaryModuleData.createDependencyModuleData(
|
val forwardDeclarationsModuleData = BinaryModuleData.createDependencyModuleData(
|
||||||
Name.special("<forward declarations>"),
|
Name.special("<forward declarations>"),
|
||||||
moduleDataProvider.platform,
|
moduleDataProvider.platform,
|
||||||
@@ -54,7 +54,7 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() {
|
|||||||
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, kotlinLibraries),
|
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, kotlinLibraries),
|
||||||
NativeForwardDeclarationsSymbolProvider(session, forwardDeclarationsModuleData, kotlinScopeProvider, kotlinLibraries),
|
NativeForwardDeclarationsSymbolProvider(session, forwardDeclarationsModuleData, kotlinScopeProvider, kotlinLibraries),
|
||||||
FirBuiltinSyntheticFunctionInterfaceProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirBuiltinSyntheticFunctionInterfaceProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(session, builtinsModuleData, kotlinScopeProvider),
|
syntheticFunctionInterfaceProvider,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -85,11 +85,10 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() {
|
|||||||
},
|
},
|
||||||
registerExtraCheckers = { it.registerNativeCheckers() },
|
registerExtraCheckers = { it.registerNativeCheckers() },
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
createKotlinScopeProvider = { FirKotlinScopeProvider() },
|
||||||
createProviders = { _, _, symbolProvider, generatedSymbolsProvider, syntheticFunctionInterfaceProvider, dependencies ->
|
createProviders = { _, _, symbolProvider, generatedSymbolsProvider, dependencies ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
symbolProvider,
|
symbolProvider,
|
||||||
generatedSymbolsProvider,
|
generatedSymbolsProvider,
|
||||||
syntheticFunctionInterfaceProvider,
|
|
||||||
*dependencies.toTypedArray(),
|
*dependencies.toTypedArray(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-5
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
|||||||
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
|
import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSyntheticFunctionInterfaceProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirExtensionSyntheticFunctionInterfaceProvider
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
@@ -52,7 +51,7 @@ object FirWasmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
},
|
},
|
||||||
registerExtraCheckers = { it.registerWasmCheckers() },
|
registerExtraCheckers = { it.registerWasmCheckers() },
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
|
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
|
||||||
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, syntheticFunctionInterfaceProvider, dependencies ->
|
createProviders = { session, kotlinScopeProvider, symbolProvider, generatedSymbolsProvider, dependencies ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
symbolProvider,
|
symbolProvider,
|
||||||
generatedSymbolsProvider,
|
generatedSymbolsProvider,
|
||||||
@@ -64,7 +63,6 @@ object FirWasmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
it,
|
it,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
syntheticFunctionInterfaceProvider,
|
|
||||||
*dependencies.toTypedArray(),
|
*dependencies.toTypedArray(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -90,11 +88,11 @@ object FirWasmSessionFactory : FirAbstractSessionFactory() {
|
|||||||
registerExtraComponents(it)
|
registerExtraComponents(it)
|
||||||
},
|
},
|
||||||
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
|
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _, _ -> declaredMemberScope } },
|
||||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
createProviders = { session, builtinsModuleData, kotlinScopeProvider, syntheticFunctionInterfaceProvider ->
|
||||||
listOfNotNull(
|
listOfNotNull(
|
||||||
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, resolvedLibraries),
|
KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, resolvedLibraries),
|
||||||
FirBuiltinSyntheticFunctionInterfaceProvider(session, builtinsModuleData, kotlinScopeProvider),
|
FirBuiltinSyntheticFunctionInterfaceProvider(session, builtinsModuleData, kotlinScopeProvider),
|
||||||
FirExtensionSyntheticFunctionInterfaceProvider.createIfNeeded(session, builtinsModuleData, kotlinScopeProvider),
|
syntheticFunctionInterfaceProvider,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
+4
@@ -49,6 +49,10 @@ class FirExtensionSyntheticFunctionInterfaceProvider(
|
|||||||
/**
|
/**
|
||||||
* A [FirExtensionSyntheticFunctionInterfaceProvider] only needs to be created if the session's function type service has extension
|
* A [FirExtensionSyntheticFunctionInterfaceProvider] only needs to be created if the session's function type service has extension
|
||||||
* function kinds. Otherwise, the provider would be useless.
|
* function kinds. Otherwise, the provider would be useless.
|
||||||
|
*
|
||||||
|
* Important note: this provider should be created once per compiled set of modules, so all sessions will share the same provider
|
||||||
|
* Otherwise it may lead to the situation when there are two different symbols for the same classId, which may trigger
|
||||||
|
* errors during expect/actual matching
|
||||||
*/
|
*/
|
||||||
fun createIfNeeded(
|
fun createIfNeeded(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
// FIR_DISABLE_LAZY_RESOLVE_CHECKS
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
// LANGUAGE: +MultiPlatformProjects
|
// LANGUAGE: +MultiPlatformProjects
|
||||||
// ISSUE: KT-58539
|
// ISSUE: KT-58539
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user