From f2045b857b63ea1267ccd2467ea12d1ff08d2f57 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Thu, 11 Jun 2020 16:26:25 +0300 Subject: [PATCH] Add fix for interpretation const val After FIR2IR processing getter doesn't has body, but has initializer. On the other hand common IR has body for const val getter --- .../kotlin/backend/common/interpreter/IrInterpreter.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/IrInterpreter.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/IrInterpreter.kt index ce401e2cc20..6a1b9bf038f 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/IrInterpreter.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/IrInterpreter.kt @@ -307,7 +307,8 @@ class IrInterpreter(irModule: IrModuleFragment, private val bodyMap: Map dispatchReceiver.getMethod(irFunction).invokeMethod(irFunction) irFunction.hasAnnotation(evaluateIntrinsicAnnotation) -> Wrapper.getStaticMethod(irFunction).invokeMethod(irFunction) dispatchReceiver is Primitive<*> -> calculateBuiltIns(irFunction) // 'is Primitive' check for js char and js long - irFunction.body == null -> irFunction.trySubstituteFunctionBody() ?: calculateBuiltIns(irFunction) + irFunction.body == null -> + irFunction.trySubstituteFunctionBody() ?: irFunction.tryCalculateLazyConst() ?: calculateBuiltIns(irFunction) else -> irFunction.interpret() } }.check { return it }.implicitCastIfNeeded(expression.type, irFunction.returnType, stack) @@ -327,6 +328,12 @@ class IrInterpreter(irModule: IrModuleFragment, private val bodyMap: Map