1 2 3 4 5 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 34 35
|
;;;; miscellaneous tests of symbol properties
;;;; This software is part of the SBCL system. See the README file for
;;;; more information.
;;;;
;;;; While most of SBCL is derived from the CMU CL system, the test
;;;; files (like this one) were written from scratch after the fork
;;;; from CMU CL.
;;;;
;;;; This software is in the public domain and is provided with
;;;; absolutely no warranty. See the COPYING and CREDITS files for
;;;; more information.
(in-package "CL-USER")
(defun test-symbol (symbol)
(setf (symbol-plist symbol) nil)
(setf (get symbol 'foo) '(my list))
(setf (get symbol 'bar) 10)
(setf (get symbol 'baz) t)
(assert (eql (get symbol 'bar) 10))
(assert (= (length (symbol-plist symbol)) 6))
(remprop symbol 'foo)
(assert (not (get symbol 'foo))))
(mapc #'test-symbol '(foo :keyword || t nil))
;;; In early 0.7 versions on non-x86 ports, setting the property list
;;; of 'NIL would trash (CDR NIL), due to a screwup in the low-level
;;; layout of SYMBOL. (There are several low-level punnish tricks used
;;; to make NIL work both as a cons and as a symbol without requiring
;;; a lot of conditional branching at runtime.)
(defparameter *nil-that-the-compiler-cannot-constant-fold* nil)
(assert (not (car *nil-that-the-compiler-cannot-constant-fold*)))
(assert (not (cdr *nil-that-the-compiler-cannot-constant-fold*)))
;;; success
|