[FIR] add lazy resolution contract checks in resolve
This commit is contained in:
committed by
Space Team
parent
df5aa59185
commit
7bac119f20
+2
-2
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.jvm.JvmCallConflictResolverFactory
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirQualifierResolverImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirTypeResolverImpl
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirCompilerLazyDeclarationResolver
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirDummyCompilerLazyDeclarationResolver
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.PlatformSupertypeUpdater
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.GeneratedClassIndex
|
||||
import org.jetbrains.kotlin.fir.scopes.FirOverrideService
|
||||
@@ -76,7 +76,7 @@ fun FirSession.registerCommonComponents(languageVersionSettings: LanguageVersion
|
||||
fun FirSession.registerCliCompilerOnlyComponents() {
|
||||
register(FirCachesFactory::class, FirThreadUnsafeCachesFactory)
|
||||
register(SealedClassInheritorsProvider::class, SealedClassInheritorsProviderImpl)
|
||||
register(FirLazyDeclarationResolver::class, FirCompilerLazyDeclarationResolver)
|
||||
register(FirLazyDeclarationResolver::class, FirDummyCompilerLazyDeclarationResolver)
|
||||
|
||||
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
||||
register(FirPredicateBasedProvider::class, FirPredicateBasedProviderImpl(this))
|
||||
|
||||
+4
-4
@@ -37,7 +37,7 @@ abstract class FirAbstractSessionFactory {
|
||||
sessionProvider: FirProjectSessionProvider,
|
||||
moduleDataProvider: ModuleDataProvider,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
registerExtraComponents: ((FirSession) -> Unit)?,
|
||||
registerExtraComponents: ((FirSession) -> Unit),
|
||||
createKotlinScopeProvider: () -> FirKotlinScopeProvider,
|
||||
createProviders: (FirSession, FirModuleData, FirKotlinScopeProvider) -> List<FirSymbolProvider>
|
||||
): FirSession {
|
||||
@@ -49,7 +49,7 @@ abstract class FirAbstractSessionFactory {
|
||||
|
||||
registerCliCompilerOnlyComponents()
|
||||
registerCommonComponents(languageVersionSettings)
|
||||
registerExtraComponents?.invoke(this)
|
||||
registerExtraComponents(this)
|
||||
|
||||
val kotlinScopeProvider = createKotlinScopeProvider.invoke()
|
||||
register(FirKotlinScopeProvider::class, kotlinScopeProvider)
|
||||
@@ -77,7 +77,7 @@ abstract class FirAbstractSessionFactory {
|
||||
lookupTracker: LookupTracker?,
|
||||
enumWhenTracker: EnumWhenTracker?,
|
||||
init: FirSessionConfigurator.() -> Unit,
|
||||
registerExtraComponents: ((FirSession) -> Unit)?,
|
||||
registerExtraComponents: ((FirSession) -> Unit),
|
||||
registerExtraCheckers: ((FirSessionConfigurator) -> Unit)?,
|
||||
createKotlinScopeProvider: () -> FirKotlinScopeProvider,
|
||||
createProviders: (
|
||||
@@ -93,7 +93,7 @@ abstract class FirAbstractSessionFactory {
|
||||
registerCliCompilerOnlyComponents()
|
||||
registerCommonComponents(languageVersionSettings)
|
||||
registerResolveComponents(lookupTracker, enumWhenTracker)
|
||||
registerExtraComponents?.invoke(this)
|
||||
registerExtraComponents(this)
|
||||
|
||||
val kotlinScopeProvider = createKotlinScopeProvider.invoke()
|
||||
register(FirKotlinScopeProvider::class, kotlinScopeProvider)
|
||||
|
||||
+10
-3
@@ -21,13 +21,13 @@ import org.jetbrains.kotlin.library.metadata.resolver.KotlinResolvedLibrary
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
object FirJsSessionFactory : FirAbstractSessionFactory() {
|
||||
|
||||
fun createJsModuleBasedSession(
|
||||
moduleData: FirModuleData,
|
||||
sessionProvider: FirProjectSessionProvider,
|
||||
extensionRegistrars: List<FirExtensionRegistrar>,
|
||||
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||
lookupTracker: LookupTracker?,
|
||||
registerExtraComponents: ((FirSession) -> Unit) = {},
|
||||
init: FirSessionConfigurator.() -> Unit
|
||||
): FirSession {
|
||||
return createModuleBasedSession(
|
||||
@@ -38,7 +38,10 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
|
||||
lookupTracker,
|
||||
null,
|
||||
init,
|
||||
registerExtraComponents = { it.registerJsSpecificResolveComponents() },
|
||||
registerExtraComponents = { session ->
|
||||
session.registerJsSpecificResolveComponents()
|
||||
registerExtraComponents(session)
|
||||
},
|
||||
registerExtraCheckers = { it.registerJsCheckers() },
|
||||
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _ -> declaredMemberScope } },
|
||||
createProviders = { _, _, symbolProvider, generatedSymbolsProvider, dependenciesSymbolProvider ->
|
||||
@@ -57,12 +60,16 @@ object FirJsSessionFactory : FirAbstractSessionFactory() {
|
||||
sessionProvider: FirProjectSessionProvider,
|
||||
moduleDataProvider: ModuleDataProvider,
|
||||
languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||
registerExtraComponents: ((FirSession) -> Unit),
|
||||
) = createLibrarySession(
|
||||
mainModuleName,
|
||||
sessionProvider,
|
||||
moduleDataProvider,
|
||||
languageVersionSettings,
|
||||
registerExtraComponents = { it.registerJsSpecificResolveComponents() },
|
||||
registerExtraComponents = {
|
||||
it.registerJsSpecificResolveComponents()
|
||||
registerExtraComponents(it)
|
||||
},
|
||||
createKotlinScopeProvider = { FirKotlinScopeProvider { _, declaredMemberScope, _, _ -> declaredMemberScope } },
|
||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
||||
listOf(
|
||||
|
||||
+7
-1
@@ -34,13 +34,17 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
scope: AbstractProjectFileSearchScope,
|
||||
packagePartProvider: PackagePartProvider,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
registerExtraComponents: ((FirSession) -> Unit),
|
||||
): FirSession {
|
||||
return createLibrarySession(
|
||||
mainModuleName,
|
||||
sessionProvider,
|
||||
dependencyList.moduleDataProvider,
|
||||
languageVersionSettings,
|
||||
registerExtraComponents = { it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver()) },
|
||||
registerExtraComponents = {
|
||||
it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver())
|
||||
registerExtraComponents(it)
|
||||
},
|
||||
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
||||
createProviders = { session, builtinsModuleData, kotlinScopeProvider ->
|
||||
listOf(
|
||||
@@ -72,6 +76,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
lookupTracker: LookupTracker? = null,
|
||||
enumWhenTracker: EnumWhenTracker? = null,
|
||||
needRegisterJavaElementFinder: Boolean,
|
||||
registerExtraComponents: ((FirSession) -> Unit) = {},
|
||||
init: FirSessionConfigurator.() -> Unit = {}
|
||||
): FirSession {
|
||||
return createModuleBasedSession(
|
||||
@@ -85,6 +90,7 @@ object FirJvmSessionFactory : FirAbstractSessionFactory() {
|
||||
registerExtraComponents = {
|
||||
it.registerCommonJavaComponents(projectEnvironment.getJavaModuleResolver())
|
||||
it.registerJavaSpecificResolveComponents()
|
||||
registerExtraComponents(it)
|
||||
},
|
||||
registerExtraCheckers = { it.registerJvmCheckers() },
|
||||
createKotlinScopeProvider = { FirKotlinScopeProvider(::wrapScopeWithJvmMapped) },
|
||||
|
||||
+4
-2
@@ -48,7 +48,8 @@ object FirSessionFactoryHelper {
|
||||
projectEnvironment,
|
||||
librariesScope,
|
||||
packagePartProvider,
|
||||
languageVersionSettings
|
||||
languageVersionSettings,
|
||||
registerExtraComponents = {},
|
||||
)
|
||||
|
||||
val mainModuleData = FirModuleDataImpl(
|
||||
@@ -70,7 +71,8 @@ object FirSessionFactoryHelper {
|
||||
lookupTracker,
|
||||
enumWhenTracker,
|
||||
needRegisterJavaElementFinder,
|
||||
sessionConfigurator
|
||||
registerExtraComponents = {},
|
||||
sessionConfigurator,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user