public class methods

This commit is contained in:
Sergey Chernov 2025-06-10 00:09:53 +04:00
parent 3ef80616d8
commit f338c54632
3 changed files with 3 additions and 4 deletions

View File

@ -715,7 +715,6 @@ class Compiler(
cc.skipTokenOfType(Token.Type.NEWLINE, isOptional = true) cc.skipTokenOfType(Token.Type.NEWLINE, isOptional = true)
val t = cc.next() val t = cc.next()
var extraInit: Statement? = null
val bodyInit: Statement? = if (t.type == Token.Type.LBRACE) { val bodyInit: Statement? = if (t.type == Token.Type.LBRACE) {
// parse body // parse body
parseScript(t.pos, cc).also { parseScript(t.pos, cc).also {
@ -728,7 +727,6 @@ class Compiler(
// create class // create class
val className = nameToken.value val className = nameToken.value
lateinit var classContext: Context
@Suppress("UNUSED_VARIABLE") val defaultAccess = if (isStruct) AccessType.Var else AccessType.Initialization @Suppress("UNUSED_VARIABLE") val defaultAccess = if (isStruct) AccessType.Var else AccessType.Initialization
@Suppress("UNUSED_VARIABLE") val defaultVisibility = Visibility.Public @Suppress("UNUSED_VARIABLE") val defaultVisibility = Visibility.Public

View File

@ -27,6 +27,7 @@ class Context(
fun raiseClassCastError(msg: String): Nothing = raiseError(ObjClassCastError(this, msg)) fun raiseClassCastError(msg: String): Nothing = raiseError(ObjClassCastError(this, msg))
@Suppress("unused")
fun raiseSymbolNotFound(name: String): Nothing = raiseError(ObjSymbolNotDefinedError(this, "symbol is not defined: $name")) fun raiseSymbolNotFound(name: String): Nothing = raiseError(ObjSymbolNotDefinedError(this, "symbol is not defined: $name"))
fun raiseError(message: String): Nothing { fun raiseError(message: String): Nothing {
@ -78,7 +79,7 @@ class Context(
fun getOrCreateNamespace(name: String): ObjClass { fun getOrCreateNamespace(name: String): ObjClass {
val ns = objects.getOrPut(name) { ObjRecord(ObjNamespace(name), isMutable = false) }.value val ns = objects.getOrPut(name) { ObjRecord(ObjNamespace(name), isMutable = false) }.value
return ns!!.objClass return ns.objClass
} }
inline fun addVoidFn(vararg names: String, crossinline fn: suspend Context.() -> Unit) { inline fun addVoidFn(vararg names: String, crossinline fn: suspend Context.() -> Unit) {

View File

@ -46,7 +46,7 @@ class ObjClass(
) { ) {
if (name in members || allParentsSet.any { name in it.members } == true) if (name in members || allParentsSet.any { name in it.members } == true)
throw ScriptError(pos, "$name is already defined in $objClass or one of its supertypes") throw ScriptError(pos, "$name is already defined in $objClass or one of its supertypes")
members[name] = ObjRecord(initialValue, isMutable) members[name] = ObjRecord(initialValue, isMutable, visibility)
} }
fun addFn(name: String, isOpen: Boolean = false, code: suspend Context.() -> Obj) { fun addFn(name: String, isOpen: Boolean = false, code: suspend Context.() -> Obj) {