(let ((x (1+ x)))
(call-next-method)))
Now (FOO 3) should return 3, but instead it returns 4.
-
-137:
- (SB-DEBUG:BACKTRACE) output should start with something
- including the name BACKTRACE, not (as in 0.pre7.88)
- just "0: (\"hairy arg processor\" ...)". Until about
- sbcl-0.pre7.109, the names in BACKTRACE were all screwed
- up compared to the nice useful names in sbcl-0.6.13.
- Around sbcl-0.pre7.109, they were mostly fixed by using
- NAMED-LAMBDA to implement DEFUN. However, there are still
- some screwups left, e.g. as of sbcl-0.pre7.109, there are
- still some functions named "hairy arg processor" and
- "SB-INT:&MORE processor".
141:
Pretty-printing nested backquotes doesn't work right, as
implementations of &ANSI; &CommonLisp;.</para>
<sect1 id="more-cl-info">
-<title>Where To Go For More Information on &CommonLisp; in General</title>
+<title>Where To Go For More Information about &CommonLisp; in General</title>
<para>Regardless of your ability level, two very useful resources
for working with any implementation of
</sect1>
<sect1>
-<title>Where To Go For More Information On &SBCL;</title>
+<title>Where To Go For More Information About &SBCL;</title>
<para>Before you read this user manual, you should probably read
two other things.
interpreted language. Ignore them.)
SBCL aims for but has not yet reached compliance with the ANSI
-standard for Common Lisp. More information on this is available in the
-BUGS section below.
+standard for Common Lisp. More information about this is available in
+the BUGS section below.
SBCL also includes various non-ANSI extensions.
)
((functional-p var)
(setf (leaf-ever-used var) t))
- ((lambda-var-specvar var)
+ ((and (lambda-var-specvar var) (eq (first spec) 'ignore))
;; ANSI's definition for "Declaration IGNORE, IGNORABLE"
;; requires that this be a STYLE-WARNING, not a full WARNING.
(compiler-style-warn "declaring special variable ~S to be ignored"
used under BSD-style licenses allowing copying only under certain conditions.\n\
See the COPYING file in the distribution for more information.\n\
\n\
-More information on SBCL is available at <http://sbcl.sourceforge.net/>.\n\
+More information about SBCL is available at <http://sbcl.sourceforge.net/>.\n\
");
fflush(stdout);
}
(assert (= (a-accessor foo) 4))
(assert (= (c-accessor foo) 5)))
\f
+;;; At least as of sbcl-0.7.4, PCL has code to support a special
+;;; encoding of effective method functions for slot accessors as
+;;; FIXNUMs. Given this special casing, it'd be easy for slot accessor
+;;; functions to get broken in special ways even though ordinary
+;;; generic functions work. As of sbcl-0.7.4 we didn't have any tests
+;;; for that possibility. Now we have a few tests:
+(defclass fish ()
+ ((fin :reader ffin :writer ffin!)
+ (tail :reader ftail :writer ftail!)))
+(defvar *fish* (make-instance 'fish))
+(ffin! 'triangular-fin *fish*)
+(defclass cod (fish) ())
+(defvar *cod* (make-instance 'cod))
+(defparameter *clos-dispatch-side-fx* (make-array 0 :fill-pointer 0))
+(defmethod ffin! (new-fin (cod cod))
+ (format t "~&about to set ~S fin to ~S~%" cod new-fin)
+ (vector-push-extend '(cod) *clos-dispatch-side-fx*)
+ (prog1
+ (call-next-method)
+ (format t "~&done setting ~S fin to ~S~%" cod new-fin)))
+(defmethod ffin! :before (new-fin (cod cod))
+ (vector-push-extend '(:before cod) *clos-dispatch-side-fx*)
+ (format t "~&exploring the CLOS dispatch zoo with COD fins~%"))
+(ffin! 'almost-triang-fin *cod*)
+(assert (eq (ffin *cod*) 'almost-triang-fin))
+(assert (equalp #((:before cod) (cod)) *clos-dispatch-side-fx*))
+\f
;;;; success
(sb-ext:quit :unix-status 104)
;;; for internal versions, especially for internal versions off the
;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.4.28"
+"0.7.4.29"