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.IrField
import org.jetbrains.kotlin.ir.declarations.IrProperty import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction 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.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid 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 annotationType = annotationDescriptor.type
val annotationClassDescriptor = annotationType.constructor.declarationDescriptor val annotationClassDescriptor = annotationType.constructor.declarationDescriptor
?: throw AssertionError("No declaration descriptor for annotation $annotationDescriptor") ?: throw AssertionError("No declaration descriptor for annotation $annotationDescriptor")
@@ -5,8 +5,8 @@
package org.jetbrains.kotlin.ir.declarations package org.jetbrains.kotlin.ir.declarations
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrCall
interface IrAnnotationContainer { 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.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
import org.jetbrains.kotlin.ir.expressions.IrExpression import org.jetbrains.kotlin.ir.expressions.IrCall
abstract class IrDeclarationBase( abstract class IrDeclarationBase(
startOffset: Int, startOffset: Int,
@@ -31,5 +31,5 @@ abstract class IrDeclarationBase(
override lateinit var parent: IrDeclarationParent 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.SourceManager
import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFile 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.IrFileSymbol
import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl import org.jetbrains.kotlin.ir.symbols.impl.IrFileSymbolImpl
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.utils.SmartList import org.jetbrains.kotlin.utils.SmartList
import java.util.*
import kotlin.collections.ArrayList
class IrFileImpl( class IrFileImpl(
override val fileEntry: SourceManager.FileEntry, override val fileEntry: SourceManager.FileEntry,
@@ -64,7 +62,7 @@ class IrFileImpl(
override val declarations: MutableList<IrDeclaration> = ArrayList() 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 = override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
visitor.visitFile(this, data) visitor.visitFile(this, data)