summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-16 18:30:47 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2013-07-16 18:30:47 +0200
commit3e973cf67af0dbfc18af6fa5f5e2a5c67e3b70d2 (patch)
tree2c55be3b5bd8e8bcc29791858335273f56078198
parent7d80fddca07fda51e3400e8b4dd917e96c4a8b71 (diff)
PREPARE-LAMBDA: Support &KEY ((:keyword var) ...) syntax.
-rw-r--r--sb-eval2.lisp8
1 files changed, 6 insertions, 2 deletions
diff --git a/sb-eval2.lisp b/sb-eval2.lisp
index f153590..4097de4 100644
--- a/sb-eval2.lisp
+++ b/sb-eval2.lisp
@@ -458,7 +458,9 @@
(defun lambda-binding-vars (entry)
(etypecase entry
- (cons (list (first entry)
+ (cons (list (etypecase (first entry)
+ (cons (second (first entry)))
+ (symbol (first entry)))
(if (cddr entry)
(third entry)
(gensym))))
@@ -478,7 +480,9 @@
(flet ((keywordify (sym)
(intern (symbol-name sym) "KEYWORD")))
(etypecase entry
- (cons (keywordify (first entry)))
+ (cons (etypecase (first entry)
+ (cons (first (first entry)))
+ (symbol (keywordify (first entry)))))
(symbol (keywordify entry)))))
(declaim (ftype (function (list context) eval-closure) prepare-lambda))