Check for odd number of keyword arguments.
authorOlof-Joachim Frahm <olof@macrolet.net>
Sat, 15 Jun 2013 09:25:41 +0000 (11:25 +0200)
committerOlof-Joachim Frahm <olof@macrolet.net>
Sat, 15 Jun 2013 09:41:42 +0000 (11:41 +0200)
src/compiler.lisp

index 39234c1..eace27d 100644 (file)
                (mapconcat #'parse-keyword keyword-arguments))))
      ;; Check for unknown keywords
      (when keyword-arguments
-       (code "for (i=" (+ n-required-arguments n-optional-arguments)
-             "; i<nargs; i+=2){" *newline*
+       (code "var start = " (+ n-required-arguments n-optional-arguments) ";" *newline*
+             "if ((nargs - start) % 2 == 1){" *newline*
+             (indent "throw 'Odd number of keyword arguments';" *newline*)
+             "}" *newline*
+             "for (i = start; i<nargs; i+=2){" *newline*
              (indent "if ("
                      (join (mapcar (lambda (x)
                                      (concat "arguments[i+2] !== " (ls-compile (caar x))))