diff --git a/ansi-tests/gclload2.lsp b/ansi-tests/gclload2.lsp index 5248799102a79891daec7bd9cb0b75b11068001c..5269de248f41459247de6b625beda35e8836c9fa 100644 --- a/ansi-tests/gclload2.lsp +++ b/ansi-tests/gclload2.lsp @@ -27,6 +27,8 @@ (load "lambda-parameters-limit.lsp") (load "let.lsp") (load "macrolet.lsp") +(load "progv.lsp") + ;;; Tests of conses diff --git a/ansi-tests/let.lsp b/ansi-tests/let.lsp index 6ea6a8d800dccefb99665303fc62310a94f1decd..62e20e2a983acc0bbdc67cbdae3c11b30fc9ab24 100644 --- a/ansi-tests/let.lsp +++ b/ansi-tests/let.lsp @@ -65,6 +65,15 @@ x)) (1 nil 1)) +(deftest let.12 + (let ((x 0)) + (values + (let ((x 20) + (x (1+ x))) + x) + x)) + 1 0) + (deftest let.13 (flet ((%f () (declare (special x)) (if (boundp 'x) x 10))) diff --git a/ansi-tests/progv.lsp b/ansi-tests/progv.lsp new file mode 100644 index 0000000000000000000000000000000000000000..6590e2149d72a4ceff9d56ed6c0ed680476d446d --- /dev/null +++ b/ansi-tests/progv.lsp @@ -0,0 +1,69 @@ +;-*- Mode: Lisp -*- +;;;; Author: Paul Dietz +;;;; Created: Sat Oct 12 10:00:50 2002 +;;;; Contains: Tests for PROGV + +(in-package :cl-test) + +(deftest progv.1 + (progv () () t) + t) + +(deftest progv.2 + (progv '(x) '(1) (not (not (boundp 'x)))) + t) + +(deftest progv.3 + (progv '(x) '(1) (symbol-value 'x)) + 1) + +(deftest progv.4 + (progv '(x) '(1) + (locally (declare (special x)) + x)) + 1) + +(deftest progv.5 + (let ((x 0)) + (progv '(x) '(1) x)) + 0) + +(deftest progv.6 + (let ((x 0)) + (declare (special x)) + (progv '(x) () + (boundp 'x))) + nil) + +(deftest progv.7 + (progv '(x y z) '(1 2 3) + (locally (declare (special x y z)) + (values x y z))) + 1 2 3) + +(deftest progv.8 + (progv '(x y z) '(1 2 3 4 5 6 7 8) + (locally (declare (special x y z)) + (values x y z))) + 1 2 3) + +(deftest progv.9 + (let ((x 0)) + (declare (special x)) + (progv '(x y z w) '(1) + (values (not (not (boundp 'x))) + (boundp 'y) + (boundp 'z) + (boundp 'w)))) + t nil nil nil) + +;; forms are evaluated in order + +(deftest progv.10 + (let ((x 0) (y 0) (c 0)) + (progv + (progn (setf x (incf c)) nil) + (progn (setf y (incf c)) nil) + (values x y c))) + 1 2 2) +