From 3fcc4f05035946af50518c9b1b79de97603b5475 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 1 Aug 2021 16:33:39 -0600 Subject: [PATCH] fix defNew optional binding list --- kiss/src/kiss/Macros.hx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index f8c32bed..23562ebd 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -661,12 +661,16 @@ class Macros { macros["defnew"] = (wholeExp:ReaderExp, exps:Array, k:KissState) -> { wholeExp.checkNumArgs(1, null, "(defNew [[args...]] [[optional property bindings...]] [optional body...]"); - var args = exps[0]; - var bindingList = if (exps.length > 1) { - exps[1].bindingList("defNew", true); - } else { - []; - }; + var args = exps.shift(); + var bindingList = []; + + if (exps.length != 0) { + switch (exps[0].def) { + case ListExp(_): + bindingList = exps.shift().bindingList("defNew", true); + default: + } + } var bindingPairs = Prelude.groups(bindingList, 2); var propertyDefs = [for (bindingPair in bindingPairs) { @@ -706,7 +710,7 @@ class Macros { b.call(b.symbol("method"), [ b.symbol("new"), b.list(argList) - ].concat(propertySetExps).concat(exps.slice(2))) + ].concat(propertySetExps).concat(exps)) ])); }; renameAndDeprecate("defnew", "defNew");