JVM IR: generate synthetic $annotations methods for properties

This commit is contained in:
Alexander Udalov
2019-02-13 01:25:37 +01:00
parent c92c50aa98
commit d267f1e875
19 changed files with 110 additions and 57 deletions
@@ -39,7 +39,7 @@ interface IrFunction :
var body: IrBody?
override val metadata: MetadataSource.Function?
override val metadata: MetadataSource?
}
@@ -55,7 +55,7 @@ abstract class IrFunctionBase(
final override var body: IrBody? = null
override var metadata: MetadataSource.Function? = null
override var metadata: MetadataSource? = null
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) {
typeParameters.forEach { it.accept(visitor, data) }
@@ -19,10 +19,7 @@ package org.jetbrains.kotlin.ir.declarations.impl
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrField
import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.name.Name
@@ -106,9 +103,11 @@ class IrPropertyImpl(
setter?.accept(visitor, data)
}
override var metadata: MetadataSource? = null
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) {
backingField = backingField?.transform(transformer, data) as? IrField
getter = getter?.run { transform(transformer, data) as IrSimpleFunction }
setter = setter?.run { transform(transformer, data) as IrSimpleFunction }
}
}
}