summaryrefslogtreecommitdiff
path: root/Lisp/compiler-macros.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2008-03-02 20:53:39 +0100
committerMatthias Benkard <code@mail.matthias.benkard.de>2008-03-02 20:53:39 +0100
commitfbc1ec5ed1a48ee3536849eb3665c9275c3986fd (patch)
tree87e34bed93a79714c5dd933a31f8afb4c6655af2 /Lisp/compiler-macros.lisp
parent5ce666fc19c76a234df7819e9be1d2cb07c0c6cf (diff)
Fix the compiler macro for INVOKE.
darcs-hash:f76cc3530507e408704652d52b86b434e508c18d
Diffstat (limited to 'Lisp/compiler-macros.lisp')
-rw-r--r--Lisp/compiler-macros.lisp12
1 files changed, 5 insertions, 7 deletions
diff --git a/Lisp/compiler-macros.lisp b/Lisp/compiler-macros.lisp
index 5ee8082..2ed4b0d 100644
--- a/Lisp/compiler-macros.lisp
+++ b/Lisp/compiler-macros.lisp
@@ -66,11 +66,9 @@
(define-compiler-macro invoke (&whole form
receiver message-start &rest message-components)
(multiple-value-bind (method-name args)
- (split-method-call (if (and (consp message-start)
- (eq (first message-start) 'quote))
- (second message-start)
- message-start)
- message-components)
- (if (constantp method-name)
- `(invoke-by-name ,receiver (selector ',method-name) ,@args)
+ (split-method-call message-start message-components)
+ (if (and (listp method-name)
+ (every #'constantp method-name))
+ `(invoke-by-name ,receiver (selector ',(mapcar #'eval method-name))
+ ,@args)
form)))