diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-02-12 18:20:54 +0100 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-02-12 18:20:54 +0100 |
commit | 308b848cc4e6630356d84fc43530739a72374130 (patch) | |
tree | 5bc36df8d4fca2906951c473c508adbd75537dd5 /Lisp/method-invocation.lisp | |
parent | 1f87c8d3385203966e88711eae9bf0e5a7493b43 (diff) |
When overriding a return type specification, save the nominal type for later use.
darcs-hash:40bdaeb5687e6ad142766f1ee041231e875c1d49
Diffstat (limited to 'Lisp/method-invocation.lisp')
-rw-r--r-- | Lisp/method-invocation.lisp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp index 929162f..dd36dd3 100644 --- a/Lisp/method-invocation.lisp +++ b/Lisp/method-invocation.lisp @@ -415,7 +415,15 @@ easier to use with __apply__. objc-arg-ptrs))) (unless (cffi:null-pointer-p error-cell) (error (make-condition 'exception :pointer error-cell))) - (case (car return-type) + (case (let ((nominal-type (find-if #'(lambda (x) + (and (consp x) + (eq (car x) 'nominally))) + (cadr return-type)))) + ;; Do the modifiers include something like + ;; (NOMINALLY :UNSIGNED-CHAR)? + (if nominal-type + (cadr nominal-type) + (car return-type))) ((id objective-c-class exception selector) (let ((*skip-retaining* (or *skip-retaining* |