From 11063122c14b1b0cb92c5fd8d332d796a8bc87b9 Mon Sep 17 00:00:00 2001 From: pfdietz <pfdietz@localhost> Date: Sat, 8 Jan 2005 11:11:05 +0000 Subject: [PATCH] More declaration scope tests --- ansi-tests/flet.lsp | 26 +++++++++++++++++++ ansi-tests/labels.lsp | 22 ++++++++++++++++ ansi-tests/let.lsp | 59 +++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 105 insertions(+), 2 deletions(-) diff --git a/ansi-tests/flet.lsp b/ansi-tests/flet.lsp index aee24b60..3bfa919e 100644 --- a/ansi-tests/flet.lsp +++ b/ansi-tests/flet.lsp @@ -478,3 +478,29 @@ y)) (%f)))) :good) + +(deftest flet.64 + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (flet () (declare (special x))) + x)) + :good) + +(deftest flet.65 + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (flet ((%f () (declare (special x))))) + x)) + :good) + +(deftest flet.66 + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (flet ((%f () (declare (special x)))) + x))) + :good) + + \ No newline at end of file diff --git a/ansi-tests/labels.lsp b/ansi-tests/labels.lsp index 8a80dfec..89bc337a 100644 --- a/ansi-tests/labels.lsp +++ b/ansi-tests/labels.lsp @@ -320,4 +320,26 @@ (%f)))) :good) +(deftest labels.43 + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (labels () (declare (special x))) + x)) + :good) +(deftest labels.44 + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (labels ((%f () (declare (special x))))) + x)) + :good) + +(deftest labels.45 + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) + (labels ((%f () (declare (special x)))) + x))) + :good) diff --git a/ansi-tests/let.lsp b/ansi-tests/let.lsp index 9345ca1f..3a63c7fc 100644 --- a/ansi-tests/let.lsp +++ b/ansi-tests/let.lsp @@ -89,7 +89,7 @@ ;;; Tests of large number of LET variables (deftest let.14 - (let* ((n 1000) + (let* ((n 100) (vars (mapcar #'gensym (make-list n :initial-element "G"))) (expr `(let ,(let ((i 0)) (mapcar #'(lambda (v) (list v (incf i))) vars)) @@ -130,6 +130,27 @@ y))) :good) +(deftest let.17a + (funcall + (compile + nil + '(lambda () + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) ;; lexical binding + (let ((y x)) + (declare (special x)) ;; free declaration + y)))))) + :good) + +(deftest let.18 + (let ((foo 'special)) + (declare (special foo)) + (let ((foo 'lexical)) + (locally (declare (special foo))) + foo)) + lexical) + ;;; Tests for LET* (deftest let*.1 @@ -208,7 +229,7 @@ ;;; Tests of large number of LET* variables (deftest let*.14 - (let* ((n 1000) + (let* ((n 100) (vars (mapcar #'gensym (make-list n :initial-element "G"))) (expr `(let* ,(let ((i 0)) (mapcar #'(lambda (v) (list v (incf i))) vars)) @@ -249,3 +270,37 @@ y))) :good) +(deftest let*.17a + (funcall + (compile + nil + '(lambda () + (let ((x :bad)) + (declare (special x)) + (let ((x :good)) ;; lexical binding + (let* ((y x)) + (declare (special x)) ;; free declaration + y)))))) + :good) + +(deftest let*.18 + (let ((x :bad1) + (z :bad2)) + (declare (special x z)) + (let ((x :good) + (z :good)) ;; lexical bindings + (let* ((y x) + (w z)) + (declare (special x)) ;; free declaration + (values y w)))) + :good + :good) + +(deftest let*.19 + (let ((foo 'special)) + (declare (special foo)) + (let* ((foo 'lexical)) + (locally (declare (special foo))) + foo)) + lexical) + -- GitLab