[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.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
|
||||
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
class ParcelableIrGeneratorExtension : org.jetbrains.kotlin.backend.common.extensions.PureIrGenerationExtension {
|
||||
override fun generate(moduleFragment: IrModuleFragment, context: CommonBackendContext) {
|
||||
val arrayOfNulls = context.ir.symbols.arrayOfNulls
|
||||
val charSequence = context.ir.symbols.charSequence
|
||||
val androidSymbols = AndroidSymbols(context.irBuiltIns, arrayOfNulls, charSequence, moduleFragment)
|
||||
ParcelableIrTransformer(context, androidSymbols).transform(moduleFragment)
|
||||
class ParcelableIrGeneratorExtension : IrGenerationExtension {
|
||||
override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) {
|
||||
val arrayOfNulls = pluginContext.symbols.arrayOfNulls
|
||||
val charSequence = pluginContext.symbols.charSequence
|
||||
val androidSymbols = AndroidSymbols(pluginContext.irBuiltIns, arrayOfNulls, charSequence, moduleFragment)
|
||||
ParcelableIrTransformer(pluginContext, 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.ParcelableSyntheticComponent
|
||||
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.lower.createIrBuilder
|
||||
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
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.impl.IrCallImpl
|
||||
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.util.*
|
||||
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.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 {
|
||||
private val serializerFactory = IrParcelSerializerFactory(androidSymbols)
|
||||
|
||||
private val deferredOperations = mutableListOf<() -> Unit>()
|
||||
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>()
|
||||
|
||||
fun transform(moduleFragment: IrModuleFragment) {
|
||||
|
||||
+1
-4
@@ -104,10 +104,7 @@ class AndroidComponentRegistrar : ComponentRegistrar {
|
||||
companion object {
|
||||
fun registerParcelExtensions(project: Project) {
|
||||
ExpressionCodegenExtension.registerExtension(project, ParcelableCodegenExtension())
|
||||
@Suppress("DEPRECATION_ERROR")
|
||||
org.jetbrains.kotlin.backend.common.extensions.PureIrGenerationExtension.registerExtension(
|
||||
project, ParcelableIrGeneratorExtension()
|
||||
)
|
||||
IrGenerationExtension.registerExtension(project, ParcelableIrGeneratorExtension())
|
||||
SyntheticResolveExtension.registerExtension(project, ParcelableResolveExtension())
|
||||
ClassBuilderInterceptorExtension.registerExtension(project, ParcelableClinitClassBuilderInterceptorExtension())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user