X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.impure-cload.lisp;h=edb4652ea97d25fde5d162d469a0a67462fe51d8;hb=0a15b6bbf9d5d3a64b5ac08bb96b6e5ec221d2ae;hp=f2a5d3dd8e6f1e38dfd6c0ca0865fbe37921c834;hpb=abf95924deb0b9677a160c02632749d80a3c24f8;p=sbcl.git diff --git a/tests/compiler.impure-cload.lisp b/tests/compiler.impure-cload.lisp index f2a5d3d..edb4652 100644 --- a/tests/compiler.impure-cload.lisp +++ b/tests/compiler.impure-cload.lisp @@ -1,5 +1,7 @@ (eval-when (:compile-toplevel :load-toplevel :execute) (load "assertoid.lisp") + (load "compiler-test-util.lisp") + (load "test-util.lisp") (use-package "ASSERTOID")) ;;; bug 254: compiler falure @@ -517,3 +519,29 @@ (write-line "foo-0")) (foo) + +;;; LOAD-TIME-VALUE smartness +(defun load-time-value-type-derivation-test-1 () + (ctu:compiler-derived-type (load-time-value (cons 'foo 0)))) +(defun load-time-value-type-derivation-test-2 () + (ctu:compiler-derived-type (load-time-value (+ (or *print-length* 0) 10)))) +(defun load-time-value-auto-read-only-p () + (load-time-value (random most-positive-fixnum))) +(defun load-time-value-boring () + (load-time-value (cons t t))) +(test-util:with-test (:name (load-time-value :type-smartness/cload)) + (assert (eq 'cons (load-time-value-type-derivation-test-1))) + (assert (eq 'number (load-time-value-type-derivation-test-2))) + (assert (not (ctu:find-value-cell-values #'load-time-value-auto-read-only-p))) + (assert (ctu:find-value-cell-values #'load-time-value-boring))) + +(defun regression-1.0.29.54 () + (logior (1+ most-positive-fixnum) + (load-time-value (the fixnum (eval 1)) t))) + +(test-util:with-test (:name :regression-1.0.29.54) + (assert (= (+ most-positive-fixnum 2) (regression-1.0.29.54))) + (assert (eq 42 + (funcall (compile nil + `(lambda () + (load-time-value (values 42))))))))