[FIR] Rename FirExtensionPoint to FirExtension

Also rename `FirExtensionPointService` to `FirExtensionsService`
This commit is contained in:
Dmitriy Novozhilov
2020-05-08 11:14:34 +03:00
parent a1e719a127
commit 4eb9eb0537
15 changed files with 53 additions and 57 deletions
@@ -54,7 +54,7 @@ import org.jetbrains.kotlin.fir.backend.Fir2IrConverter
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen import org.jetbrains.kotlin.fir.backend.jvm.FirJvmClassCodegen
import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -326,7 +326,7 @@ object KotlinToJVMBytecodeCompiler {
dependenciesInfo, provider, librariesScope, dependenciesInfo, provider, librariesScope,
project, environment.createPackagePartProvider(librariesScope) project, environment.createPackagePartProvider(librariesScope)
) )
it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) it.extensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
} }
val firProvider = (session.firProvider as FirProviderImpl) val firProvider = (session.firProvider as FirProviderImpl)
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false) val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider, stubMode = false)
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.FirModuleBasedSession
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionBase import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.FirSessionProvider import org.jetbrains.kotlin.fir.FirSessionProvider
import org.jetbrains.kotlin.fir.extensions.FirExtensionPointService import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
import org.jetbrains.kotlin.fir.resolve.FirProvider import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
@@ -116,8 +116,8 @@ class FirLibrarySession private constructor(
) )
registerComponent( registerComponent(
FirExtensionPointService::class, FirExtensionsService::class,
FirExtensionPointService(this) FirExtensionsService(this)
) )
sessionProvider.sessionCache[moduleInfo] = this sessionProvider.sessionCache[moduleInfo] = this
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.fir package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.fir.extensions.FirExtensionPointService import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.impl.* import org.jetbrains.kotlin.fir.resolve.impl.*
import org.jetbrains.kotlin.fir.scopes.impl.FirDeclaredMemberScopeProvider 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(FirQualifierResolver::class, FirQualifierResolverImpl(this))
registerComponent(FirTypeResolver::class, FirTypeResolverImpl(this)) registerComponent(FirTypeResolver::class, FirTypeResolverImpl(this))
registerComponent(FirDeclaredMemberScopeProvider::class, FirDeclaredMemberScopeProvider()) registerComponent(FirDeclaredMemberScopeProvider::class, FirDeclaredMemberScopeProvider())
registerComponent(FirExtensionPointService::class, FirExtensionPointService(this)) registerComponent(FirExtensionsService::class, FirExtensionsService(this))
} }
} }
@@ -17,7 +17,7 @@ import kotlin.reflect.KClass
* - add registration of new files * - add registration of new files
* - check that annotations or meta-annotations is not empty * - check that annotations or meta-annotations is not empty
*/ */
abstract class FirClassGenerationExtension(session: FirSession) : FirExtensionPoint(session) { abstract class FirClassGenerationExtension(session: FirSession) : FirExtension(session) {
companion object { companion object {
val NAME = FirExtensionPointName("StatusTransformer") val NAME = FirExtensionPointName("StatusTransformer")
} }
@@ -27,7 +27,7 @@ abstract class FirClassGenerationExtension(session: FirSession) : FirExtensionPo
final override val mode: Mode = Mode.ANNOTATED_ELEMENT final override val mode: Mode = Mode.ANNOTATED_ELEMENT
final override val extensionType: KClass<out FirExtensionPoint> = FirClassGenerationExtension::class final override val extensionType: KClass<out FirExtension> = FirClassGenerationExtension::class
abstract fun <T> generateClass( abstract fun <T> generateClass(
containingFile: FirFile, containingFile: FirFile,
@@ -40,7 +40,7 @@ abstract class FirClassGenerationExtension(session: FirSession) : FirExtensionPo
} }
} }
fun interface Factory : FirExtensionPoint.Factory<FirClassGenerationExtension> fun interface Factory : FirExtension.Factory<FirClassGenerationExtension>
} }
val FirExtensionPointService.classGenerationExtensions: FirExtensionPointService.ExtensionsAccessor<FirClassGenerationExtension> by FirExtensionPointService.registeredExtensions() val FirExtensionsService.classGenerationExtensions: FirExtensionsService.ExtensionsAccessor<FirClassGenerationExtension> by FirExtensionsService.registeredExtensions()
@@ -13,7 +13,7 @@ import kotlin.reflect.KClass
typealias AnnotationFqn = FqName typealias AnnotationFqn = FqName
abstract class FirExtensionPoint(val session: FirSession) { abstract class FirExtension(val session: FirSession) {
abstract val name: FirExtensionPointName abstract val name: FirExtensionPointName
abstract val directlyApplicableAnnotations: Set<AnnotationFqn> abstract val directlyApplicableAnnotations: Set<AnnotationFqn>
@@ -23,9 +23,9 @@ abstract class FirExtensionPoint(val session: FirSession) {
abstract val mode: Mode abstract val mode: Mode
abstract val key: FirPluginKey abstract val key: FirPluginKey
internal abstract val extensionType: KClass<out FirExtensionPoint> internal abstract val extensionType: KClass<out FirExtension>
fun interface Factory<P : FirExtensionPoint> { fun interface Factory<P : FirExtension> {
fun create(session: FirSession): P fun create(session: FirSession): P
} }
@@ -49,7 +49,7 @@ abstract class FirExtensionRegistrar {
} }
} }
fun FirExtensionPointService.registerExtensions(extensions: FirExtensionRegistrar.RegisteredExtensions) { fun FirExtensionsService.registerExtensions(extensions: FirExtensionRegistrar.RegisteredExtensions) {
registerExtensions(FirStatusTransformerExtension::class, extensions.statusTransformerExtensions) registerExtensions(FirStatusTransformerExtension::class, extensions.statusTransformerExtensions)
registerExtensions(FirClassGenerationExtension::class, extensions.classGenerationExtensions) registerExtensions(FirClassGenerationExtension::class, extensions.classGenerationExtensions)
} }
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionComponent import org.jetbrains.kotlin.fir.FirSessionComponent
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirPluginKey import org.jetbrains.kotlin.fir.declarations.FirPluginKey
import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.FirRegularClass
@@ -25,7 +24,7 @@ import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KClass import kotlin.reflect.KClass
import kotlin.reflect.KProperty import kotlin.reflect.KProperty
class FirRegisteredExtension<P : FirExtensionPoint>( class FirRegisteredExtension<P : FirExtension>(
val extensionsWithAllMode: List<P>, val extensionsWithAllMode: List<P>,
val extensionsWithAnnotatedMode: Multimap<AnnotationFqn, P>, val extensionsWithAnnotatedMode: Multimap<AnnotationFqn, P>,
val extensionsWithAllInAnnotatedMode: Multimap<AnnotationFqn, P>, val extensionsWithAllInAnnotatedMode: Multimap<AnnotationFqn, P>,
@@ -36,14 +35,14 @@ class FirRegisteredExtension<P : FirExtensionPoint>(
} }
} }
class FirExtensionPointService( class FirExtensionsService(
val session: FirSession val session: FirSession
) : ComponentArrayOwner<FirExtensionPoint, FirRegisteredExtension<*>>(), FirSessionComponent { ) : ComponentArrayOwner<FirExtension, FirRegisteredExtension<*>>(), FirSessionComponent {
companion object : ComponentTypeRegistry<FirExtensionPoint, FirRegisteredExtension<*>>() { companion object : ComponentTypeRegistry<FirExtension, FirRegisteredExtension<*>>() {
inline fun <reified P : FirExtensionPoint, V : FirRegisteredExtension<P>> registeredExtensions(): ReadOnlyProperty<FirExtensionPointService, ExtensionsAccessor<P>> { inline fun <reified P : FirExtension, V : FirRegisteredExtension<P>> registeredExtensions(): ReadOnlyProperty<FirExtensionsService, ExtensionsAccessor<P>> {
val accessor = generateAccessor<V, P>(P::class) val accessor = generateAccessor<V, P>(P::class)
return object : ReadOnlyProperty<FirExtensionPointService, ExtensionsAccessor<P>> { return object : ReadOnlyProperty<FirExtensionsService, ExtensionsAccessor<P>> {
override fun getValue(thisRef: FirExtensionPointService, property: KProperty<*>): ExtensionsAccessor<P> { override fun getValue(thisRef: FirExtensionsService, property: KProperty<*>): ExtensionsAccessor<P> {
return ExtensionsAccessor(thisRef.session, accessor.getValue(thisRef, property)) return ExtensionsAccessor(thisRef.session, accessor.getValue(thisRef, property))
} }
} }
@@ -52,10 +51,10 @@ class FirExtensionPointService(
private fun <K, V> createMultimap(): Multimap<K, V> = LinkedHashMultimap.create() private fun <K, V> createMultimap(): Multimap<K, V> = LinkedHashMultimap.create()
} }
override val typeRegistry: ComponentTypeRegistry<FirExtensionPoint, FirRegisteredExtension<*>> override val typeRegistry: ComponentTypeRegistry<FirExtension, FirRegisteredExtension<*>>
get() = Companion get() = Companion
fun <P : FirExtensionPoint> registerExtensions(extensionClass: KClass<P>, extensionFactories: List<FirExtensionPoint.Factory<P>>) { fun <P : FirExtension> registerExtensions(extensionClass: KClass<P>, extensionFactories: List<FirExtension.Factory<P>>) {
registeredExtensionsSize += extensionFactories.size registeredExtensionsSize += extensionFactories.size
val extensions = extensionFactories.map { it.create(session) } val extensions = extensionFactories.map { it.create(session) }
@@ -71,7 +70,7 @@ class FirExtensionPointService(
_annotations += extension.directlyApplicableAnnotations _annotations += extension.directlyApplicableAnnotations
_annotations += extension.childrenApplicableAnnotations _annotations += extension.childrenApplicableAnnotations
when (extension.mode) { when (extension.mode) {
FirExtensionPoint.Mode.ANNOTATED_ELEMENT -> { FirExtension.Mode.ANNOTATED_ELEMENT -> {
for (annotation in extension.directlyApplicableAnnotations) { for (annotation in extension.directlyApplicableAnnotations) {
extensionsWithAnnotatedMode.put(annotation, extension) extensionsWithAnnotatedMode.put(annotation, extension)
} }
@@ -79,7 +78,7 @@ class FirExtensionPointService(
extensionsWithAllInAnnotatedMode.put(annotation, extension) extensionsWithAllInAnnotatedMode.put(annotation, extension)
} }
} }
FirExtensionPoint.Mode.ALL -> extensionsWithAllMode += extension FirExtension.Mode.ALL -> extensionsWithAllMode += extension
} }
extensionsByPlugin.put(extension.key, extension) extensionsByPlugin.put(extension.key, extension)
} }
@@ -108,12 +107,12 @@ class FirExtensionPointService(
if (metaAnnotationMode.directed) { if (metaAnnotationMode.directed) {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
(registeredExtensions.extensionsWithAnnotatedMode as Multimap<AnnotationFqn, FirExtensionPoint>).put(fqName, extension) (registeredExtensions.extensionsWithAnnotatedMode as Multimap<AnnotationFqn, FirExtension>).put(fqName, extension)
} }
if (metaAnnotationMode.children) { if (metaAnnotationMode.children) {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
(registeredExtensions.extensionsWithAllInAnnotatedMode as Multimap<AnnotationFqn, FirExtensionPoint>).put(fqName, extension) (registeredExtensions.extensionsWithAllInAnnotatedMode as Multimap<AnnotationFqn, FirExtension>).put(fqName, extension)
} }
} }
} }
@@ -127,12 +126,12 @@ class FirExtensionPointService(
get() = _metaAnnotations get() = _metaAnnotations
private val _metaAnnotations: MutableSet<AnnotationFqn> = mutableSetOf() private val _metaAnnotations: MutableSet<AnnotationFqn> = mutableSetOf()
private val extensionsWithMetaAnnotations: Multimap<AnnotationFqn, FirExtensionPoint> = createMultimap() private val extensionsWithMetaAnnotations: Multimap<AnnotationFqn, FirExtension> = createMultimap()
var registeredExtensionsSize: Int = 0 var registeredExtensionsSize: Int = 0
private set private set
class ExtensionsAccessor<P : FirExtensionPoint>( class ExtensionsAccessor<P : FirExtension>(
private val session: FirSession, private val session: FirSession,
private val extensions: FirRegisteredExtension<P> private val extensions: FirRegisteredExtension<P>
) { ) {
@@ -167,12 +166,12 @@ class FirExtensionPointService(
} }
} }
val FirSession.extensionPointService: FirExtensionPointService by FirSession.sessionComponentAccessor() val FirSession.extensionsService: FirExtensionsService by FirSession.sessionComponentAccessor()
fun FirAnnotationCall.fqName(session: FirSession): FqName? { fun FirAnnotationCall.fqName(session: FirSession): FqName? {
val symbol = session.firSymbolProvider.getSymbolByTypeRef<FirRegularClassSymbol>(annotationTypeRef) ?: return null val symbol = session.firSymbolProvider.getSymbolByTypeRef<FirRegularClassSymbol>(annotationTypeRef) ?: return null
return symbol.classId.asSingleFqName() return symbol.classId.asSingleFqName()
} }
val FirExtensionPointService.hasExtensions: Boolean val FirExtensionsService.hasExtensions: Boolean
get() = registeredExtensionsSize > 0 get() = registeredExtensionsSize > 0
@@ -10,12 +10,10 @@ import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
import org.jetbrains.kotlin.fir.declarations.FirResolvedDeclarationStatus
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
import kotlin.reflect.KClass import kotlin.reflect.KClass
abstract class FirStatusTransformerExtension(session: FirSession) : FirExtensionPoint(session) { abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension(session) {
companion object { companion object {
val NAME = FirExtensionPointName("StatusTransformer") val NAME = FirExtensionPointName("StatusTransformer")
} }
@@ -23,14 +21,14 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
final override val name: FirExtensionPointName final override val name: FirExtensionPointName
get() = NAME get() = NAME
final override val extensionType: KClass<out FirExtensionPoint> = FirStatusTransformerExtension::class final override val extensionType: KClass<out FirExtension> = FirStatusTransformerExtension::class
abstract fun transformStatus(declaration: FirDeclaration, status: FirDeclarationStatus): FirDeclarationStatus abstract fun transformStatus(declaration: FirDeclaration, status: FirDeclarationStatus): FirDeclarationStatus
fun interface Factory : FirExtensionPoint.Factory<FirStatusTransformerExtension> fun interface Factory : FirExtension.Factory<FirStatusTransformerExtension>
} }
val FirExtensionPointService.statusTransformerExtensions: FirExtensionPointService.ExtensionsAccessor<FirStatusTransformerExtension> by FirExtensionPointService.registeredExtensions() val FirExtensionsService.statusTransformerExtensions: FirExtensionsService.ExtensionsAccessor<FirStatusTransformerExtension> by FirExtensionsService.registeredExtensions()
inline fun FirDeclarationStatus.transform( inline fun FirDeclarationStatus.transform(
visibility: Visibility = this.visibility, 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.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirBlock
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.statusTransformerExtensions import org.jetbrains.kotlin.fir.extensions.statusTransformerExtensions
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirTransformer
@@ -174,7 +174,7 @@ private class FirStatusResolveTransformer(
private fun <D> prepareStatus(declaration: D, status: FirDeclarationStatus): FirDeclarationStatus where D : FirDeclaration, D : FirAnnotationContainer { private fun <D> prepareStatus(declaration: D, status: FirDeclarationStatus): FirDeclarationStatus where D : FirDeclaration, D : FirAnnotationContainer {
var result = status var result = status
session.extensionPointService.statusTransformerExtensions.forDeclaration(declaration, classes).forEach { session.extensionsService.statusTransformerExtensions.forDeclaration(declaration, classes).forEach {
result = it.transformStatus(declaration, status) result = it.transformStatus(declaration, status)
} }
return result return result
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.extensions.FirClassGenerationExtension import org.jetbrains.kotlin.fir.extensions.FirClassGenerationExtension
import org.jetbrains.kotlin.fir.extensions.classGenerationExtensions import org.jetbrains.kotlin.fir.extensions.classGenerationExtensions
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.hasExtensions import org.jetbrains.kotlin.fir.extensions.hasExtensions
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer
@@ -22,7 +22,7 @@ class FirFirstGenerationTransformer : FirDefaultTransformer<Nothing?>() {
private lateinit var session: FirSession private lateinit var session: FirSession
private val generatedDeclarations: MutableList<FirClassGenerationExtension.GeneratedClass> = mutableListOf() private val generatedDeclarations: MutableList<FirClassGenerationExtension.GeneratedClass> = mutableListOf()
private lateinit var file: FirFile private lateinit var file: FirFile
private val extensionPointService get() = session.extensionPointService private val extensionPointService get() = session.extensionsService
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> { override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
session = file.session session = file.session
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.extensions.AnnotationFqn import org.jetbrains.kotlin.fir.extensions.AnnotationFqn
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.fqName import org.jetbrains.kotlin.fir.extensions.fqName
import org.jetbrains.kotlin.fir.extensions.hasExtensions import org.jetbrains.kotlin.fir.extensions.hasExtensions
import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.ScopeSession
@@ -31,7 +31,7 @@ class FirPluginAnnotationsResolveTransformer(private val scopeSession: ScopeSess
} }
override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> { override fun transformFile(file: FirFile, data: Nothing?): CompositeTransformResult<FirDeclaration> {
val extensionPointService = file.session.extensionPointService val extensionPointService = file.session.extensionsService
if (!extensionPointService.hasExtensions) return file.compose() if (!extensionPointService.hasExtensions) return file.compose()
file.replaceResolvePhase(FirResolvePhase.ANNOTATIONS_FOR_PLUGINS) file.replaceResolvePhase(FirResolvePhase.ANNOTATIONS_FOR_PLUGINS)
val newAnnotations = file.resolveAnnotations(extensionPointService.annotations, extensionPointService.metaAnnotations) val newAnnotations = file.resolveAnnotations(extensionPointService.annotations, extensionPointService.metaAnnotations)
@@ -23,13 +23,12 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.fir.builder.RawFirBuilder import org.jetbrains.kotlin.fir.builder.RawFirBuilder
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.extensions.FirExtensionPointService import org.jetbrains.kotlin.fir.extensions.FirExtensionsService
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -81,7 +80,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
builtInsModuleInfo, sessionProvider, allProjectScope, project, builtInsModuleInfo, sessionProvider, allProjectScope, project,
environment.createPackagePartProvider(allProjectScope) environment.createPackagePartProvider(allProjectScope)
).also { ).also {
registerFirExtensions(it.extensionPointService) registerFirExtensions(it.extensionsService)
} }
val configToSession = modules.mapValues { (config, info) -> val configToSession = modules.mapValues { (config, info) ->
@@ -90,7 +89,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
project, project,
moduleFiles.mapNotNull { it.ktFile }) moduleFiles.mapNotNull { it.ktFile })
FirJavaModuleBasedSession(info, sessionProvider, scope).also { FirJavaModuleBasedSession(info, sessionProvider, scope).also {
registerFirExtensions(it.extensionPointService) registerFirExtensions(it.extensionsService)
} }
} }
@@ -110,7 +109,7 @@ abstract class AbstractFirBaseDiagnosticsTest : BaseDiagnosticsTest() {
runAnalysis(testDataFile, files, firFilesPerSession) runAnalysis(testDataFile, files, firFilesPerSession)
} }
open fun registerFirExtensions(service: FirExtensionPointService) { open fun registerFirExtensions(service: FirExtensionsService) {
service.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) service.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
} }
@@ -9,7 +9,7 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -35,7 +35,7 @@ fun createSession(
val provider = FirProjectSessionProvider(project) val provider = FirProjectSessionProvider(project)
return FirJavaModuleBasedSession(moduleInfo, provider, sourceScope).also { return FirJavaModuleBasedSession(moduleInfo, provider, sourceScope).also {
createSessionForDependencies(project, provider, moduleInfo, librariesScope, packagePartProvider) createSessionForDependencies(project, provider, moduleInfo, librariesScope, packagePartProvider)
it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) it.extensionsService.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.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
@@ -40,7 +40,7 @@ interface FirModuleResolveState {
sessionProvider.sessionCache[moduleInfo] = moduleBasedSession sessionProvider.sessionCache[moduleInfo] = moduleBasedSession
} }
session.also { session.also {
it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) it.extensionsService.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.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.extensions.extensionPointService import org.jetbrains.kotlin.fir.extensions.extensionsService
import org.jetbrains.kotlin.fir.extensions.registerExtensions import org.jetbrains.kotlin.fir.extensions.registerExtensions
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirLibrarySession import org.jetbrains.kotlin.fir.java.FirLibrarySession
@@ -72,7 +72,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() {
private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession { private fun createSession(module: Module, provider: FirProjectSessionProvider): FirJavaModuleBasedSession {
val moduleInfo = module.productionSourceInfo()!! val moduleInfo = module.productionSourceInfo()!!
return FirJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()).also { return FirJavaModuleBasedSession(moduleInfo, provider, moduleInfo.contentScope()).also {
it.extensionPointService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY) it.extensionsService.registerExtensions(FirExtensionRegistrar.RegisteredExtensions.EMPTY)
} }
} }