From e3fa342d5c7a2fa9554108cf5a6a3279be06545a Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Tue, 16 May 2023 13:28:28 +0200 Subject: [PATCH] [IR] Drop `WITH_ANNOTATIONS` evaluation mode in interpreter This is old mode, that was used mainly in prototype phase --- .../ir/interpreter/checker/EvaluationMode.kt | 23 ------------------- .../checker/IrCompileTimeChecker.kt | 3 +-- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt index d364e25638c..02b72f9c887 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/EvaluationMode.kt @@ -26,29 +26,6 @@ enum class EvaluationMode(protected val mustCheckBody: Boolean) { override fun canEvaluateReference(reference: IrCallableReference<*>, context: IrCall?): Boolean = true }, - WITH_ANNOTATIONS(mustCheckBody = false) { - override fun canEvaluateFunction(function: IrFunction, context: IrCall?): Boolean { - if (function.isCompileTimePropertyAccessor()) return true - return function.isMarkedAsCompileTime() || function.origin == IrBuiltIns.BUILTIN_OPERATOR || - (function is IrSimpleFunction && function.isOperator && function.name.asString() == "invoke") || - (function is IrSimpleFunction && function.isFakeOverride && function.overriddenSymbols.any { canEvaluateFunction(it.owner) }) || - function.isCompileTimeTypeAlias() - } - - private fun IrFunction?.isCompileTimePropertyAccessor(): Boolean { - val property = this?.property ?: return false - if (property.isConst) return true - if (property.isMarkedAsCompileTime() || property.isCompileTimeTypeAlias()) return true - - val backingField = property.backingField - val backingFieldExpression = backingField?.initializer?.expression as? IrGetValue - return backingFieldExpression?.origin == IrStatementOrigin.INITIALIZE_PROPERTY_FROM_PARAMETER - } - - override fun canEvaluateEnumValue(enumEntry: IrGetEnumValue, context: IrCall?): Boolean = true - override fun canEvaluateReference(reference: IrCallableReference<*>, context: IrCall?): Boolean = true - }, - ONLY_BUILTINS(mustCheckBody = false) { private val allowedMethodsOnPrimitives = setOf( "not", "unaryMinus", "unaryPlus", "inv", diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt index f35af982c33..780238a4be1 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/checker/IrCompileTimeChecker.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor class IrCompileTimeChecker( containingDeclaration: IrElement? = null, - private val mode: EvaluationMode = EvaluationMode.WITH_ANNOTATIONS, + private val mode: EvaluationMode, private val interpreterConfiguration: IrInterpreterConfiguration, ) : IrElementVisitor { private var contextExpression: IrCall? = null @@ -344,7 +344,6 @@ class IrCompileTimeChecker( return with(mode) { when (this) { EvaluationMode.FULL -> true - EvaluationMode.WITH_ANNOTATIONS -> (expression.symbol.owner as IrClass).isMarkedAsCompileTime() EvaluationMode.ONLY_BUILTINS, EvaluationMode.ONLY_INTRINSIC_CONST -> false } }