[ANDROID] Move Parcelize plugin to general IrGenerationExtension API
This commit is contained in:
+8
-8
@@ -7,15 +7,15 @@ package org.jetbrains.kotlin.android.parcel
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.android.parcel.ir.AndroidSymbols
|
import org.jetbrains.kotlin.android.parcel.ir.AndroidSymbols
|
||||||
import org.jetbrains.kotlin.android.parcel.ir.ParcelableIrTransformer
|
import org.jetbrains.kotlin.android.parcel.ir.ParcelableIrTransformer
|
||||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
|
|
||||||
@Suppress("DEPRECATION_ERROR")
|
class ParcelableIrGeneratorExtension : IrGenerationExtension {
|
||||||
class ParcelableIrGeneratorExtension : org.jetbrains.kotlin.backend.common.extensions.PureIrGenerationExtension {
|
override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) {
|
||||||
override fun generate(moduleFragment: IrModuleFragment, context: CommonBackendContext) {
|
val arrayOfNulls = pluginContext.symbols.arrayOfNulls
|
||||||
val arrayOfNulls = context.ir.symbols.arrayOfNulls
|
val charSequence = pluginContext.symbols.charSequence
|
||||||
val charSequence = context.ir.symbols.charSequence
|
val androidSymbols = AndroidSymbols(pluginContext.irBuiltIns, arrayOfNulls, charSequence, moduleFragment)
|
||||||
val androidSymbols = AndroidSymbols(context.irBuiltIns, arrayOfNulls, charSequence, moduleFragment)
|
ParcelableIrTransformer(pluginContext, androidSymbols).transform(moduleFragment)
|
||||||
ParcelableIrTransformer(context, androidSymbols).transform(moduleFragment)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-3
@@ -9,9 +9,9 @@ import org.jetbrains.kotlin.android.parcel.ANDROID_PARCELABLE_CLASS_FQNAME
|
|||||||
import org.jetbrains.kotlin.android.parcel.PARCELER_FQNAME
|
import org.jetbrains.kotlin.android.parcel.PARCELER_FQNAME
|
||||||
import org.jetbrains.kotlin.android.parcel.ParcelableSyntheticComponent
|
import org.jetbrains.kotlin.android.parcel.ParcelableSyntheticComponent
|
||||||
import org.jetbrains.kotlin.android.parcel.serializers.ParcelableExtensionBase
|
import org.jetbrains.kotlin.android.parcel.serializers.ParcelableExtensionBase
|
||||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
|
import org.jetbrains.kotlin.backend.common.ir.createImplicitParameterDeclarationWithWrappedDescriptor
|
||||||
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
|
||||||
import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound
|
import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.expressions.IrCall
|
|||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||||
@@ -34,13 +35,16 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
class ParcelableIrTransformer(private val context: CommonBackendContext, private val androidSymbols: AndroidSymbols) :
|
class ParcelableIrTransformer(private val context: IrPluginContext, private val androidSymbols: AndroidSymbols) :
|
||||||
ParcelableExtensionBase, IrElementVisitorVoid {
|
ParcelableExtensionBase, IrElementVisitorVoid {
|
||||||
private val serializerFactory = IrParcelSerializerFactory(androidSymbols)
|
private val serializerFactory = IrParcelSerializerFactory(androidSymbols)
|
||||||
|
|
||||||
private val deferredOperations = mutableListOf<() -> Unit>()
|
private val deferredOperations = mutableListOf<() -> Unit>()
|
||||||
private fun defer(block: () -> Unit) = deferredOperations.add(block)
|
private fun defer(block: () -> Unit) = deferredOperations.add(block)
|
||||||
|
|
||||||
|
private fun IrPluginContext.createIrBuilder(symbol: IrSymbol) =
|
||||||
|
DeclarationIrBuilder(this, symbol, symbol.owner.startOffset, symbol.owner.endOffset)
|
||||||
|
|
||||||
private val symbolMap = mutableMapOf<IrFunctionSymbol, IrFunctionSymbol>()
|
private val symbolMap = mutableMapOf<IrFunctionSymbol, IrFunctionSymbol>()
|
||||||
|
|
||||||
fun transform(moduleFragment: IrModuleFragment) {
|
fun transform(moduleFragment: IrModuleFragment) {
|
||||||
|
|||||||
+1
-4
@@ -104,10 +104,7 @@ class AndroidComponentRegistrar : ComponentRegistrar {
|
|||||||
companion object {
|
companion object {
|
||||||
fun registerParcelExtensions(project: Project) {
|
fun registerParcelExtensions(project: Project) {
|
||||||
ExpressionCodegenExtension.registerExtension(project, ParcelableCodegenExtension())
|
ExpressionCodegenExtension.registerExtension(project, ParcelableCodegenExtension())
|
||||||
@Suppress("DEPRECATION_ERROR")
|
IrGenerationExtension.registerExtension(project, ParcelableIrGeneratorExtension())
|
||||||
org.jetbrains.kotlin.backend.common.extensions.PureIrGenerationExtension.registerExtension(
|
|
||||||
project, ParcelableIrGeneratorExtension()
|
|
||||||
)
|
|
||||||
SyntheticResolveExtension.registerExtension(project, ParcelableResolveExtension())
|
SyntheticResolveExtension.registerExtension(project, ParcelableResolveExtension())
|
||||||
ClassBuilderInterceptorExtension.registerExtension(project, ParcelableClinitClassBuilderInterceptorExtension())
|
ClassBuilderInterceptorExtension.registerExtension(project, ParcelableClinitClassBuilderInterceptorExtension())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user