X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.impure.lisp;h=aa5ee2e978a1d265871f498d38e26145cdf19b91;hb=0ba72140fb0956f4cafd7b4aca6b6ffb0aa83c05;hp=71cce351e3f0c64b90d420c2ee845e292a016c83;hpb=05525d3a5906d7a89fcb689c26177732493c40ce;p=sbcl.git diff --git a/tests/compiler.impure.lisp b/tests/compiler.impure.lisp index 71cce35..aa5ee2e 100644 --- a/tests/compiler.impure.lisp +++ b/tests/compiler.impure.lisp @@ -589,9 +589,9 @@ `(lambda (f) (declare (optimize (speed 2) (safety ,policy1))) (multiple-value-list - (the (values (integer 2 3) t) + (the (values (integer 2 3) t &optional) (locally (declare (optimize (safety ,policy2))) - (the (values t (single-float 2f0 3f0)) + (the (values t (single-float 2f0 3f0) &optional) (funcall f))))))) (lambda () (values x y))) (type-error (error) @@ -725,10 +725,14 @@ ;;; COERCE got its own DEFOPTIMIZER which has to reimplement most of ;;; SPECIFIER-TYPE-NTH-ARG. For a while, an illegal type would throw ;;; you into the debugger on compilation. -(defun coerce-defopt (x) +(defun coerce-defopt1 (x) ;; illegal, but should be compilable. (coerce x '(values t))) -(assert (null (ignore-errors (coerce-defopt 3)))) +(defun coerce-defopt2 (x) + ;; illegal, but should be compilable. + (coerce x '(values t &optional))) +(assert (null (ignore-errors (coerce-defopt1 3)))) +(assert (null (ignore-errors (coerce-defopt2 3)))) ;;; Oops. In part of the (CATCH ..) implementation of DEBUG-RETURN, ;;; it was possible to confuse the type deriver of the compiler @@ -828,6 +832,40 @@ (assert (eq l nil)) (assert (eq (sswo-a s) :v))) +(defun bug249 (x) + (flet ((bar (y) + (declare (fixnum y)) + (incf x))) + (list (bar x) (bar x) (bar x)))) + +(assert (raises-error? (bug249 1.0) type-error)) + +;;; bug reported by ohler on #lisp 2003-07-10 +(defun bug-ohler-2003-07-10 (a b) + (declare (optimize (speed 0) (safety 3) (space 0) + (debug 1) (compilation-speed 0))) + (adjoin a b)) + +;;; bug reported by Doug McNaught on sbcl-devel 2003-09-14: +;;; COMPILE-FILE did not bind *READTABLE* +(let* ((source "bug-doug-mcnaught-20030914.lisp") + (fasl (compile-file-pathname source))) + (labels ((check () + (assert (null (get-macro-character #\])))) + (full-check () + (check) + (assert (typep *bug-doug-mcnaught-20030914* + '(simple-array (unsigned-byte 4) (*)))) + (assert (equalp *bug-doug-mcnaught-20030914* #(1 2 3))) + (makunbound '*bug-doug-mcnaught-20030914*))) + (compile-file source) + (check) + (load fasl) + (full-check) + (load source) + (full-check) + (delete-file fasl))) + ;;;; tests not in the problem domain, but of the consistency of the ;;;; compiler machinery itself