IR: make IrMetadataSourceOwner.metadata mutable

To avoid casting to specific Ir*Impl elements at call sites.

Also inherit from IrMetadataSourceOwner only where it's needed: class,
file, function, property. Previously this field was always null and took
some space for things like value parameters, type parameters, etc.
This commit is contained in:
Alexander Udalov
2020-07-07 16:49:57 +02:00
parent 689887c94d
commit dbad81473e
32 changed files with 86 additions and 86 deletions
@@ -16,13 +16,12 @@ import org.jetbrains.kotlin.backend.jvm.ir.erasedUpperBound
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.builders.*
import org.jetbrains.kotlin.ir.builders.declarations.*
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
@@ -122,7 +121,7 @@ class ParcelableIrTransformer(private val context: IrPluginContext, private val
irExprBody(irInt(flags))
}
(this as IrFunctionImpl).metadata = MetadataSource.Function(
metadata = MetadataSource.Function(
declaration.descriptor.findFunction(ParcelableSyntheticComponent.ComponentKind.DESCRIBE_CONTENTS)!!
)
}
@@ -177,7 +176,7 @@ class ParcelableIrTransformer(private val context: IrPluginContext, private val
}
}
(this as IrFunctionImpl).metadata = MetadataSource.Function(
metadata = MetadataSource.Function(
declaration.descriptor.findFunction(ParcelableSyntheticComponent.ComponentKind.WRITE_TO_PARCEL)!!
)
}