X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdynamic-extent.impure.lisp;h=4ec3d4d055c1537e04feed9f2961140ab168c7f8;hb=6d69dfcc438b3530fa922e518919158ccf1af497;hp=704a55d183aa1bc2de2b1f7acf2c6d9d2110dce0;hpb=66cff1e1319861c080d563359afea284614b3a7f;p=sbcl.git diff --git a/tests/dynamic-extent.impure.lisp b/tests/dynamic-extent.impure.lisp index 704a55d..4ec3d4d 100644 --- a/tests/dynamic-extent.impure.lisp +++ b/tests/dynamic-extent.impure.lisp @@ -146,6 +146,20 @@ (true cons) nil)) +;;; Nested DX + +(defun-with-dx nested-dx-lists () + (let ((dx (list (list 1 2) (list 3 4)))) + (declare (dynamic-extent dx)) + (true dx) + nil)) + +(defun-with-dx nested-dx-conses () + (let ((dx (cons 1 (cons 2 (cons 3 (cons (cons t t) nil)))))) + (declare (dynamic-extent dx)) + (true dx) + nil)) + ;;; with-spinlock should use DX and not cons (defvar *slock* (sb-thread::make-spinlock :name "slocklock")) @@ -185,6 +199,8 @@ (assert-no-consing (test-lvar-subst 11)) (assert-no-consing (dx-value-cell 13)) (assert-no-consing (cons-on-stack 42)) + (assert-no-consing (nested-dx-conses)) + (assert-no-consing (nested-dx-lists)) ;; Not strictly DX.. (assert-no-consing (test-hash-table)) #+sb-thread