From 382532e0e14909814cd0413a95cf9d92009e2119 Mon Sep 17 00:00:00 2001 From: sergeych Date: Wed, 11 Jun 2025 09:12:07 +0400 Subject: [PATCH] further Arguments optimizations --- .../kotlin/net/sergeych/lyng/ArgsDeclaration.kt | 2 +- .../src/commonMain/kotlin/net/sergeych/lyng/Arguments.kt | 8 ++------ .../src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt | 2 +- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/library/src/commonMain/kotlin/net/sergeych/lyng/ArgsDeclaration.kt b/library/src/commonMain/kotlin/net/sergeych/lyng/ArgsDeclaration.kt index 30ad2a9..928b27f 100644 --- a/library/src/commonMain/kotlin/net/sergeych/lyng/ArgsDeclaration.kt +++ b/library/src/commonMain/kotlin/net/sergeych/lyng/ArgsDeclaration.kt @@ -74,7 +74,7 @@ data class ArgsDeclaration(val params: List, val endTokenType: Token.Type) fun processEllipsis(index: Int, toFromIndex: Int) { val a = params[index] val l = if (index > toFromIndex) ObjList() - else ObjList(fromArgs.values.subList(index, toFromIndex + 1).toMutableList()) + else ObjList(fromArgs.list.subList(index, toFromIndex + 1).toMutableList()) assign(a, l) } diff --git a/library/src/commonMain/kotlin/net/sergeych/lyng/Arguments.kt b/library/src/commonMain/kotlin/net/sergeych/lyng/Arguments.kt index 6e02ce8..2edee8b 100644 --- a/library/src/commonMain/kotlin/net/sergeych/lyng/Arguments.kt +++ b/library/src/commonMain/kotlin/net/sergeych/lyng/Arguments.kt @@ -28,12 +28,8 @@ suspend fun Collection.toArguments(context: Context): Arguments data class Arguments(val list: List) : List by list { - data class Info(val value: Obj, val pos: Pos) - - val values = list - - fun firstAndOnly(): Obj { - if (list.size != 1) throw IllegalArgumentException("Expected one argument, got ${list.size}") + fun firstAndOnly(pos: Pos = Pos.UNKNOWN): Obj { + if (list.size != 1) throw ScriptError(pos, "expected one argument, got ${list.size}") return list.first() } diff --git a/library/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt b/library/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt index 9c7cebb..8cd7bcc 100644 --- a/library/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt +++ b/library/src/commonMain/kotlin/net/sergeych/lyng/Compiler.kt @@ -379,7 +379,7 @@ class Compiler( val context = closure!!.copy(pos, args) if (argsDeclaration == null) { // no args: automatic var 'it' - val l = args.values + val l = args.list val itValue: Obj = when (l.size) { // no args: it == void 0 -> ObjVoid