restart-frame in debugger always passes &key args, and gets non-constant defaults wrong
Bug #861993 reported by
3b
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Triaged
|
Wishlist
|
Unassigned |
Bug Description
(defun foo (a &key (b a bp))
(declare (optimize (debug 3)))
(break)
(format t "~a ~a ~a~%" a b bp))
(foo 1)
debugger is entered due to BREAK, with FOO call shown as "1: (FOO 3 :B NIL)"
restarting the frame then continuing from the BREAK causes it to print "1 NIL T" instead of "1 1 NIL" as expected
if B defaults to a constant (number, string, symbol, etc) it shows up in the backtrace and the function gets the correct value for B, but it still gets BP set to T, even if B wasn't originally passed to the call.
tested on 1.0.51.32-0202ed4, x8664 linux, with and without slime
To post a comment you must log in.
While this would be nice to have, it is surprisingly hard due to the way we compile functions with complex lambda-lists.
Hard enough that I was -><- this close to calling this WONTFIX... but you never know when a clever person might come up with a way to do this nicely.