- Type check for INTEGER is inserted, the result of which serves as
- the first argument of M-V-C, is inserted after evaluation of NIL. So
- arguments of M-V-C are pushed in the wrong order. As a temporary
- workaround type checking was disabled for M-V-Cs in 0.7.9.13. A
- better solution would be to put a check between evaluation of
- arguments, but it could be tricky to check result types of PROG1, IF
- etc.
-
-222: "environment problems in PCL"
- Evaluating
-
- (symbol-macrolet ((x 1))
- (defmethod foo (z)
- (macrolet ((ml (form) `(progn ,form ,x)))
- (ml (print x)))))
-
- causes
-
- debugger invoked on condition of type UNBOUND-VARIABLE:
- The variable X is unbound.
-
-223: "(SETF FDEFINITION) and #' semantics broken for wrappers"
- Although this
- (defun foo (x)
- (print x))
- (defun traced (fn)
- (lambda (&rest rest)
- (format t "~&about to call ~S on ~S~%" fn rest)
- (apply fn rest)
- (format t "~&returned from ~S~%" fn)))
- (setf (fdefinition 'foo)
- (traced #'foo))
- (foo 11)
- does what one would expect, this
- (defun bar (x)
- (print x))
- (let ((bar0 #'bar))
- (setf (fdefinition 'bar)
- (lambda (&rest rest)
- (format t "~&about to enter BAR ~S~%" rest)
- (apply bar0 rest)
- (format t "~&back from BAR~%"))))
- (bar 12)
- recurses endlessly in sbcl-0.7.9.32. (Or it works if #' and
- FDEFINITION are replaced by SYMBOL-FUNCTION.)
-
-224:
- SBCL 0.7.8 fails to compile
- (localy (declare (optimize (safety 3)))
- (ignore-errors (progn (values-list (car (list '(1 . 2)))) t)))
- (the LOCALY there is not a typo; any unknown function (e.g. FROB)
- will do).
+ Type check for INTEGER, the result of which serves as the first
+ argument of M-V-C, is inserted after evaluation of NIL. So arguments
+ of M-V-C are pushed in the wrong order. As a temporary workaround
+ type checking was disabled for M-V-Cs in 0.7.9.13. A better solution
+ would be to put the check between evaluation of arguments, but it
+ could be tricky to check result types of PROG1, IF etc.