From 1deb19a20e934084cda4499e6930e35b0d2777c3 Mon Sep 17 00:00:00 2001 From: Matthias Benkard Date: Mon, 24 Mar 2008 13:26:39 +0100 Subject: Wrap Lisp values when trying to send them messages. darcs-hash:c7cffd49bb312b7a6d88e3a5d29f3f5446827120 --- Lisp/libobjcl.lisp | 3 ++- Lisp/method-invocation.lisp | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Lisp/libobjcl.lisp b/Lisp/libobjcl.lisp index d633480..939f3b3 100644 --- a/Lisp/libobjcl.lisp +++ b/Lisp/libobjcl.lisp @@ -722,7 +722,8 @@ separating parts by hyphens works nicely in all of the `:INVERT`, (defun pointer (thing) (etypecase thing (c-pointer thing) - ((or c-pointer-wrapper exception) (pointer-to thing)))) + ((or c-pointer-wrapper exception) (pointer-to thing)) + (t (pointer-to (coerce-object thing :id))))) (defun object-is-class-p (obj) (%objcl-object-is-class (pointer obj))) diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp index 4a3c209..9bb8a46 100644 --- a/Lisp/method-invocation.lisp +++ b/Lisp/method-invocation.lisp @@ -207,7 +207,13 @@ easier to use with __apply__. __invoke__" - (invoke-by-name-super-v receiver method-name nil args)) + (invoke-by-name-super-v (typecase receiver + (symbol (find-objc-class receiver)) + ((or id objective-c-class) receiver) + (t (pointer receiver))) + method-name + nil + args)) (defun invoke-by-name-super-v (receiver method-name superclass-for-send-super -- cgit v1.2.3