From 308b848cc4e6630356d84fc43530739a72374130 Mon Sep 17 00:00:00 2001 From: Matthias Benkard Date: Tue, 12 Feb 2008 18:20:54 +0100 Subject: When overriding a return type specification, save the nominal type for later use. darcs-hash:40bdaeb5687e6ad142766f1ee041231e875c1d49 --- Lisp/method-invocation.lisp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'Lisp/method-invocation.lisp') 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* -- cgit v1.2.3