summaryrefslogtreecommitdiff
path: root/Lisp/method-invocation.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-21 16:17:40 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-21 16:17:40 +0200
commit17ee7b8790aff3efe19551796efec889e9d0b51d (patch)
tree088e7201ad2c1cbda86c8cfd2ff34f25c9b9a283 /Lisp/method-invocation.lisp
parent4167e6b9ec7c144bf259a820d7c958ecf7632c3f (diff)
Add condition classes NO-SUCH-SELECTOR and MESSAGE-NOT-UNDERSTOOD.
darcs-hash:e86722d8de9c97edf6ee9665423d57b0239fe910
Diffstat (limited to 'Lisp/method-invocation.lisp')
-rw-r--r--Lisp/method-invocation.lisp21
1 files changed, 12 insertions, 9 deletions
diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp
index 6d0dc12..e09292b 100644
--- a/Lisp/method-invocation.lisp
+++ b/Lisp/method-invocation.lisp
@@ -246,15 +246,18 @@ Returns: *result* --- the return value of the method invocation.
(cons (cffi:pointer-address (pointer-to class))
(cffi:pointer-address (pointer-to selector)))
(let* ((signature
- (if (eq instance-or-class :instance)
- (primitive-invoke class
- :instance-method-signature-for-selector
- 'id
- selector)
- (primitive-invoke class
- :method-signature-for-selector
- 'id
- selector)))
+ (or (if (eq instance-or-class :instance)
+ (primitive-invoke class
+ :instance-method-signature-for-selector
+ 'id
+ selector)
+ (primitive-invoke class
+ :method-signature-for-selector
+ 'id
+ selector))
+ (error (make-condition 'message-not-understood
+ :class class
+ :selector selector))))
(argc (primitive-invoke signature 'number-of-arguments :unsigned-int))
(method-return-typestring (primitive-invoke signature
'method-return-type