[FIR] Rename FirExtensionPoint to FirExtension
Also rename `FirExtensionPointService` to `FirExtensionsService`
This commit is contained in:
+2
-2
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -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()
|
||||||
|
|||||||
+3
-3
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
+1
-1
@@ -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)
|
||||||
}
|
}
|
||||||
+17
-18
@@ -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
|
||||||
+4
-6
@@ -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,
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|||||||
+2
-2
@@ -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)
|
||||||
|
|||||||
+5
-6
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user