JVM IR: Write ACC_DEPRECATED flags

This commit is contained in:
Steven Schäfer
2019-08-08 12:14:11 +02:00
committed by Alexander Udalov
parent a90ac2438d
commit fd2ad89799
23 changed files with 56 additions and 53 deletions
@@ -1056,13 +1056,6 @@ open class WrappedFieldDescriptor(
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
}
fun wrappedSimpleFunctionDescriptorBasedOn(descriptor: SimpleFunctionDescriptor) =
if (descriptor is DescriptorWithContainerSource)
// TODO: Do we ever need annotations and source for these?
WrappedFunctionDescriptorWithContainerSource(descriptor.containerSource)
else
WrappedSimpleFunctionDescriptor(descriptor.annotations, descriptor.source)
private fun getContainingDeclaration(declaration: IrDeclarationWithName): DeclarationDescriptor {
val parent = declaration.parent
return if (parent is IrClass && parent.origin == IrDeclarationOrigin.FILE_CLASS && parent.parent is IrExternalPackageFragment) {
@@ -6,13 +6,9 @@
package org.jetbrains.kotlin.backend.common.lower
import org.jetbrains.kotlin.backend.common.*
import org.jetbrains.kotlin.backend.common.descriptors.WrappedClassConstructorDescriptor
import org.jetbrains.kotlin.backend.common.descriptors.WrappedValueParameterDescriptor
import org.jetbrains.kotlin.backend.common.descriptors.synthesizedName
import org.jetbrains.kotlin.backend.common.descriptors.wrappedSimpleFunctionDescriptorBasedOn
import org.jetbrains.kotlin.backend.common.descriptors.*
import org.jetbrains.kotlin.backend.common.ir.*
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.builders.*
import org.jetbrains.kotlin.ir.declarations.*
@@ -31,6 +27,8 @@ import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DescriptorWithContainerSource
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
// TODO: fix expect/actual default parameters
@@ -484,7 +482,7 @@ private fun IrFunction.generateDefaultsFunctionImpl(
private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarationOrigin): IrFunction {
when (irFunction) {
is IrConstructor -> {
val descriptor = WrappedClassConstructorDescriptor(irFunction.descriptor.annotations, irFunction.descriptor.source)
val descriptor = WrappedClassConstructorDescriptor()
return IrConstructorImpl(
irFunction.startOffset,
irFunction.endOffset,
@@ -502,7 +500,9 @@ private fun buildFunctionDeclaration(irFunction: IrFunction, origin: IrDeclarati
}
}
is IrSimpleFunction -> {
val descriptor = wrappedSimpleFunctionDescriptorBasedOn(irFunction.descriptor as SimpleFunctionDescriptor)
val descriptor = irFunction.descriptor.safeAs<DescriptorWithContainerSource>()?.let {
WrappedFunctionDescriptorWithContainerSource(it.containerSource)
} ?: WrappedSimpleFunctionDescriptor()
val name = Name.identifier("${irFunction.name}\$default")
return IrFunctionImpl(
@@ -11,9 +11,9 @@ import org.jetbrains.kotlin.backend.common.descriptors.WrappedSimpleFunctionDesc
import org.jetbrains.kotlin.backend.common.ir.copyTo
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
@@ -74,17 +74,16 @@ class PropertiesLowering(
private fun createSyntheticMethodForAnnotations(declaration: IrProperty, origin: IrDeclarationOrigin, name: String): IrFunctionImpl {
val descriptor = WrappedSimpleFunctionDescriptor(declaration.descriptor.annotations)
val symbol = IrSimpleFunctionSymbolImpl(descriptor)
// TODO: ACC_DEPRECATED
return IrFunctionImpl(
-1, -1, origin, symbol, Name.identifier(name),
Visibilities.PUBLIC, Modality.OPEN, context.irBuiltIns.unitType,
UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, symbol, Name.identifier(name),
declaration.visibility, Modality.OPEN, context.irBuiltIns.unitType,
isInline = false, isExternal = false, isTailrec = false, isSuspend = false
).apply {
descriptor.bind(this)
extensionReceiverParameter = declaration.getter?.extensionReceiverParameter?.copyTo(this)
body = IrBlockBodyImpl(-1, -1)
body = IrBlockBodyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
annotations.addAll(declaration.annotations)
metadata = declaration.metadata