From 4cd8e5ded2ebe99884c9f4dcd3e207782be26e0d Mon Sep 17 00:00:00 2001 From: sergeych Date: Thu, 12 Feb 2026 17:51:40 +0300 Subject: [PATCH] Block non-bytecode Statements in bytecode calls --- .../kotlin/net/sergeych/lyng/bytecode/CmdRuntime.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/CmdRuntime.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/CmdRuntime.kt index fb7c262..65f87d8 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/CmdRuntime.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/bytecode/CmdRuntime.kt @@ -1576,6 +1576,12 @@ class CmdCallDirect( ?: error("CALL_DIRECT expects ObjRef at $id") val callee = ref.value val args = frame.buildArguments(argBase, argCount) + if (callee is Statement) { + val bytecodeBody = (callee as? BytecodeBodyProvider)?.bytecodeBody() + if (callee !is BytecodeStatement && callee !is BytecodeCallable && bytecodeBody == null && isAstStatement(callee)) { + frame.ensureScope().raiseIllegalState("bytecode runtime cannot call non-bytecode Statement") + } + } val result = if (PerfFlags.SCOPE_POOL) { frame.ensureScope().withChildFrame(args) { child -> callee.callOn(child) } } else {