fix defNew optional binding list

This commit is contained in:
2021-08-01 16:33:39 -06:00
parent 44f1d712c9
commit 3fcc4f0503

View File

@@ -661,12 +661,16 @@ class Macros {
macros["defnew"] = (wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) -> { macros["defnew"] = (wholeExp:ReaderExp, exps:Array<ReaderExp>, k:KissState) -> {
wholeExp.checkNumArgs(1, null, "(defNew [[args...]] [[optional property bindings...]] [optional body...]"); wholeExp.checkNumArgs(1, null, "(defNew [[args...]] [[optional property bindings...]] [optional body...]");
var args = exps[0]; var args = exps.shift();
var bindingList = if (exps.length > 1) { var bindingList = [];
exps[1].bindingList("defNew", true);
} else { if (exps.length != 0) {
[]; switch (exps[0].def) {
}; case ListExp(_):
bindingList = exps.shift().bindingList("defNew", true);
default:
}
}
var bindingPairs = Prelude.groups(bindingList, 2); var bindingPairs = Prelude.groups(bindingList, 2);
var propertyDefs = [for (bindingPair in bindingPairs) { var propertyDefs = [for (bindingPair in bindingPairs) {
@@ -706,7 +710,7 @@ class Macros {
b.call(b.symbol("method"), [ b.call(b.symbol("method"), [
b.symbol("new"), b.symbol("new"),
b.list(argList) b.list(argList)
].concat(propertySetExps).concat(exps.slice(2))) ].concat(propertySetExps).concat(exps))
])); ]));
}; };
renameAndDeprecate("defnew", "defNew"); renameAndDeprecate("defnew", "defNew");