X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fclos.impure.lisp;h=a248cdb9c69b1bbbd681a76dc0da6b7a50a7c095;hb=f2db6743b1fadeea9e72cb583d857851c87efcd4;hp=447639e1cebc82d8a51e77a7876eb349583f27f3;hpb=5b5853f5f58c84f89e2edfc90805e658e188cd31;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 447639e..a248cdb 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -1718,5 +1718,51 @@ (shared-initialize x '(a)) (assert (slot-boundp x 'a)) (assert (eq :ok (slot-value x 'a))))) + +(declaim (ftype (function (t t t) (values single-float &optional)) + i-dont-want-to-be-clobbered-1 + i-dont-want-to-be-clobbered-2)) +(defgeneric i-dont-want-to-be-clobbered-1 (t t t)) +(defmethod i-dont-want-to-be-clobbered-2 ((x cons) y z) + y) +(defun i-cause-an-gf-info-update () + (i-dont-want-to-be-clobbered-2 t t t)) +(with-test (:name :defgeneric-should-clobber-ftype) + ;; (because it doesn't check the argument or result types) + (assert (equal '(function (t t t) *) + (sb-kernel:type-specifier + (sb-int:info :function + :type 'i-dont-want-to-be-clobbered-1)))) + (assert (equal '(function (t t t) *) + (sb-kernel:type-specifier + (sb-int:info :function + :type 'i-dont-want-to-be-clobbered-2)))) + (assert (eq :defined-method + (sb-int:info :function + :where-from 'i-dont-want-to-be-clobbered-1))) + (assert (eq :defined-method + (sb-int:info :function + :where-from 'i-dont-want-to-be-clobbered-2)))) + +(with-test (:name :bogus-parameter-specializer-name-error) + (assert (eq :ok + (handler-case + (eval `(defmethod #:fii ((x "a string")) 'string)) + (sb-int:reference-condition (c) + (when (member '(:ansi-cl :macro defmethod) + (sb-int:reference-condition-references c) + :test #'equal) + :ok)))))) + +(defclass remove-default-initargs-test () + ((x :initarg :x :initform 42))) +(defclass remove-default-initatgs-test () + ((x :initarg :x :initform 42)) + (:default-initargs :x 0)) +(defclass remove-default-initargs-test () + ((x :initarg :x :initform 42))) +(with-test (:name :remove-default-initargs) + (assert (= 42 (slot-value (make-instance 'remove-default-initargs-test) + 'x)))) ;;;; success