author | Alan Dipert
<alan@dipert.org> 2019-11-03 17:24:32 UTC |
committer | Alan Dipert
<alan@dipert.org> 2019-11-03 17:24:32 UTC |
parent | c2a3f83562309f93aa070c1842321d9afdcede69 |
jacl.js | +8 | -9 |
diff --git a/jacl.js b/jacl.js index 2b8c4cc..b6f376a 100644 --- a/jacl.js +++ b/jacl.js @@ -882,8 +882,8 @@ const parseLambdaList = list => { required: [], // Array of [symbol, expr, symbol] for [name, init, svar] optional: [], - // Array of optional indexes that have svars - optionalWithSvars: [], + // Array of &optional svar names (symbols) + optionalSvars: [], // null or symbol rest: null, // Array of [keyword, symbol, expr, symbol] for [key, name, init, svar] @@ -928,7 +928,7 @@ const parseLambdaList = list => { let svar = UNDEFINED; if (len === 3) { svar = checkValidLocal(Cons.nth(x, 2)); - sections.optionalWithSvars.push(sections.optional.length); + sections.optionalSvars.push(svar); } sections.optional.push({ name: checkValidLocal(x.car), @@ -1459,14 +1459,13 @@ const emitNode = (print, node) => { } } // Speculatively bind &optional svars to true - if (node.lambdaList.optionalWithSvars.length) { + if (node.lambdaList.optionalSvars.length) { print('var '); - for (let i = 0; i < node.lambdaList.optionalWithSvars.length; i++) { - const optIdx = node.lambdaList.optionalWithSvars[i], - ospec = node.lambdaList.optional[optIdx]; - print(mungeSym(ospec.svar, 'local')); + for (let i = 0; i < node.lambdaList.optionalSvars.length; i++) { + const svar = node.lambdaList.optionalSvars[i]; + print(mungeSym(svar, 'local')); print('=true'); - if (i < node.lambdaList.optionalWithSvars.length-1) print(','); + if (i < node.lambdaList.optionalSvars.length-1) print(','); } print(';\n'); }