From 3f2c38c4719316e0c2ddfdd429dcd9ccf9e4f7b4 Mon Sep 17 00:00:00 2001 From: sergeych Date: Sun, 15 Feb 2026 01:45:21 +0300 Subject: [PATCH] Add Scope.requireClass helper for stdlib binding --- lynglib/src/commonMain/kotlin/net/sergeych/lyng/Scope.kt | 6 ++++++ lynglib/src/commonMain/kotlin/net/sergeych/lyng/Script.kt | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Scope.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Scope.kt index 828e32e..26933e2 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Scope.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Scope.kt @@ -898,4 +898,10 @@ open class Scope( fun new(): Scope = Script.defaultImportManager.copy().newModuleAt(Pos.builtIn) } + + fun requireClass(name: String): net.sergeych.lyng.obj.ObjClass { + val rec = get(name) ?: raiseSymbolNotFound(name) + return rec.value as? net.sergeych.lyng.obj.ObjClass + ?: raiseClassCastError("Expected class $name, got ${rec.value.objClass.className}") + } } diff --git a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Script.kt b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Script.kt index 2d571e9..eab188c 100644 --- a/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Script.kt +++ b/lynglib/src/commonMain/kotlin/net/sergeych/lyng/Script.kt @@ -563,9 +563,7 @@ class Script( ImportManager(rootScope, SecurityManager.allowAll).apply { addPackage("lyng.stdlib") { module -> module.eval(Source("lyng.stdlib", rootLyng)) - val cls = module["KotlinIterator"]?.value as? ObjClass - ?: module.raiseSymbolNotFound("KotlinIterator") - ObjKotlinIterator.bindTo(cls) + ObjKotlinIterator.bindTo(module.requireClass("KotlinIterator")) } addPackage("lyng.buffer") { it.addConstDoc(