X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Floop.pure.lisp;h=5cd85f327654e150eaa14ef2033b3d7c376cb726;hb=1cba0af01f5107ab384d0d8b94b1f6330b3d0ef4;hp=84a833ad7e5f8bd0e11bafd45bec588b2ce7f15d;hpb=06333e9fbc30caf953a7510b8d51c71ab8637a72;p=sbcl.git diff --git a/tests/loop.pure.lisp b/tests/loop.pure.lisp index 84a833a..5cd85f3 100644 --- a/tests/loop.pure.lisp +++ b/tests/loop.pure.lisp @@ -13,6 +13,8 @@ (in-package "CL-USER") +(load "compiler-test-util.lisp") + ;;; The bug reported by Alexei Dejneka on sbcl-devel 2001-09-03 ;;; is fixed now. (assert (equal (let ((hash (make-hash-table))) @@ -256,3 +258,30 @@ (assert (equal '("foo" "bar") (funcall fun (vector "foo" "bar")))))) + +(with-test (:name :bug-lp613871) + (multiple-value-bind (function warnings-p failure-p) + (compile nil '(lambda () (loop with nil = 1 repeat 2 collect t))) + (assert (null warnings-p)) + (assert (null failure-p)) + (assert (equal '(t t) (funcall function)))) + (multiple-value-bind (function warnings-p failure-p) + (compile nil '(lambda () (loop with nil repeat 2 collect t))) + (assert (null warnings-p)) + (assert (null failure-p)) + (assert (equal '(t t) (funcall function))))) + +(with-test (:name :bug-654220-regression) + (assert (= 32640 (loop for i to 255 + sum i into sum of-type fixnum + finally (return sum))))) + +(with-test (:name :of-type-character-init) + ;; The intention here is to if we initialize C to NIL before iteration start + ;; by looking for tell-tale types such as (OR NULL CHARACTER). ...not the + ;; most robust test ever, no. + (let* ((fun (compile nil `(lambda (x) + (loop for c of-type character in x + collect (char-code c))))) + (consts (ctu:find-code-constants fun :type '(or symbol list)))) + (assert (or (null consts) (equal 'character consts)))))