[slime-cvs] CVS slime
CVS User msimmons
msimmons at common-lisp.net
Thu Dec 2 16:39:00 UTC 2010
Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv30926
Modified Files:
ChangeLog swank-lispworks.lisp
Log Message:
(frame-actual-args): Reimplement to include
only the values like on other platforms and deal with, optional
key and rest args.
(print-frame): Format the frame as a call like in other backends.
--- /project/slime/cvsroot/slime/ChangeLog 2010/11/13 11:18:03 1.2165
+++ /project/slime/cvsroot/slime/ChangeLog 2010/12/02 16:39:00 1.2166
@@ -1,3 +1,10 @@
+2010-12-02 Martin Simmons <martin at lispworks.com>
+
+ * swank-lispworks.lisp (frame-actual-args): Reimplement to include
+ only the values like on other platforms and deal with, optional
+ key and rest args.
+ (print-frame): Format the frame as a call like in other backends.
+
2010-11-13 Helmut Eller <heller at common-lisp.net>
Improve source locations for compiler messages in Lispworks.
--- /project/slime/cvsroot/slime/swank-lispworks.lisp 2010/11/13 11:18:03 1.140
+++ /project/slime/cvsroot/slime/swank-lispworks.lisp 2010/12/02 16:39:00 1.141
@@ -365,20 +365,39 @@
(push frame backtrace)))))
(defun frame-actual-args (frame)
- (let ((*break-on-signals* nil))
- (mapcar (lambda (arg)
- (case arg
- ((&rest &optional &key) arg)
- (t
- (handler-case (dbg::dbg-eval arg frame)
- (error (e) (format nil "<~A>" arg))))))
- (dbg::call-frame-arglist frame))))
+ (let ((*break-on-signals* nil)
+ (kind nil))
+ (loop for arg in (dbg::call-frame-arglist frame)
+ if (eq kind '&rest)
+ nconc (handler-case
+ (dbg::dbg-eval arg frame)
+ (error (e) (list (format nil "<~A>" arg))))
+ and do (loop-finish)
+ else
+ if (member arg '(&rest &optional &key))
+ do (setq kind arg)
+ else
+ nconc
+ (handler-case
+ (nconc (and (eq kind '&key)
+ (list (cond ((symbolp arg)
+ (intern (symbol-name arg) :keyword))
+ ((and (consp arg) (symbolp (car arg)))
+ (intern (symbol-name (car arg)) :keyword))
+ (t (caar arg)))))
+ (list (dbg::dbg-eval
+ (cond ((symbolp arg) arg)
+ ((and (consp arg) (symbolp (car arg)))
+ (car arg))
+ (t (cadar arg)))
+ frame)))
+ (error (e) (list (format nil "<~A>" arg)))))))
(defimplementation print-frame (frame stream)
(cond ((dbg::call-frame-p frame)
- (format stream "~S ~S"
- (dbg::call-frame-function-name frame)
- (frame-actual-args frame)))
+ (prin1 (cons (dbg::call-frame-function-name frame)
+ (frame-actual-args frame))
+ stream))
(t (princ frame stream))))
(defun frame-vars (frame)
More information about the slime-cvs
mailing list