;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sat May 21 08:16:27 2005
;;;; Contains: Tests of the IGNORABLE declaration



(deftest ignorable.1
  (let ((x 'foo)) (declare (ignorable x)))
  nil)

(deftest ignorable.2
  (let ((x 'foo)) (declare (ignorable x)) x)
  foo)

(deftest ignorable.3
  (flet ((%f () 'foo))
    (declare (ignorable (function %f))))
  nil)

(deftest ignorable.4
  (flet ((%f () 'foo))
    (declare (ignorable (function %f)))
    (%f))
  foo)

;;; TODO: add a test for (function (setf foo))

(deftest ignorable.5
  (flet (((setf %f) (x y) nil))
        (declare (ignorable (function (setf %f))))
        :good)
  :good)

(deftest ignorable.6
  (flet (((setf %f) (x y) (setf (car y) x)))
        (declare (ignorable (function (setf %f))))
        (let ((z (cons 'a 'b)))
          (values (setf (%f z) 'c) z)))
  c (c . b))

(deftest ignorable.7
  (labels (((setf %f) (x y) nil))
          (declare (ignorable (function (setf %f))))
          :good)
  :good)

(deftest ignorable.8
  (labels (((setf %f) (x y) (setf (car y) x)))
          (declare (ignorable (function (setf %f))))
          (let ((z (cons 'a 'b)))
            (values (setf (%f z) 'c) z)))
  c (c . b))



