diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-21 16:17:40 +0200 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-21 16:17:40 +0200 |
commit | 17ee7b8790aff3efe19551796efec889e9d0b51d (patch) | |
tree | 088e7201ad2c1cbda86c8cfd2ff34f25c9b9a283 /Lisp/method-invocation.lisp | |
parent | 4167e6b9ec7c144bf259a820d7c958ecf7632c3f (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.lisp | 21 |
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 |