1.0.36.35: More accurate WHO-CALLS / WHO-EXPANDS information
authorTobias C. Rittweiler <trittweiler@users.sourceforge.net>
Sat, 20 Mar 2010 16:08:06 +0000 (16:08 +0000)
committerTobias C. Rittweiler <trittweiler@users.sourceforge.net>
Sat, 20 Mar 2010 16:08:06 +0000 (16:08 +0000)
  * Fix for .34 which also affects WHO-EXPANDS; instead of pointing at
    the toplevel form, actually point into the right subform.

  * Bug due to typo: CDDR was used instead of CADDR.

NEWS
src/compiler/xref.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index f94e99c..9dbda2a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -59,6 +59,8 @@ changes relative to sbcl-1.0.36:
     &REST and &KEY in lambda-list caused miscompilation (lp#458354)
   * bug fix: WHO-CALLS information for source-transformed and compiler-macro
     expanded calls (lp#542174)
+  * bug fix: more accurate WHO-MACROEXPANDS information; point into rather
+    than just at toplevel form.
 
 changes in sbcl-1.0.36 relative to sbcl-1.0.35:
   * new feature: SB-EXT:TYPEXPAND-1, SB-EXT:TYPEXPAND, and
index 2e8966f..7801e4e 100644 (file)
                ;; Properly record the deferred macroexpansion and source
                ;; transform information that's been stored in the block.
                (dolist (xref-data (block-xrefs block))
-                 (record-xref (car xref-data)
-                              (cadr xref-data)
-                              ;; We use the debug-name of the functional
-                              ;; as an identifier. This works quite nicely,
-                              ;; except for (fast/slow)-methods with non-symbol,
-                              ;; non-number eql specializers, for which
-                              ;; the debug-name doesn't map exactly
-                              ;; to the fdefinition of the method.
-                              functional
-                              nil
-                              (cddr xref-data)))))
+                 (destructuring-bind (kind what path) xref-data
+                   (record-xref kind what
+                                ;; We use the debug-name of the functional
+                                ;; as an identifier. This works quite nicely,
+                                ;; except for (fast/slow)-methods with non-symbol,
+                                ;; non-number eql specializers, for which
+                                ;; the debug-name doesn't map exactly
+                                ;; to the fdefinition of the method.
+                                functional
+                                nil
+                                path)))))
         (call-with-block-external-functionals block #'handle-node)))))
 
 (defun call-with-block-external-functionals (block fun)
index 064721f..9933ca1 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.36.34"
+"1.0.36.35"