[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
@@ -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")