;;====FromWill:NewMacros:Version 2:test.sch====; Test cases

(test '((lambda () 2 1)))

(test '(begin (define x 1) (define y 2)))

(test '((lambda () (define x 1) x)))

; inner
(test '(let ((x 'outer))
            (let-syntax ((m (lambda (exp rename compare) 'x)))
              (let ((x 'inner))
                (m)))))

; outer
(test '(let ((x 'outer))
            (let-syntax ((m (lambda (exp rename compare) (rename 'x))))
              (let ((x 'inner))
                (m)))))

(test '(letrec ((x (lambda () x)))
               (let ((y x))
                 (set! x 2)
                 (y))))

(define e1
  '(let ((foo (lambda (x) (+ x 1))))
        (let-syntax ((m (lambda (exp rename compare)
                          `(,(rename 'foo) ,(cadr exp)))))
          (list (m 3)			; => 4
                (let ((foo 97))
                  (m foo)			; => 98
                  )))))

(test e1)

;;			    --- E O F ---			;;
