X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Finterface.impure.lisp;h=60795ad665ce27712d40ea73212404951dee0a6c;hb=8fdbd788bf02c20794a90b508afe22d075f45a54;hp=1914816884c8ac7177d70fb1424104a9abcae405;hpb=ebee2761543b208483fe763b1d329d5d0014b892;p=sbcl.git diff --git a/tests/interface.impure.lisp b/tests/interface.impure.lisp index 1914816..60795ad 100644 --- a/tests/interface.impure.lisp +++ b/tests/interface.impure.lisp @@ -47,6 +47,36 @@ ;; it is first compiled but the result of this implicit compilation ;; is not installed.)" (assert (sb-eval:interpreted-function-p #'disassemble-eval))) + +;; nor should it fail on generic functions or other funcallable instances +(defgeneric disassemble-generic (x)) +(disassemble 'disassemble-generic) +(let ((fin (sb-mop:make-instance 'sb-mop:funcallable-standard-object))) + (disassemble fin)) + +;;; while we're at it, much the same applies to +;;; FUNCTION-LAMBDA-EXPRESSION: +(defun fle-fun (x) x) +(function-lambda-expression #'fle-fun) + +(let ((x 1)) (defun fle-closure (y) (if y (setq x y) x))) +(function-lambda-expression #'fle-closure) + +#+sb-eval +(progn + ;; Nor should it fail on interpreted functions + (let ((sb-ext:*evaluator-mode* :interpret)) + (eval `(defun fle-eval (x) x)) + (function-lambda-expression #'fle-eval)) + + ;; fle-eval should still be an interpreted function. + (assert (sb-eval:interpreted-function-p #'fle-eval))) + +;; nor should it fail on generic functions or other funcallable instances +(defgeneric fle-generic (x)) +(function-lambda-expression #'fle-generic) +(let ((fin (sb-mop:make-instance 'sb-mop:funcallable-standard-object))) + (function-lambda-expression fin)) ;;; support for DESCRIBE tests (defstruct to-be-described a b)