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(