AA: migrate PackagePartProviderFactory to general API providers

This commit is contained in:
Jinseong Jeon
2022-09-12 14:17:30 -07:00
committed by Ilya Kirillov
parent e2d758213f
commit 2580a5c233
6 changed files with 14 additions and 16 deletions
@@ -1,23 +1,23 @@
/* /*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
package org.jetbrains.kotlin.analysis.low.level.api.fir.api.services package org.jetbrains.kotlin.analysis.providers
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
abstract class PackagePartProviderFactory { public abstract class PackagePartProviderFactory {
/** /**
* Create a [PackagePartProvider] for a given scope. [PackagePartProvider] is responsible for searching sub packages in a library. * Create a [PackagePartProvider] for a given scope. [PackagePartProvider] is responsible for searching sub packages in a library.
*/ */
abstract fun createPackagePartProviderForLibrary(scope: GlobalSearchScope): PackagePartProvider public abstract fun createPackagePartProvider(scope: GlobalSearchScope): PackagePartProvider
} }
/** /**
* Create a [PackagePartProvider] for a given scope. [PackagePartProvider] is responsible for searching sub packages in a library. * Create a [PackagePartProvider] for a given scope. [PackagePartProvider] is responsible for searching sub packages in a library.
*/ */
internal fun Project.createPackagePartProviderForLibrary(scope: GlobalSearchScope): PackagePartProvider = public fun Project.createPackagePartProvider(scope: GlobalSearchScope): PackagePartProvider =
getService(PackagePartProviderFactory::class.java).createPackagePartProviderForLibrary(scope) getService(PackagePartProviderFactory::class.java).createPackagePartProvider(scope)
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory import org.jetbrains.kotlin.analysis.api.standalone.base.project.structure.StandaloneProjectFactory
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
@@ -141,7 +140,7 @@ public class StandaloneAnalysisAPISessionBuilder(
registerService( registerService(
PackagePartProviderFactory::class.java, PackagePartProviderFactory::class.java,
object : PackagePartProviderFactory() { object : PackagePartProviderFactory() {
override fun createPackagePartProviderForLibrary(scope: GlobalSearchScope): PackagePartProvider { override fun createPackagePartProvider(scope: GlobalSearchScope): PackagePartProvider {
return packagePartProvider(scope) return packagePartProvider(scope)
} }
} }
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProv
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
@@ -167,7 +166,7 @@ internal fun configureProjectEnvironment(
project.picoContainer.registerComponentInstance( project.picoContainer.registerComponentInstance(
PackagePartProviderFactory::class.qualifiedName, PackagePartProviderFactory::class.qualifiedName,
object : PackagePartProviderFactory() { object : PackagePartProviderFactory() {
override fun createPackagePartProviderForLibrary(scope: GlobalSearchScope): PackagePartProvider { override fun createPackagePartProvider(scope: GlobalSearchScope): PackagePartProvider {
return packagePartProvider(scope) return packagePartProvider(scope)
} }
} }
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.createPackagePartProviderForLibrary
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirJavaFacadeForBinaries import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirJavaFacadeForBinaries
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSession
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
import org.jetbrains.kotlin.analysis.providers.createPackagePartProvider
import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.BuiltinTypes
import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider import org.jetbrains.kotlin.fir.deserialization.SingleModuleDataProvider
import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider import org.jetbrains.kotlin.fir.java.deserialization.JvmClassFileBasedSymbolProvider
@@ -31,7 +31,7 @@ internal object LLFirLibraryProviderFactory {
): List<FirSymbolProvider> { ): List<FirSymbolProvider> {
val moduleDataProvider = SingleModuleDataProvider(moduleData) val moduleDataProvider = SingleModuleDataProvider(moduleData)
val scope = module.contentScope val scope = module.contentScope
val packagePartProvider = project.createPackagePartProviderForLibrary(scope) val packagePartProvider = project.createPackagePartProvider(scope)
return buildList { return buildList {
add( add(
JvmClassFileBasedSymbolProvider( JvmClassFileBasedSymbolProvider(
@@ -56,7 +56,7 @@ internal object LLFirLibraryProviderFactory {
scope: GlobalSearchScope, scope: GlobalSearchScope,
): List<FirSymbolProvider> { ): List<FirSymbolProvider> {
val moduleDataProvider = SingleModuleDataProvider(moduleData) val moduleDataProvider = SingleModuleDataProvider(moduleData)
val packagePartProvider = project.createPackagePartProviderForLibrary(scope) val packagePartProvider = project.createPackagePartProvider(scope)
return buildList { return buildList {
add( add(
JvmClassFileBasedSymbolProvider( JvmClassFileBasedSymbolProvider(
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir.services package org.jetbrains.kotlin.analysis.low.level.api.fir.services
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory import org.jetbrains.kotlin.analysis.providers.PackagePartProviderFactory
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.serialization.deserialization.ClassData import org.jetbrains.kotlin.serialization.deserialization.ClassData
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.test.services.moduleStructure
internal class PackagePartProviderTestImpl( internal class PackagePartProviderTestImpl(
private val testServices: TestServices, private val testServices: TestServices,
) : PackagePartProviderFactory() { ) : PackagePartProviderFactory() {
override fun createPackagePartProviderForLibrary(scope: GlobalSearchScope): PackagePartProvider { override fun createPackagePartProvider(scope: GlobalSearchScope): PackagePartProvider {
val providers = testServices.moduleStructure.modules.map { module -> val providers = testServices.moduleStructure.modules.map { module ->
testServices.compilerConfigurationProvider.getPackagePartProviderFactory(module)(scope) testServices.compilerConfigurationProvider.getPackagePartProviderFactory(module)(scope)
} }
@@ -15,13 +15,13 @@ import org.jetbrains.kotlin.analysis.api.fir.references.ReadWriteAccessCheckerFi
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.KtCompilerPluginsProviderForTests import org.jetbrains.kotlin.analysis.low.level.api.fir.services.KtCompilerPluginsProviderForTests
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.LLFirSealedClassInheritorsProcessorFactoryForTests import org.jetbrains.kotlin.analysis.low.level.api.fir.services.LLFirSealedClassInheritorsProcessorFactoryForTests
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.PackagePartProviderTestImpl import org.jetbrains.kotlin.analysis.low.level.api.fir.services.PackagePartProviderTestImpl
import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider import org.jetbrains.kotlin.analysis.project.structure.KtCompilerPluginsProvider
import org.jetbrains.kotlin.analysis.providers.PackagePartProviderFactory
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestServiceRegistrar
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.asJava.finder.JavaElementFinder