[slime-cvs] CVS slime

CVS User heller heller at common-lisp.net
Sat Nov 13 11:18:03 UTC 2010


Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv8767

Modified Files:
	ChangeLog swank-lispworks.lisp 
Log Message:
Improve source locations for compiler messages in Lispworks.

* swank-lispworks.lisp (map-error-database)
(signal-error-data-base, make-dspec-progenitor-location): Pass the
edit-path along.
(signal-undefined-functions): No edit-path available so just use
nil.

--- /project/slime/cvsroot/slime/ChangeLog	2010/11/12 19:42:51	1.2164
+++ /project/slime/cvsroot/slime/ChangeLog	2010/11/13 11:18:03	1.2165
@@ -1,3 +1,13 @@
+2010-11-13  Helmut Eller  <heller at common-lisp.net>
+
+	Improve source locations for compiler messages in Lispworks.
+
+	* swank-lispworks.lisp (map-error-database)
+	(signal-error-data-base, make-dspec-progenitor-location): Pass the
+	edit-path along.
+	(signal-undefined-functions): No edit-path available so just use
+	nil.
+
 2010-11-12  Helmut Eller  <heller at common-lisp.net>
 
 	Improve frame-source-location for Lispworks.
--- /project/slime/cvsroot/slime/swank-lispworks.lisp	2010/11/12 19:42:51	1.139
+++ /project/slime/cvsroot/slime/swank-lispworks.lisp	2010/11/13 11:18:03	1.140
@@ -520,8 +520,10 @@
 (defun map-error-database (database fn)
   (loop for (filename . defs) in database do
 	(loop for (dspec . conditions) in defs do
-	      (dolist (c conditions) 
-		(funcall fn filename dspec (if (consp c) (car c) c))))))
+	      (dolist (c conditions)
+                (multiple-value-bind (condition path)
+                    (if (consp c) (values (car c) (cdr c)) (values c nil))
+                  (funcall fn filename dspec condition path))))))
 
 (defun lispworks-severity (condition)
   (cond ((not condition) :warning)
@@ -649,23 +651,25 @@
                       (dspec-function-name-position dspec `(:offset ,offset 0))
                       hints)))))
 
-(defun make-dspec-progenitor-location (dspec location)
+(defun make-dspec-progenitor-location (dspec location edit-path)
   (let ((canon-dspec (dspec:canonicalize-dspec dspec)))
     (make-dspec-location
      (if canon-dspec
          (if (dspec:local-dspec-p canon-dspec)
              (dspec:dspec-progenitor canon-dspec)
-           canon-dspec)
-       nil)
-     location)))
+             canon-dspec)
+         nil)
+     location
+     (if edit-path
+         (list :edit-path (edit-path-to-cmucl-source-path edit-path))))))
 
 (defun signal-error-data-base (database &optional location)
   (map-error-database 
    database
-   (lambda (filename dspec condition)
+   (lambda (filename dspec condition edit-path)
      (signal-compiler-condition
       (format nil "~A" condition)
-      (make-dspec-progenitor-location dspec (or location filename))
+      (make-dspec-progenitor-location dspec (or location filename) edit-path)
       condition))))
 
 (defun unmangle-unfun (symbol)
@@ -680,10 +684,11 @@
 	     (dolist (dspec dspecs)
 	       (signal-compiler-condition 
 		(format nil "Undefined function ~A" (unmangle-unfun unfun))
-		(make-dspec-progenitor-location dspec
-                                                (or filename
-                                                    (gethash (list unfun dspec)
-                                                             *undefined-functions-hash*)))
+		(make-dspec-progenitor-location 
+                 dspec
+                 (or filename
+                     (gethash (list unfun dspec) *undefined-functions-hash*))
+                 nil)
 		nil)))
 	   htab))
 





More information about the slime-cvs mailing list