[IR] Visit file annotations in IR interpreter
#KT-55866 Fixed
This commit is contained in:
+5
@@ -22,6 +22,11 @@ internal class IrConstDeclarationAnnotationTransformer(
|
||||
onError: (IrFile, IrElement, IrErrorExpression) -> Unit,
|
||||
suppressExceptions: Boolean,
|
||||
) : IrConstAnnotationTransformer(interpreter, irFile, mode, evaluatedConstTracker, onWarning, onError, suppressExceptions) {
|
||||
override fun visitFile(declaration: IrFile, data: Nothing?): IrFile {
|
||||
transformAnnotations(declaration)
|
||||
return super.visitFile(declaration, data)
|
||||
}
|
||||
|
||||
override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): IrStatement {
|
||||
transformAnnotations(declaration)
|
||||
return super.visitDeclaration(declaration, data)
|
||||
|
||||
+2
-3
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.constant.ErrorValue
|
||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.ir.declarations.name
|
||||
import org.jetbrains.kotlin.ir.declarations.nameWithPackage
|
||||
import org.jetbrains.kotlin.ir.expressions.IrConst
|
||||
import org.jetbrains.kotlin.ir.expressions.IrErrorExpression
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.ir.interpreter.IrInterpreterConfiguration
|
||||
import org.jetbrains.kotlin.ir.interpreter.toConstantValue
|
||||
import org.jetbrains.kotlin.ir.util.dump
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
fun IrFile.transformConst(
|
||||
interpreter: IrInterpreter,
|
||||
@@ -99,7 +98,7 @@ internal abstract class IrConstTransformer(
|
||||
}
|
||||
|
||||
evaluatedConstTracker?.save(
|
||||
result.startOffset, result.endOffset, irFile.fqName.child(Name.identifier(irFile.name)).asString(),
|
||||
result.startOffset, result.endOffset, irFile.nameWithPackage,
|
||||
constant = if (result is IrErrorExpression) ErrorValue.create(result.description)
|
||||
else (result as IrConst<*>).toConstantValue()
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user