IR: make DescriptorMetadataSource a subtype of MetadataSource

FirMetadataSource is a metadata source too.
This commit is contained in:
pyos
2020-09-15 13:43:21 +02:00
committed by Alexander Udalov
parent 86cc5840ed
commit a06181771f
18 changed files with 83 additions and 106 deletions
@@ -51,7 +51,7 @@ class FirJvmClassCodegen(
private val serializer: FirElementSerializer? =
when (val metadata = irClass.metadata) {
is FirMetadataSource.Class -> FirElementSerializer.create(
metadata.klass, serializerExtension, (parentClassCodegen as? FirJvmClassCodegen)?.serializer
metadata.fir, serializerExtension, (parentClassCodegen as? FirJvmClassCodegen)?.serializer
)
is FirMetadataSource.File -> FirElementSerializer.createTopLevel(session, serializerExtension)
is FirMetadataSource.Function -> FirElementSerializer.createForLambda(session, serializerExtension)
@@ -107,7 +107,7 @@ class FirJvmClassCodegen(
when (val metadata = irClass.metadata) {
is FirMetadataSource.Class -> {
val classProto = serializer!!.classProto(metadata.klass).build()
val classProto = serializer!!.classProto(metadata.fir).build()
writeKotlinMetadata(visitor, state, KotlinClassHeader.Kind.CLASS, extraFlags) {
AsmUtil.writeAnnotationData(it, classProto, serializer.stringTable as JvmStringTable)
}
@@ -118,7 +118,7 @@ class FirJvmClassCodegen(
}
is FirMetadataSource.File -> {
val packageFqName = irClass.getPackageFragment()!!.fqName
val packageProto = serializer!!.packagePartProto(packageFqName, metadata.file)
val packageProto = serializer!!.packagePartProto(packageFqName, metadata.fir)
serializerExtension.serializeJvmPackage(packageProto, type)
@@ -137,7 +137,7 @@ class FirJvmClassCodegen(
}
}
is FirMetadataSource.Function -> {
val fakeAnonymousFunction = metadata.function.copyToFreeAnonymousFunction()
val fakeAnonymousFunction = metadata.fir.copyToFreeAnonymousFunction()
val functionProto = serializer!!.functionProto(fakeAnonymousFunction)?.build()
writeKotlinMetadata(visitor, state, KotlinClassHeader.Kind.SYNTHETIC_CLASS, extraFlags) {
if (functionProto != null) {
@@ -164,18 +164,18 @@ class FirJvmClassCodegen(
override fun bindMethodMetadata(method: IrFunction, signature: Method) {
when (val metadata = method.metadata) {
is FirMetadataSource.Variable -> {
is FirMetadataSource.Property -> {
// We can't check for JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_ANNOTATIONS because for interface methods
// moved to DefaultImpls, origin is changed to DEFAULT_IMPLS
// TODO: fix origin somehow, because otherwise $annotations methods in interfaces also don't have ACC_SYNTHETIC
assert(method.name.asString().endsWith(JvmAbi.ANNOTATED_PROPERTY_METHOD_NAME_SUFFIX)) { method.dump() }
state.globalSerializationBindings.put(
FirJvmSerializerExtension.SYNTHETIC_METHOD_FOR_FIR_VARIABLE, metadata.variable, signature
FirJvmSerializerExtension.SYNTHETIC_METHOD_FOR_FIR_VARIABLE, metadata.fir, signature
)
}
is FirMetadataSource.Function -> {
visitor.serializationBindings.put(FirJvmSerializerExtension.METHOD_FOR_FIR_FUNCTION, metadata.function, signature)
visitor.serializationBindings.put(FirJvmSerializerExtension.METHOD_FOR_FIR_FUNCTION, metadata.fir, signature)
}
null -> {
}
@@ -188,7 +188,7 @@ class FirJvmClassCodegen(
override fun bindFieldMetadata(field: IrField, fieldType: Type, fieldName: String) {
val metadata = field.metadata
if (metadata is FirMetadataSource.Property) {
state.globalSerializationBindings.put(FirJvmSerializerExtension.FIELD_FOR_PROPERTY, metadata.property, fieldType to fieldName)
state.globalSerializationBindings.put(FirJvmSerializerExtension.FIELD_FOR_PROPERTY, metadata.fir, fieldType to fieldName)
}
}
}
@@ -82,7 +82,7 @@ class FirJvmSerializerExtension @JvmOverloads constructor(
versionRequirementTable: MutableVersionRequirementTable,
childSerializer: FirElementSerializer
) {
assert((irClass.metadata as FirMetadataSource.Class).klass == klass)
assert((irClass.metadata as FirMetadataSource.Class).fir == klass)
if (moduleName != JvmProtoBufUtil.DEFAULT_MODULE_NAME) {
proto.setExtension(JvmProtoBuf.classModuleName, stringTable.getStringIndex(moduleName))
}
@@ -672,7 +672,7 @@ class Fir2IrDeclarationStorage(
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE,
containerSource = property.containerSource,
).apply {
metadata = FirMetadataSource.Variable(property)
metadata = FirMetadataSource.Property(property)
convertAnnotationsFromLibrary(property)
enterScope(this)
if (irParent != null) {
@@ -791,7 +791,6 @@ class Fir2IrDeclarationStorage(
isExternal = false,
isStatic = field.isStatic
).apply {
metadata = FirMetadataSource.Variable(field)
descriptor.bind(this)
fieldCache[field] = this
}
@@ -98,7 +98,7 @@ class Fir2IrVisitor(
it.accept(this@Fir2IrVisitor, data) as? IrConstructorCall
}
metadata = FirMetadataSource.File(file, components.session)
metadata = FirMetadataSource.File(file)
}
}
@@ -10,55 +10,26 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.ir.declarations.MetadataSource
import org.jetbrains.kotlin.name.Name
interface FirMetadataSource : MetadataSource {
sealed class FirMetadataSource : MetadataSource {
abstract val fir: FirDeclaration
val session: FirSession
get() = fir.session
class File(
val file: FirFile, override val session: FirSession
) : MetadataSource.File(emptyList()), FirMetadataSource
override val name: Name?
get() = when (val fir = fir) {
is FirConstructor -> Name.special("<init>")
is FirSimpleFunction -> fir.name
is FirRegularClass -> fir.name
is FirProperty -> fir.name
else -> null
}
class Class(
val klass: FirClass<*>
) : FirMetadataSource {
override val session: FirSession
get() = klass.session
class File(override val fir: FirFile) : FirMetadataSource(), MetadataSource.File
override val name: Name?
get() = (klass as? FirRegularClass)?.name
}
class Class(override val fir: FirClass<*>) : FirMetadataSource(), MetadataSource.Class
class Function(
val function: FirFunction<*>
) : FirMetadataSource {
override val session: FirSession
get() = function.session
class Function(override val fir: FirFunction<*>) : FirMetadataSource(), MetadataSource.Function
override val name: Name?
get() = when (function) {
is FirSimpleFunction -> function.name
is FirConstructor -> Name.special("<init>")
else -> null
}
}
class Property(
val property: FirProperty
) : FirMetadataSource {
override val session: FirSession
get() = property.session
override val name: Name
get() = property.name
}
class Variable(
val variable: FirVariable<*>
) : FirMetadataSource {
override val session: FirSession
get() = variable.session
override val name: Name
get() = variable.name
}
class Property(override val fir: FirProperty) : FirMetadataSource(), MetadataSource.Property
}
@@ -11,10 +11,10 @@ import org.jetbrains.kotlin.codegen.*
import org.jetbrains.kotlin.codegen.binding.CodegenBinding
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings
import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrField
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.MetadataSource
import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
@@ -32,11 +32,11 @@ class DescriptorBasedClassCodegen internal constructor(
private val serializerExtension = JvmSerializerExtension(visitor.serializationBindings, state, typeMapper)
private val serializer: DescriptorSerializer? =
when (val metadata = irClass.metadata) {
is MetadataSource.Class -> DescriptorSerializer.create(
is DescriptorMetadataSource.Class -> DescriptorSerializer.create(
metadata.descriptor, serializerExtension, (parentClassCodegen as? DescriptorBasedClassCodegen)?.serializer
)
is MetadataSource.File -> DescriptorSerializer.createTopLevel(serializerExtension)
is MetadataSource.Function -> DescriptorSerializer.createForLambda(serializerExtension)
is DescriptorMetadataSource.File -> DescriptorSerializer.createTopLevel(serializerExtension)
is DescriptorMetadataSource.Function -> DescriptorSerializer.createForLambda(serializerExtension)
else -> null
}
@@ -47,7 +47,7 @@ class DescriptorBasedClassCodegen internal constructor(
state.bindingTrace.record(
CodegenBinding.DELEGATED_PROPERTIES_WITH_METADATA,
type,
localDelegatedProperties.mapNotNull { (it.owner.metadata as? MetadataSource.LocalDelegatedProperty)?.descriptor }
localDelegatedProperties.mapNotNull { (it.owner.metadata as? DescriptorMetadataSource.LocalDelegatedProperty)?.descriptor }
)
}
@@ -58,7 +58,7 @@ class DescriptorBasedClassCodegen internal constructor(
}
when (val metadata = irClass.metadata) {
is MetadataSource.Class -> {
is DescriptorMetadataSource.Class -> {
val classProto = serializer!!.classProto(metadata.descriptor).build()
writeKotlinMetadata(visitor, state, KotlinClassHeader.Kind.CLASS, extraFlags) {
AsmUtil.writeAnnotationData(it, serializer, classProto)
@@ -68,7 +68,7 @@ class DescriptorBasedClassCodegen internal constructor(
"JvmPackageName is not supported for classes: ${irClass.render()}"
}
}
is MetadataSource.File -> {
is DescriptorMetadataSource.File -> {
val packageFqName = irClass.getPackageFragment()!!.fqName
val packageProto = serializer!!.packagePartProto(packageFqName, metadata.descriptors)
@@ -88,7 +88,7 @@ class DescriptorBasedClassCodegen internal constructor(
}
}
}
is MetadataSource.Function -> {
is DescriptorMetadataSource.Function -> {
val fakeDescriptor = createFreeFakeLambdaDescriptor(metadata.descriptor, state.typeApproximator)
val functionProto = serializer!!.functionProto(fakeDescriptor)?.build()
writeKotlinMetadata(visitor, state, KotlinClassHeader.Kind.SYNTHETIC_CLASS, extraFlags) {
@@ -116,7 +116,7 @@ class DescriptorBasedClassCodegen internal constructor(
override fun bindMethodMetadata(method: IrFunction, signature: Method) {
when (val metadata = method.metadata) {
is MetadataSource.Property -> {
is DescriptorMetadataSource.Property -> {
// We can't check for JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_ANNOTATIONS because for interface methods
// moved to DefaultImpls, origin is changed to DEFAULT_IMPLS
// TODO: fix origin somehow, because otherwise $annotations methods in interfaces also don't have ACC_SYNTHETIC
@@ -126,7 +126,7 @@ class DescriptorBasedClassCodegen internal constructor(
JvmSerializationBindings.SYNTHETIC_METHOD_FOR_PROPERTY, metadata.descriptor, signature
)
}
is MetadataSource.Function -> {
is DescriptorMetadataSource.Function -> {
visitor.serializationBindings.put(JvmSerializationBindings.METHOD_FOR_FUNCTION, metadata.descriptor, signature)
}
null -> {
@@ -136,7 +136,7 @@ class DescriptorBasedClassCodegen internal constructor(
}
override fun bindFieldMetadata(field: IrField, fieldType: Type, fieldName: String) {
val descriptor = (field.metadata as? MetadataSource.Property)?.descriptor
val descriptor = (field.metadata as? DescriptorMetadataSource.Property)?.descriptor
if (descriptor != null) {
state.globalSerializationBindings.put(JvmSerializationBindings.FIELD_FOR_PROPERTY, descriptor, fieldType to fieldName)
}
@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
import java.util.*
internal val fileClassPhase = makeIrModulePhase(
@@ -67,7 +66,8 @@ private class FileClassLowering(val context: JvmBackendContext) : FileLoweringPa
fileClassMembers.add(it)
}
if (fileClassMembers.isEmpty() && (irFile.metadata as? MetadataSource.File)?.descriptors.isNullOrEmpty()) return
// TODO FirMetadataSource.File
if (fileClassMembers.isEmpty() && (irFile.metadata as? DescriptorMetadataSource.File)?.descriptors.isNullOrEmpty()) return
val irFileClass = createFileClass(irFile, fileClassMembers)
classes.add(irFileClass)
@@ -9,9 +9,9 @@ import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.backend.common.phaser.makeIrModulePhase
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
import org.jetbrains.kotlin.backend.jvm.codegen.isOptionalAnnotationClass
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.MetadataSource
internal val processOptionalAnnotationsPhase = makeIrModulePhase(
::ProcessOptionalAnnotations,
@@ -23,7 +23,8 @@ class ProcessOptionalAnnotations(private val context: JvmBackendContext) : FileL
override fun lower(irFile: IrFile) {
for (declaration in irFile.declarations) {
if (declaration !is IrClass || !declaration.isOptionalAnnotationClass()) continue
val metadataSource = (declaration.metadata as? MetadataSource.Class)?.descriptor ?: continue
// TODO FirMetadataSource.Class
val metadataSource = (declaration.metadata as? DescriptorMetadataSource.Class)?.descriptor ?: continue
context.state.factory.packagePartRegistry.optionalAnnotations += metadataSource
}
}
@@ -91,7 +91,7 @@ class ClassGenerator(
startOffset, endOffset, IrDeclarationOrigin.DEFINED, it, classDescriptor,
context.symbolTable.nameProvider.nameForDeclaration(classDescriptor), visibility, modality
).apply {
metadata = MetadataSource.Class(it.descriptor)
metadata = DescriptorMetadataSource.Class(it.descriptor)
}
}.buildWithScope { irClass ->
declarationGenerator.generateGlobalTypeParametersDeclarations(irClass, classDescriptor.declaredTypeParameters)
@@ -136,7 +136,7 @@ class DelegatedPropertyGenerator(declarationGenerator: DeclarationGenerator) : D
startOffset, endOffset, origin, it, delegateDescriptor.name, type, delegateDescriptor.visibility,
!delegateDescriptor.isVar, false, delegateDescriptor.dispatchReceiverParameter == null
).apply {
metadata = MetadataSource.Property(propertyDescriptor)
metadata = DescriptorMetadataSource.Property(propertyDescriptor)
}
}.also { irDelegate ->
irDelegate.initializer = generateInitializerBodyForPropertyDelegate(
@@ -260,7 +260,7 @@ class FunctionGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
visibility, IrUninitializedType, isInline, isEffectivelyExternal(), isPrimary, isExpect
)
}.apply {
metadata = MetadataSource.Function(it.descriptor)
metadata = DescriptorMetadataSource.Function(it.descriptor)
}
}.buildWithScope { irConstructor ->
generateValueParameterDeclarations(irConstructor, ktParametersElement, null)
@@ -17,9 +17,9 @@
package org.jetbrains.kotlin.psi2ir.generators
import org.jetbrains.kotlin.backend.common.CodegenUtil
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.declarations.MetadataSource
import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl
import org.jetbrains.kotlin.ir.linkage.IrDeserializer
@@ -91,7 +91,7 @@ class ModuleGenerator(override val context: GeneratorContext) : Generator {
val fileEntry = context.sourceManager.getOrCreateFileEntry(ktFile)
val packageFragmentDescriptor = context.moduleDescriptor.findPackageFragmentForFile(ktFile)!!
val irFile = IrFileImpl(fileEntry, packageFragmentDescriptor).apply {
metadata = MetadataSource.File(CodegenUtil.getMemberDescriptorsToGenerate(ktFile, context.bindingContext))
metadata = DescriptorMetadataSource.File(CodegenUtil.getMemberDescriptorsToGenerate(ktFile, context.bindingContext))
}
context.sourceManager.putFileEntry(irFile, fileEntry)
return irFile
@@ -22,10 +22,10 @@ import org.jetbrains.kotlin.builtins.isKFunctionType
import org.jetbrains.kotlin.builtins.isKSuspendFunctionType
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.IrValueParameter
import org.jetbrains.kotlin.ir.declarations.MetadataSource
import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor
import org.jetbrains.kotlin.ir.descriptors.WrappedValueParameterDescriptor
import org.jetbrains.kotlin.ir.expressions.*
@@ -350,7 +350,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
adapterFunctionDescriptor.bind(irAdapterFun)
context.symbolTable.withScope(adapterFunctionDescriptor) {
irAdapterFun.metadata = MetadataSource.Function(adapteeDescriptor)
irAdapterFun.metadata = DescriptorMetadataSource.Function(adapteeDescriptor)
irAdapterFun.dispatchReceiverParameter = null
@@ -80,7 +80,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) {
val irClass = irFactory.createIrClassFromDescriptor(startOffset, endOffset, origin, symbol, descriptor)
symbolTable.withScope(irClass) {
irClass.metadata = MetadataSource.Class(descriptor)
irClass.metadata = DescriptorMetadataSource.Class(descriptor)
generateGlobalTypeParametersDeclarations(irClass, descriptor.declaredTypeParameters)
irClass.superTypes = descriptor.typeConstructor.supertypes.map {
@@ -166,7 +166,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) {
isEffectivelyExternal(), isPrimary, isExpect
)
}
irConstructor.metadata = MetadataSource.Function(descriptor)
irConstructor.metadata = DescriptorMetadataSource.Function(descriptor)
symbolTable.withScope(irConstructor) {
val ctorTypeParameters = descriptor.typeParameters.filter { it.containingDeclaration === descriptor }
@@ -192,7 +192,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) {
isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect
)
}
irFunction.metadata = MetadataSource.Function(descriptor)
irFunction.metadata = DescriptorMetadataSource.Function(descriptor)
symbolTable.withScope(descriptor) {
generateOverridenSymbols(irFunction, descriptor.overriddenDescriptors)
@@ -220,7 +220,7 @@ class StandaloneDeclarationGenerator(private val context: GeneratorContext) {
isExpect = descriptor.isExpect
)
irProperty.metadata = MetadataSource.Property(descriptor)
irProperty.metadata = DescriptorMetadataSource.Property(descriptor)
return irProperty
}
@@ -11,21 +11,27 @@ import org.jetbrains.kotlin.name.Name
interface MetadataSource {
val name: Name?
abstract class DescriptorBased<D : DeclarationDescriptor> internal constructor(val descriptor: D) : MetadataSource {
override val name: Name
get() = descriptor.name
}
class Class(descriptor: ClassDescriptor) : DescriptorBased<ClassDescriptor>(descriptor)
open class File(val descriptors: List<DeclarationDescriptor>) : MetadataSource {
override val name: Name?
get() = null
}
class Function(descriptor: FunctionDescriptor) : DescriptorBased<FunctionDescriptor>(descriptor)
class Property(descriptor: PropertyDescriptor) : DescriptorBased<PropertyDescriptor>(descriptor)
class LocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) : DescriptorBased<VariableDescriptorWithAccessors>(descriptor)
interface File : MetadataSource
interface Class : MetadataSource
interface Function : MetadataSource
interface Property : MetadataSource
}
sealed class DescriptorMetadataSource : MetadataSource {
open val descriptor: Named?
get() = null
override val name: Name?
get() = descriptor?.name
class File(val descriptors: List<DeclarationDescriptor>) : DescriptorMetadataSource(), MetadataSource.File
class Class(override val descriptor: ClassDescriptor) : DescriptorMetadataSource(), MetadataSource.Class
class Function(override val descriptor: FunctionDescriptor) : DescriptorMetadataSource(), MetadataSource.Function
class Property(override val descriptor: PropertyDescriptor) : DescriptorMetadataSource(), MetadataSource.Property
class LocalDelegatedProperty(override val descriptor: VariableDescriptorWithAccessors) : DescriptorMetadataSource(),
MetadataSource.Property
}
@@ -589,7 +589,7 @@ class SymbolTable(
visibility ?: it.descriptor.visibility, !it.descriptor.isVar, it.descriptor.isEffectivelyExternal(),
it.descriptor.dispatchReceiverParameter == null
).apply {
metadata = MetadataSource.Property(it.descriptor)
metadata = DescriptorMetadataSource.Property(it.descriptor)
}
}
): IrField =
@@ -662,7 +662,7 @@ class SymbolTable(
isExternal = descriptor.isEffectivelyExternal(),
isExpect = descriptor.isExpect
).apply {
metadata = MetadataSource.Property(symbol.descriptor)
metadata = DescriptorMetadataSource.Property(symbol.descriptor)
}
}
): IrProperty =
@@ -978,7 +978,7 @@ class SymbolTable(
{ IrLocalDelegatedPropertySymbolImpl(descriptor) },
factory
).apply {
metadata = MetadataSource.LocalDelegatedProperty(descriptor)
metadata = DescriptorMetadataSource.LocalDelegatedProperty(descriptor)
}
fun referenceLocalDelegatedProperty(descriptor: VariableDescriptorWithAccessors) =
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.ir.util
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.DescriptorMetadataSource
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.MetadataSource
import org.jetbrains.kotlin.ir.types.impl.IrUninitializedType
@ObsoleteDescriptorBasedAPI
@@ -25,7 +25,7 @@ fun SymbolTable.declareSimpleFunctionWithOverrides(
startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(this),
visibility, modality, IrUninitializedType, isInline, isExternal, isTailrec, isSuspend, isOperator, isInfix, isExpect
).also { declaration ->
declaration.metadata = MetadataSource.Function(this)
declaration.metadata = DescriptorMetadataSource.Function(this)
}
}
}.also { declaration ->
@@ -123,7 +123,7 @@ class ParcelableIrTransformer(private val context: IrPluginContext, private val
irExprBody(irInt(flags))
}
metadata = MetadataSource.Function(
metadata = DescriptorMetadataSource.Function(
declaration.descriptor.findFunction(ParcelableSyntheticComponent.ComponentKind.DESCRIBE_CONTENTS)!!
)
}
@@ -178,7 +178,7 @@ class ParcelableIrTransformer(private val context: IrPluginContext, private val
}
}
metadata = MetadataSource.Function(
metadata = DescriptorMetadataSource.Function(
declaration.descriptor.findFunction(ParcelableSyntheticComponent.ComponentKind.WRITE_TO_PARCEL)!!
)
}