;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sat Oct 19 09:33:51 2002
;;;; Contains: Tests of PROGN



(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 ()
          (progn (go x) x 'a)
          (return 'bad)
          x
          (return 'good)))
  good)

;;; No implicit tagbody
(deftest progn.8
  (block nil
    (tagbody
     (progn
      (go 10)
      10
      (return 'bad))
     10
     (return 'good)))
  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))
          (expand-in-current-env (%m :good))))
  :good)


