[slime-cvs] CVS update: slime/swank-allegro.lisp

Helmut Eller heller at common-lisp.net
Thu Jan 20 16:09:30 UTC 2005


Update of /project/slime/cvsroot/slime
In directory common-lisp.net:/tmp/cvs-serv9756

Modified Files:
	swank-allegro.lisp 
Log Message:
(handle-undefined-functions-warning): Prevent breakage if the
undefined function is called at multiple locations.  By Edi Weitz.

(restart-frame): Handle frames with arguments better.  From Ian Eslick.

Date: Thu Jan 20 08:09:24 2005
Author: heller

Index: slime/swank-allegro.lisp
diff -u slime/swank-allegro.lisp:1.66 slime/swank-allegro.lisp:1.67
--- slime/swank-allegro.lisp:1.66	Sun Dec  5 06:52:39 2004
+++ slime/swank-allegro.lisp	Thu Jan 20 08:09:23 2005
@@ -201,12 +201,13 @@
       frame (debugger:eval-form-in-context 
              form 
              (debugger:environment-of-frame frame)))))
-                         
-;;; XXX doesn't work for frames with arguments 
+
 (defimplementation restart-frame (frame-number)
   (let ((frame (nth-frame frame-number)))
-    (debugger:frame-retry frame (debugger:frame-function frame))))
-                          
+    (apply #'debugger:frame-retry
+           (append (list frame (debugger:frame-function frame))
+                   (cdr (debugger:frame-expression frame))))))
+
 ;;;; Compiler hooks
 
 (defvar *buffer-name* nil)
@@ -257,14 +258,15 @@
 
 (defun handle-undefined-functions-warning (condition)
   (let ((fargs (slot-value condition 'excl::format-arguments)))
-    (dolist (farg (car fargs))
-      (destructuring-bind (fname (pos file)) farg
-        (signal-compiler-condition
-         :original-condition condition
-         :severity :warning
-         :message (format nil "Undefined function referenced: ~S" fname)
-         :location (make-location (list :file file)
-                                  (list :position (1+ pos))))))))
+    (loop for (fname . pos-file) in (car fargs) do
+          (loop for (pos file) in pos-file do
+                (signal-compiler-condition
+                 :original-condition condition
+                 :severity :warning
+                 :message (format nil "Undefined function referenced: ~S" 
+                                  fname)
+                 :location (make-location (list :file file)
+                                          (list :position (1+ pos))))))))
 
 (defimplementation call-with-compilation-hooks (function)
   (handler-bind ((warning #'handle-compiler-warning)




More information about the slime-cvs mailing list