X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Ffloat.impure.lisp;h=aad98f59a35edc54c85b9f0dab537d134fb40758;hb=96bb2dc76dddb1a21b3886fa7522796879e9ed9d;hp=baf2c0fd9d669e2f53fef77ffcdafa1d1136adb6;hpb=5185db40031bedaa9dcfa8ba72cbbc8079e51e81;p=sbcl.git diff --git a/tests/float.impure.lisp b/tests/float.impure.lisp index baf2c0f..aad98f5 100644 --- a/tests/float.impure.lisp +++ b/tests/float.impure.lisp @@ -114,11 +114,27 @@ (assert (= (test 1.0d0) 2.0d0)) -(deftype myarraytype (&optional (length '*)) +(deftype myarraytype (&optional (length '*)) `(simple-array double-float (,length))) (defun new-pu-label-from-pu-labels (array) - (setf (aref (the myarraytype array) 0) + (setf (aref (the myarraytype array) 0) sb-ext:double-float-positive-infinity)) -;;; success -(quit :unix-status 104) +;;; bug 407 +;;; +;;; FIXME: it may be that TYPE-ERROR is wrong, and we should +;;; instead signal an overflow or coerce into an infinity. +(defun bug-407a () + (loop for n from (expt 2 1024) upto (+ 10 (expt 2 1024)) + do (handler-case + (coerce n 'single-float) + (simple-type-error () + (return-from bug-407a :type-error))))) +(assert (eq :type-error (bug-407a))) +(defun bug-407b () + (loop for n from (expt 2 1024) upto (+ 10 (expt 2 1024)) + do (handler-case + (format t "~E~%" (coerce n 'single-float)) + (simple-type-error () + (return-from bug-407b :type-error))))) +(assert (eq :type-error (bug-407b)))