[FIR] Deprecate FirExtensionsService

This commit is contained in:
Dmitriy Novozhilov
2020-05-20 13:06:57 +03:00
parent f3d4fa715e
commit 0b00015424
17 changed files with 46 additions and 40 deletions
@@ -55,7 +55,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -327,7 +327,7 @@ object KotlinToJVMBytecodeCompiler {
dependenciesInfo, provider, librariesScope,
project, environment.createPackagePartProvider(librariesScope)
)
it.extensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
it.oldExtensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
}
val firProvider = (session.firProvider as FirProviderImpl)
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.analysis.collectors
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkersComponent
import org.jetbrains.kotlin.fir.analysis.extensions.additionalCheckers
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
object FirDiagnosticsCollector {
fun create(session: FirSession): AbstractDiagnosticCollector {
@@ -28,6 +28,6 @@ object FirDiagnosticsCollector {
}
private fun FirSession.registerAdditionalCheckers() {
extensionsService.additionalCheckers.forEach(checkersComponent::register)
oldExtensionsService.additionalCheckers.forEach(checkersComponent::register)
}
}
@@ -36,14 +36,14 @@ abstract class FirAdditionalCheckersExtension(session: FirSession) : AbstractFir
get() = Mode.ALL
}
val FirExtensionsService.additionalCheckers: List<FirAdditionalCheckersExtension> by FirExtensionsService.additionalCheckers()
val FirOldExtensionsService.additionalCheckers: List<FirAdditionalCheckersExtension> by FirOldExtensionsService.additionalCheckers()
private fun FirExtensionsService.Companion.additionalCheckers(): ReadOnlyProperty<FirExtensionsService, List<FirAdditionalCheckersExtension>> {
private fun FirOldExtensionsService.Companion.additionalCheckers(): ReadOnlyProperty<FirOldExtensionsService, List<FirAdditionalCheckersExtension>> {
val accessor = generateAccessor<FirRegisteredExtension<AbstractFirAdditionalCheckersExtension>, AbstractFirAdditionalCheckersExtension>(
AbstractFirAdditionalCheckersExtension::class
)
return object : ReadOnlyProperty<FirExtensionsService, List<FirAdditionalCheckersExtension>> {
override fun getValue(thisRef: FirExtensionsService, property: KProperty<*>): List<FirAdditionalCheckersExtension> {
return object : ReadOnlyProperty<FirOldExtensionsService, List<FirAdditionalCheckersExtension>> {
override fun getValue(thisRef: FirOldExtensionsService, property: KProperty<*>): List<FirAdditionalCheckersExtension> {
val extensions = accessor.getValue(thisRef, property)
@Suppress("UNCHECKED_CAST")
return extensions.extensionsWithAllMode as List<FirAdditionalCheckersExtension>
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.FirSessionProvider
import org.jetbrains.kotlin.fir.analysis.CheckersComponent
import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.extensions.FirOldExtensionsService
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
@@ -122,8 +122,8 @@ class FirLibrarySession private constructor(
)
registerComponent(
FirExtensionsService::class,
FirExtensionsService(this)
FirOldExtensionsService::class,
FirOldExtensionsService(this)
)
sessionProvider.sessionCache[moduleInfo] = this
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.extensions.FirOldExtensionsService
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.impl.*
import org.jetbrains.kotlin.fir.scopes.impl.FirDeclaredMemberScopeProvider
@@ -17,7 +17,7 @@ abstract class FirModuleBasedSession(override val moduleInfo: ModuleInfo, sessio
registerComponent(FirQualifierResolver::class, FirQualifierResolverImpl(this))
registerComponent(FirTypeResolver::class, FirTypeResolverImpl(this))
registerComponent(FirDeclaredMemberScopeProvider::class, FirDeclaredMemberScopeProvider())
registerComponent(FirExtensionsService::class, FirExtensionsService(this))
registerComponent(FirOldExtensionsService::class, FirOldExtensionsService(this))
}
}
@@ -43,4 +43,4 @@ abstract class FirClassGenerationExtension(session: FirSession) : FirExtension(s
fun interface Factory : FirExtension.Factory<FirClassGenerationExtension>
}
val FirExtensionsService.classGenerationExtensions: FirExtensionsService.ExtensionsAccessor<FirClassGenerationExtension> by FirExtensionsService.registeredExtensions()
val FirOldExtensionsService.classGenerationExtensions: FirOldExtensionsService.ExtensionsAccessor<FirClassGenerationExtension> by FirOldExtensionsService.registeredExtensions()
@@ -57,7 +57,7 @@ abstract class FirExtensionRegistrar {
}
}
fun FirExtensionsService.registerExtensions(extensions: FirExtensionRegistrar.RegisteredExtensions) {
fun FirOldExtensionsService.registerExtensions(extensions: FirExtensionRegistrar.RegisteredExtensions) {
registerExtensions(FirStatusTransformerExtension::class, extensions.statusTransformerExtensions)
registerExtensions(FirClassGenerationExtension::class, extensions.classGenerationExtensions)
registerExtensions(AbstractFirAdditionalCheckersExtension::class, extensions.additionalCheckersExtensions)
@@ -35,14 +35,15 @@ class FirRegisteredExtension<P : FirExtension>(
}
}
class FirExtensionsService(
@Deprecated("")
class FirOldExtensionsService(
val session: FirSession
) : ComponentArrayOwner<FirExtension, FirRegisteredExtension<*>>(), FirSessionComponent {
companion object : TypeRegistry<FirExtension, FirRegisteredExtension<*>>() {
inline fun <reified P : FirExtension, V : FirRegisteredExtension<P>> registeredExtensions(): ReadOnlyProperty<FirExtensionsService, ExtensionsAccessor<P>> {
inline fun <reified P : FirExtension, V : FirRegisteredExtension<P>> registeredExtensions(): ReadOnlyProperty<FirOldExtensionsService, ExtensionsAccessor<P>> {
val accessor = generateAccessor<V, P>(P::class)
return object : ReadOnlyProperty<FirExtensionsService, ExtensionsAccessor<P>> {
override fun getValue(thisRef: FirExtensionsService, property: KProperty<*>): ExtensionsAccessor<P> {
return object : ReadOnlyProperty<FirOldExtensionsService, ExtensionsAccessor<P>> {
override fun getValue(thisRef: FirOldExtensionsService, property: KProperty<*>): ExtensionsAccessor<P> {
return ExtensionsAccessor(thisRef.session, accessor.getValue(thisRef, property))
}
}
@@ -93,6 +94,7 @@ class FirExtensionsService(
)
}
@Deprecated("")
fun registerUserDefinedAnnotation(metaAnnotation: AnnotationFqn, annotations: Collection<FirRegularClass>) {
for (annotation in annotations) {
require(annotation.classKind == ClassKind.ANNOTATION_CLASS)
@@ -119,10 +121,12 @@ class FirExtensionsService(
}
}
@Deprecated("")
val annotations: Set<AnnotationFqn>
get() = _annotations
private val _annotations: MutableSet<AnnotationFqn> = mutableSetOf()
@Deprecated("")
val metaAnnotations: Set<AnnotationFqn>
get() = _metaAnnotations
private val _metaAnnotations: MutableSet<AnnotationFqn> = mutableSetOf()
@@ -130,6 +134,7 @@ class FirExtensionsService(
private val extensionsWithMetaAnnotations: Multimap<AnnotationFqn, FirExtension> = createMultimap()
// MetaAnnotation -> Annotations
@Deprecated("")
val userDefinedAnnotations: Multimap<AnnotationFqn, AnnotationFqn> = createMultimap()
var registeredExtensionsSize: Int = 0
@@ -170,12 +175,13 @@ class FirExtensionsService(
}
}
val FirSession.extensionsService: FirExtensionsService by FirSession.sessionComponentAccessor()
@Deprecated("")
val FirSession.oldExtensionsService: FirOldExtensionsService by FirSession.sessionComponentAccessor()
fun FirAnnotationCall.fqName(session: FirSession): FqName? {
val symbol = session.firSymbolProvider.getSymbolByTypeRef<FirRegularClassSymbol>(annotationTypeRef) ?: return null
return symbol.classId.asSingleFqName()
}
val FirExtensionsService.hasExtensions: Boolean
val FirOldExtensionsService.hasExtensions: Boolean
get() = registeredExtensionsSize > 0
@@ -28,7 +28,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
fun interface Factory : FirExtension.Factory<FirStatusTransformerExtension>
}
val FirExtensionsService.statusTransformerExtensions: FirExtensionsService.ExtensionsAccessor<FirStatusTransformerExtension> by FirExtensionsService.registeredExtensions()
val FirOldExtensionsService.statusTransformerExtensions: FirOldExtensionsService.ExtensionsAccessor<FirStatusTransformerExtension> by FirOldExtensionsService.registeredExtensions()
inline fun FirDeclarationStatus.transform(
visibility: Visibility = this.visibility,
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.statusTransformerExtensions
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.compose
@@ -165,7 +165,7 @@ class FirStatusResolveTransformer(
private fun <D> prepareStatus(declaration: D, status: FirDeclarationStatus): FirDeclarationStatus where D : FirDeclaration, D : FirAnnotationContainer {
var result = status
session.extensionsService.statusTransformerExtensions.forDeclaration(declaration, classes).forEach {
session.oldExtensionsService.statusTransformerExtensions.forDeclaration(declaration, classes).forEach {
result = it.transformStatus(declaration, status)
}
return result
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.extensions.FirClassGenerationExtension
import org.jetbrains.kotlin.fir.extensions.classGenerationExtensions
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.hasExtensions
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer
@@ -22,7 +22,7 @@ class FirFirstGenerationTransformer : FirDefaultTransformer<Nothing?>() {
private lateinit var session: FirSession
private val generatedDeclarations: MutableList<FirClassGenerationExtension.GeneratedClass> = mutableListOf()
private lateinit var file: FirFile
private val extensionPointService get() = session.extensionsService
private val extensionPointService get() = session.oldExtensionsService
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
session = file.session
@@ -33,7 +33,7 @@ class FirPluginAnnotationsResolveTransformer(
private val annotationTransformer = FirAnnotationResolveTransformer(session, scopeSession)
private val importTransformer = FirPartialImportResolveTransformer(session)
private val extensionPointService = session.extensionsService
val extensionPointService = session.oldExtensionsService
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
throw IllegalStateException("Should not be here")
@@ -26,9 +26,9 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.extensions.FirOldExtensionsService
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -80,7 +80,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
builtInsModuleInfo, sessionProvider, allProjectScope, project,
environment.createPackagePartProvider(allProjectScope)
).also {
registerFirExtensions(it.extensionsService)
registerFirExtensions(it.oldExtensionsService)
}
val configToSession = modules.mapValues { (config, info) ->
@@ -89,7 +89,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
project,
moduleFiles.mapNotNull { it.ktFile })
FirJavaModuleBasedSession(info, sessionProvider, scope).also {
registerFirExtensions(it.extensionsService)
registerFirExtensions(it.oldExtensionsService)
}
}
@@ -109,7 +109,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
runAnalysis(testDataFile, files, firFilesPerSession)
}
open fun registerFirExtensions(service: FirExtensionsService) {
open fun registerFirExtensions(service: FirOldExtensionsService) {
service.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
}
@@ -9,7 +9,7 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -35,7 +35,7 @@ fun createSession(
val provider = FirProjectSessionProvider(project)
return FirJavaModuleBasedSession(moduleInfo, provider, sourceScope).also {
createSessionForDependencies(project, provider, moduleInfo, librariesScope, packagePartProvider)
it.extensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
it.oldExtensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
}
}
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
@@ -40,7 +40,7 @@ interface FirModuleResolveState {
sessionProvider.sessionCache[moduleInfo] = moduleBasedSession
}
session.also {
it.extensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
it.oldExtensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
}
}
}
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.oldExtensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -72,7 +72,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession {
val moduleInfo = module.productionSourceInfo()!!
return FirJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()).also {
it.extensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
it.oldExtensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
}
}
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.fir.plugin
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoot
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.fir.AbstractFirDiagnosticsTest
import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.extensions.FirOldExtensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions
import java.io.File
abstract class AbstractFirAllOpenDiagnosticTest : AbstractFirDiagnosticsTest() {
override fun registerFirExtensions(service: FirExtensionsService) {
override fun registerFirExtensions(service: FirOldExtensionsService) {
service.registerExtensions(FirAllOpenComponentRegistrar().configure())
}