fix defNew optional binding list
This commit is contained in:
@@ -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");
|
||||||
|
Reference in New Issue
Block a user