Add Scope.requireClass helper for stdlib binding

This commit is contained in:
Sergey Chernov 2026-02-15 01:45:21 +03:00
parent d8d2eff436
commit 3f2c38c471
2 changed files with 7 additions and 3 deletions

View File

@ -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}")
}
}

View File

@ -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(