diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-03-06 14:57:16 +0100 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-03-06 14:57:16 +0100 |
commit | 586a8505ecb5d95a9595ba67658c35898c038331 (patch) | |
tree | b1a1fa3741885e79c187e7720294d67c2d9ff8b6 /Lisp/method-invocation.lisp | |
parent | 829e90949351cfe763b8eb87cacb605d440ae49b (diff) |
Support super calls.
darcs-hash:d6b9645fe36711876226cd69bbbc4fce66a94fbb
Diffstat (limited to 'Lisp/method-invocation.lisp')
-rw-r--r-- | Lisp/method-invocation.lisp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp index 8f1c9c0..ab520df 100644 --- a/Lisp/method-invocation.lisp +++ b/Lisp/method-invocation.lisp @@ -207,6 +207,11 @@ easier to use with __apply__. __invoke__" + (invoke-by-name-super-v receiver method-name nil args)) + + +(defun invoke-by-name-super-v (receiver method-name superclass-for-send-super + args) ;; TODO: Support varargs. (let* ((selector (if (typep method-name 'selector) method-name @@ -227,7 +232,11 @@ easier to use with __apply__. argc (+ 2 (length args))) (low-level-invoke receiver selector - (null-pointer) + (if (and superclass-for-send-super + (not (and (pointerp superclass-for-send-super) + (null-pointer-p superclass-for-send-super)))) + (pointer-to superclass-for-send-super) + (null-pointer)) method-return-typestring method-return-type method-arg-typestrings |