diff --git a/library/src/commonMain/kotlin/net/sergeych/ling/Context.kt b/library/src/commonMain/kotlin/net/sergeych/ling/Context.kt index b086085..fe7953d 100644 --- a/library/src/commonMain/kotlin/net/sergeych/ling/Context.kt +++ b/library/src/commonMain/kotlin/net/sergeych/ling/Context.kt @@ -64,13 +64,10 @@ class Context( return StoredObj(value, isMutable).also { objects.put(name, it) } } - fun getOrCreateNamespace(name: String): ObjNamespace = - (objects.getOrPut(name) { - StoredObj( - ObjNamespace(name), - isMutable = false - ) - }.value as ObjNamespace) + fun getOrCreateNamespace(name: String): ObjClass { + val ns = objects.getOrPut(name) { StoredObj(ObjNamespace(name), isMutable = false) }.value + return ns!!.objClass + } inline fun addVoidFn(vararg names: String, crossinline fn: suspend Context.() -> Unit) { addFn(*names) { diff --git a/library/src/commonMain/kotlin/net/sergeych/ling/Obj.kt b/library/src/commonMain/kotlin/net/sergeych/ling/Obj.kt index 2e871cc..c5c429f 100644 --- a/library/src/commonMain/kotlin/net/sergeych/ling/Obj.kt +++ b/library/src/commonMain/kotlin/net/sergeych/ling/Obj.kt @@ -292,8 +292,12 @@ fun Obj.toBool(): Boolean = data class ObjNamespace(val name: String) : Obj() { + override val objClass by lazy { ObjClass(name) } + + override fun inspect(): String = "Ns[$name]" + override fun toString(): String { - return "namespace ${name}" + return "package $name" } }