Annotations in IR are represented as call expressions (nothing else)

This commit is contained in:
Dmitry Petrov
2018-04-05 11:59:43 +03:00
parent 57077a5eb8
commit fdd8b7ae6c
4 changed files with 8 additions and 10 deletions
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclaration
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.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
@@ -55,7 +55,7 @@ class AnnotationGenerator(private val context: GeneratorContext) : IrElementVisi
}
}
fun generateAnnotationConstructorCall(annotationDescriptor: AnnotationDescriptor): IrExpression {
fun generateAnnotationConstructorCall(annotationDescriptor: AnnotationDescriptor): IrCall {
val annotationType = annotationDescriptor.type
val annotationClassDescriptor = annotationType.constructor.declarationDescriptor
?: throw AssertionError("No declaration descriptor for annotation $annotationDescriptor")
@@ -5,8 +5,8 @@
package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrCall
interface IrAnnotationContainer {
val annotations: MutableList<IrExpression>
val annotations: MutableList<IrCall>
}
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrCall
abstract class IrDeclarationBase(
startOffset: Int,
@@ -31,5 +31,5 @@ abstract class IrDeclarationBase(
override lateinit var parent: IrDeclarationParent
override val annotations: MutableList<IrExpression> = ArrayList()
override val annotations: MutableList<IrCall> = ArrayList()
}
@@ -22,15 +22,13 @@ import org.jetbrains.kotlin.ir.IrElementBase
import org.jetbrains.kotlin.ir.SourceManager
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.utils.SmartList
import java.util.*
import kotlin.collections.ArrayList
class IrFileImpl(
override val fileEntry: SourceManager.FileEntry,
@@ -64,7 +62,7 @@ class IrFileImpl(
override val declarations: MutableList<IrDeclaration> = ArrayList()
override val annotations: MutableList<IrExpression> = ArrayList()
override val annotations: MutableList<IrCall> = ArrayList()
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitFile(this, data)