From 1a65b4aa388c4b9bc8d2cdcda511b316fd88d5e6 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Fri, 21 May 2021 12:57:10 -0600 Subject: [PATCH] defnew allow empty binding list --- src/kiss/Helpers.hx | 4 ++-- src/kiss/Macros.hx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/kiss/Helpers.hx b/src/kiss/Helpers.hx index efc5a2b..922f6b3 100644 --- a/src/kiss/Helpers.hx +++ b/src/kiss/Helpers.hx @@ -408,9 +408,9 @@ class Helpers { }; } - public static function bindingList(exp:ReaderExp, forThis:String):Array { + public static function bindingList(exp:ReaderExp, forThis:String, allowEmpty = false):Array { return switch (exp.def) { - case ListExp(bindingExps) if (bindingExps.length > 0 && bindingExps.length % 2 == 0): + case ListExp(bindingExps) if ((allowEmpty || bindingExps.length > 0) && bindingExps.length % 2 == 0): bindingExps; default: throw CompileError.fromExp(exp, '$forThis bindings should be a list expression with an even number of sub expressions (at least 2)'); diff --git a/src/kiss/Macros.hx b/src/kiss/Macros.hx index 99f4731..c72ddc9 100644 --- a/src/kiss/Macros.hx +++ b/src/kiss/Macros.hx @@ -531,7 +531,7 @@ class Macros { wholeExp.checkNumArgs(2, null, "(defnew [[args...]] [[property bindings...]] [body...]"); var args = exps[0]; - var bindingList = exps[1].bindingList("defnew"); + var bindingList = exps[1].bindingList("defnew", true); var bindingPairs = Prelude.groups(bindingList, 2); var propertyDefs = [for (bindingPair in bindingPairs) {