From 4d89eddbe8aa0a1a8e39f379e32dd1055b7118f3 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Fri, 30 Sep 2022 21:48:52 +0200 Subject: [PATCH] [FIR] Don't create FirDependenciesSymbolProvider without need --- .../kotlin/fir/session/FirAbstractSessionFactory.kt | 8 ++------ .../org/jetbrains/kotlin/fir/session/FirSessionFactory.kt | 1 - .../providers/impl/FirDependenciesSymbolProviderImpl.kt | 3 ++- .../kotlin/test/frontend/fir/FirJsSessionFactory.kt | 2 -- .../kotlin/test/frontend/fir/FirNativeSessionFactory.kt | 2 -- 5 files changed, 4 insertions(+), 12 deletions(-) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirAbstractSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirAbstractSessionFactory.kt index 92f3b2707a7..ff89868ea87 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirAbstractSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirAbstractSessionFactory.kt @@ -91,7 +91,7 @@ abstract class FirAbstractSessionFactory { createProviders: ( FirSession, FirKotlinScopeProvider, FirSymbolProvider, FirSwitchableExtensionDeclarationsSymbolProvider?, - FirDependenciesSymbolProviderImpl + FirDependenciesSymbolProvider ) -> List ): FirSession { return FirCliSession(sessionProvider, FirSession.Kind.Source).apply session@{ @@ -129,11 +129,7 @@ abstract class FirAbstractSessionFactory { register(FirSymbolProvider::class, FirCompositeSymbolProvider(this, providers)) generatedSymbolsProvider?.let { register(FirSwitchableExtensionDeclarationsSymbolProvider::class, it) } - - register( - FirDependenciesSymbolProvider::class, - dependenciesSymbolProvider - ) + register(FirDependenciesSymbolProvider::class, dependenciesSymbolProvider) } } } \ No newline at end of file diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt index 0a9dd9bc9d1..f5189484dc5 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt @@ -115,7 +115,6 @@ object FirSessionFactory : FirAbstractSessionFactory() { ), FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider), FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider), - FirDependenciesSymbolProviderImpl(session), OptionalAnnotationClassesProvider(session, dependencyList.moduleDataProvider, kotlinScopeProvider, packagePartProvider) ) } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt index 3749ae4ef55..f9e030ba05d 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt @@ -31,7 +31,8 @@ open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirDependenc protected open val dependencyProviders by lazy { - val moduleData = session.nullableModuleData ?: return@lazy emptyList() + val moduleData = + session.nullableModuleData ?: error("FirDependenciesSymbolProvider should not be created if there are no dependencies") (moduleData.dependencies + moduleData.friendDependencies + moduleData.dependsOnDependencies) .mapNotNull { session.sessionProvider?.getSession(it) } .sortedBy { it.kind } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirJsSessionFactory.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirJsSessionFactory.kt index 95eed1b6d88..b993cf0007f 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirJsSessionFactory.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirJsSessionFactory.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCloneableSymbolProvider -import org.jetbrains.kotlin.fir.resolve.providers.impl.FirDependenciesSymbolProviderImpl import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper import org.jetbrains.kotlin.fir.session.FirAbstractSessionFactory @@ -49,7 +48,6 @@ object FirJsSessionFactory : FirAbstractSessionFactory() { listOf( FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider), FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider), - FirDependenciesSymbolProviderImpl(session), ) + resolveJsLibraries(module, testServices, configuration).map { KlibBasedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, it) } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirNativeSessionFactory.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirNativeSessionFactory.kt index a0e52e66472..66ee2833cf3 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirNativeSessionFactory.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/FirNativeSessionFactory.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory import org.jetbrains.kotlin.fir.resolve.providers.impl.FirBuiltinSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCloneableSymbolProvider -import org.jetbrains.kotlin.fir.resolve.providers.impl.FirDependenciesSymbolProviderImpl import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper import org.jetbrains.kotlin.fir.session.FirAbstractSessionFactory @@ -40,7 +39,6 @@ object FirNativeSessionFactory : FirAbstractSessionFactory() { listOf( FirBuiltinSymbolProvider(session, builtinsModuleData, kotlinScopeProvider), FirCloneableSymbolProvider(session, builtinsModuleData, kotlinScopeProvider), - FirDependenciesSymbolProviderImpl(session), ) }) }