[FIR] Refactor session components initialization
From now all customization of session should perform via DSL which declared in FirSessionFactory. Registration or mutation session services from other places is prohibited
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.extensions
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.SessionConfiguration
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class FirExtensionRegistrar {
|
||||
@@ -76,8 +77,14 @@ class BunchOfRegisteredExtensions @PluginServicesInitialization constructor(
|
||||
return BunchOfRegisteredExtensions(extensions)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(PluginServicesInitialization::class)
|
||||
operator fun plus(other: BunchOfRegisteredExtensions): BunchOfRegisteredExtensions {
|
||||
return BunchOfRegisteredExtensions(extensions + other.extensions)
|
||||
}
|
||||
}
|
||||
|
||||
@SessionConfiguration
|
||||
@OptIn(PluginServicesInitialization::class)
|
||||
fun FirExtensionService.registerExtensions(registeredExtensions: BunchOfRegisteredExtensions) {
|
||||
registeredExtensions.extensions.forEach { registerExtensions(it.kClass, it.extensionFactories) }
|
||||
|
||||
Reference in New Issue
Block a user