[FIR] Add additional DSL methods to FirExtensionRegistrar
This commit is contained in:
committed by
teamcity
parent
b0c2332b4c
commit
3ee0d13119
+43
-12
@@ -36,37 +36,68 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
|
|||||||
protected abstract fun ExtensionRegistrarContext.configurePlugin()
|
protected abstract fun ExtensionRegistrarContext.configurePlugin()
|
||||||
|
|
||||||
protected inner class ExtensionRegistrarContext {
|
protected inner class ExtensionRegistrarContext {
|
||||||
|
// ------------------ factory methods ------------------
|
||||||
|
|
||||||
|
@JvmName("plusStatusTransformerExtension")
|
||||||
|
operator fun (FirStatusTransformerExtension.Factory).unaryPlus() {
|
||||||
|
registerExtension(FirStatusTransformerExtension::class, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("plusClassGenerationExtension")
|
||||||
|
operator fun (FirDeclarationGenerationExtension.Factory).unaryPlus() {
|
||||||
|
registerExtension(FirDeclarationGenerationExtension::class, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("plusAdditionalCheckersExtension")
|
||||||
|
operator fun (FirAdditionalCheckersExtension.Factory).unaryPlus() {
|
||||||
|
registerExtension(FirAdditionalCheckersExtension::class, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("plusSupertypeGenerationExtension")
|
||||||
|
operator fun (FirSupertypeGenerationExtension.Factory).unaryPlus() {
|
||||||
|
registerExtension(FirSupertypeGenerationExtension::class, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("plusTypeAttributeExtension")
|
||||||
|
operator fun (FirTypeAttributeExtension.Factory).unaryPlus() {
|
||||||
|
registerExtension(FirTypeAttributeExtension::class, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
@JvmName("plusExpressionResolutionExtension")
|
||||||
|
operator fun (FirExpressionResolutionExtension.Factory).unaryPlus() {
|
||||||
|
registerExtension(FirExpressionResolutionExtension::class, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------ reference methods ------------------
|
||||||
|
|
||||||
@JvmName("plusStatusTransformerExtension")
|
@JvmName("plusStatusTransformerExtension")
|
||||||
operator fun ((FirSession) -> FirStatusTransformerExtension).unaryPlus() {
|
operator fun ((FirSession) -> FirStatusTransformerExtension).unaryPlus() {
|
||||||
registerExtension(FirStatusTransformerExtension::class, FirStatusTransformerExtension.Factory { this.invoke(it) })
|
FirStatusTransformerExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmName("plusClassGenerationExtension")
|
@JvmName("plusClassGenerationExtension")
|
||||||
operator fun ((FirSession) -> FirDeclarationGenerationExtension).unaryPlus() {
|
operator fun ((FirSession) -> FirDeclarationGenerationExtension).unaryPlus() {
|
||||||
registerExtension(FirDeclarationGenerationExtension::class, FirDeclarationGenerationExtension.Factory { this.invoke(it) })
|
FirDeclarationGenerationExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmName("plusAdditionalCheckersExtension")
|
@JvmName("plusAdditionalCheckersExtension")
|
||||||
operator fun ((FirSession) -> FirAdditionalCheckersExtension).unaryPlus() {
|
operator fun ((FirSession) -> FirAdditionalCheckersExtension).unaryPlus() {
|
||||||
registerExtension(
|
FirAdditionalCheckersExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||||
FirAdditionalCheckersExtension::class,
|
|
||||||
FirAdditionalCheckersExtension.Factory { this.invoke(it) }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmName("plusSupertypeGenerationExtension")
|
@JvmName("plusSupertypeGenerationExtension")
|
||||||
operator fun ((FirSession) -> FirSupertypeGenerationExtension).unaryPlus() {
|
operator fun ((FirSession) -> FirSupertypeGenerationExtension).unaryPlus() {
|
||||||
registerExtension(FirSupertypeGenerationExtension::class, FirSupertypeGenerationExtension.Factory { this.invoke(it) })
|
FirSupertypeGenerationExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmName("plusTypeAttributeExtension")
|
@JvmName("plusTypeAttributeExtension")
|
||||||
operator fun ((FirSession) -> FirTypeAttributeExtension).unaryPlus() {
|
operator fun ((FirSession) -> FirTypeAttributeExtension).unaryPlus() {
|
||||||
registerExtension(FirTypeAttributeExtension::class, FirTypeAttributeExtension.Factory { this.invoke(it) })
|
FirTypeAttributeExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmName("plusExpressionResolutionExtension")
|
@JvmName("plusExpressionResolutionExtension")
|
||||||
operator fun ((FirSession) -> FirExpressionResolutionExtension).unaryPlus() {
|
operator fun ((FirSession) -> FirExpressionResolutionExtension).unaryPlus() {
|
||||||
registerExtension(FirExpressionResolutionExtension::class, FirExpressionResolutionExtension.Factory { this.invoke(it) })
|
FirExpressionResolutionExtension.Factory { this.invoke(it) }.unaryPlus()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,9 +118,9 @@ abstract class FirExtensionRegistrar : FirExtensionRegistrarAdapter() {
|
|||||||
val extensionFactories: MutableList<FirExtension.Factory<FirExtension>> = mutableListOf()
|
val extensionFactories: MutableList<FirExtension.Factory<FirExtension>> = mutableListOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val map: Map<KClass<out FirExtension>, RegisteredExtensionsFactories> = AVAILABLE_EXTENSIONS.map {
|
private val map: Map<KClass<out FirExtension>, RegisteredExtensionsFactories> = AVAILABLE_EXTENSIONS.associateWith {
|
||||||
it to RegisteredExtensionsFactories(it)
|
RegisteredExtensionsFactories(it)
|
||||||
}.toMap()
|
}
|
||||||
|
|
||||||
private var isInitialized: AtomicBoolean = AtomicBoolean(false)
|
private var isInitialized: AtomicBoolean = AtomicBoolean(false)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user