git » jacl.git » commit a426592

initial populate &optional svars to true

author Alan Dipert
2019-11-03 17:24:32 UTC
committer Alan Dipert
2019-11-03 17:24:32 UTC
parent c2a3f83562309f93aa070c1842321d9afdcede69

initial populate &optional svars to true

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');
       }