progn.lsp 1.01 KB
Newer Older
1 2 3 4 5
;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sat Oct 19 09:33:51 2002
;;;; Contains: Tests of PROGN

Daniel Kochmański's avatar
Daniel Kochmański committed
6

7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

(deftest progn.1
  (progn)
  nil)

(deftest progn.2
  (progn 'a)
  a)

(deftest progn.3
  (progn 'b 'a)
  a)

(deftest progn.4
  (let ((x 0))
    (values (progn (incf x) x) x))
  1 1)

(deftest progn.5 (progn (values)))

(deftest progn.6
  (progn (values 1 2) (values 'a 'b 'c 'd 'e))
  a b c d e)

(deftest progn.7
  (let ((x 0))
    (prog ()
sds's avatar
sds committed
34 35 36 37
          (progn (go x) x 'a)
          (return 'bad)
          x
          (return 'good)))
38
  good)
39 40 41 42 43 44 45 46 47 48 49

;;; No implicit tagbody
(deftest progn.8
  (block nil
    (tagbody
     (progn
      (go 10)
      10
      (return 'bad))
     10
     (return 'good)))
50 51 52 53 54 55 56 57 58 59 60 61 62 63
  good)

;;; Macros are expanded in the appropriate environment

(deftest progn.9
  (macrolet
   ((%m (z) z))
   (progn (expand-in-current-env (%m :good))))
  :good)

(deftest progn.10
  (macrolet
   ((%m (z) z))
   (progn (expand-in-current-env (%m :bad))
sds's avatar
sds committed
64
          (expand-in-current-env (%m :good))))
65 66 67
  :good)