+
+;;; In sbcl-0.7.3, GET-MACRO-CHARACTER and SET-MACRO-CHARACTER didn't
+;;; use NIL to represent the no-macro-attached-to-this-character case
+;;; as ANSI says they should. (This problem is parallel to the
+;;; GET-DISPATCH-MACRO misbehavior fixed in sbcl-0.7.2.10, but
+;;; was fixed a little later.)
+(dolist (customizable-char
+ ;; According to ANSI "2.1.4 Character Syntax Types", these
+ ;; characters are reserved for the programmer.
+ '(#\? #\! #\[ #\] #\{ #\}))
+ ;; So they should have no macro-characterness.
+ (multiple-value-bind (macro-fun non-terminating-p)
+ (get-macro-character customizable-char)
+ (assert (null macro-fun))
+ ;; Also, in a bit of ANSI weirdness, NON-TERMINATING-P can be
+ ;; true only when MACRO-FUN is true. (When the character
+ ;; is not a macro character, it can be embedded in a token,
+ ;; so it'd be more logical for NON-TERMINATING-P to be T in
+ ;; this case; but ANSI says it's NIL in this case.
+ (assert (null non-terminating-p))))