Hello,
It seems lispworks is not populating the compiler::*error-database* is a way that is not compatible with slime's current interpretation.
According to map-error-database in swank-lispworks.lisp in my version and the current CVS version, the expected structure of the variable is a list of
(filename . ((dspec . condition) ... ))
In LW 5.1.1, this structure seems to populated differently. the condition is instead a cons with the condition as the car. ie it is now:
(filename . ((dspec . (condition . some-number) ... )))
This change seems to cause the following error when C-c C-c (slime- compile-defun ?) is performed on a function that would yield any kind of warning.
(#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1) fell through ETYPECASE expression. Wanted one of (ERROR STYLE-WARNING WARNING). [Condition of type CONDITIONS:CASE-FAILURE]
Restarts: 0: [ABORT] Abort SLIME compilation. 1: [ABORT] Return to SLIME's top level. 2: [ABORT] Quit process.
Backtrace: 0: CONDITIONS::CONDITIONS-ERROR (:INVISIBLEP T CONDITIONS:CASE- FAILURE (:NAME ETYPECASE :DATUM (#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1) :EXPECTED-TYPE (OR ERROR STYLE-WARNING WARNING) ...)) 1: ERROR (CONDITIONS:CASE-FAILURE &REST (:NAME ETYPECASE :DATUM (#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1) :EXPECTED-TYPE (OR ERROR STYLE-WARNING WARNING) ...)) 2: CONDITIONS::ETYPECASE-ERROR ((#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1) (ERROR STYLE-WARNING WARNING)) 3: SWANK-BACKEND::SIGNAL-COMPILER-CONDITION ("(A is bound but not referenced . 1)" (:LOCATION (:BUFFER "system-test.lisp") (:POSITION 880) NIL) (#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1)) Locals: SWANK-BACKEND:MESSAGE = "(A is bound but not referenced . 1)" SWANK-BACKEND:LOCATION = (:LOCATION (:BUFFER "system- test.lisp") (:POSITION 880) NIL) CONDITION = (#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1) 4: SWANK-BACKEND::MAP-ERROR-DATABASE (((#P"/private/tmp/ LWtemp.APPLEHEAD.ECE.CMU.EDU.37974.18.lisp" (NIL #))) #<Closure 1 subfunction of SWANK-BACKEND::SIGNAL-ERROR-DATA-BASE 4020008644>) Locals: SWANK-BACKEND::DATABASE = ((#P"/private/tmp/ LWtemp.APPLEHEAD.ECE.CMU.EDU.37974.18.lisp" (NIL (# . 1)))) SWANK-BACKEND::FN = #<Closure 1 subfunction of SWANK- BACKEND::SIGNAL-ERROR-DATA-BASE 4020008644> SWANK-BACKEND::FILENAME = #P"/private/tmp/ LWtemp.APPLEHEAD.ECE.CMU.EDU.37974.18.lisp" SWANK-BACKEND::DEFS = ((NIL (#<CONDITIONS::SIMPLE-STYLE- WARNING 4050518B8B> . 1))) DBG::|tail-| = NIL SWANK-BACKEND::DSPEC = NIL SWANK-BACKEND::CONDITIONS = ((#<CONDITIONS::SIMPLE-STYLE- WARNING 4050518B8B> . 1)) DBG::|tail-| = NIL DBG::|dolist-| = ((#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1)) SWANK-BACKEND::C = (#<CONDITIONS::SIMPLE-STYLE-WARNING 4050518B8B> . 1) 5: (HARLEQUIN-COMMON-LISP:SUBFUNCTION 1 (LISPWORKS:TOP-LEVEL-FORM 76)) NIL Locals: SWANK-BACKEND:LOCATION = (:EMACS-BUFFER "system-test.lisp" 880 "(defun test-err (a) (+ 2 (* 4 5)))") SWANK-BACKEND::TMPNAME = #P"/tmp/LWtemp.APPLEHEAD.ECE.CMU.EDU. 37974.18.lisp" STRING = "(defun test-err (a) (+ 2 (* 4 5)))" 6: COMPILER::DO-COMPILATION-UNIT (#<Closure 1 subfunction of (LISPWORKS:TOP-LEVEL-FORM 76) 4020000984> T NIL) Locals: COMPILER::CONTINUATION = #<Closure 1 subfunction of (LISPWORKS:TOP-LEVEL-FORM 76) 4020000984> COMPILER::DO-MESSAGES = T COMPILER::SUMMARIZE = NIL 7: COMPILER::WITH-COMPILATION-UNIT-INTERNAL (#<Closure 1 subfunction of (LISPWORKS:TOP-LEVEL-FORM 76) 4020000984> &KEY NIL NIL NIL) 8: (HARLEQUIN-COMMON-LISP:SUBFUNCTION 1 (LISPWORKS:TOP-LEVEL-FORM 76)) ("(defun test-err (a) (+ 2 (* 4 5)))" &KEY "system-test.lisp" 880 "<DIRECTORY>") 9: SWANK-BACKEND:SWANK-COMPILE-STRING ("(defun test-err (a) (+ 2 (* 4 5)))" &KEY "system-test.lisp" 880 "/Users/opoku/Work/ testworks/diagnosis/")
Thanks.
Osei
On Tue, 19 Feb 2008 13:41:05 -0500, Osei Poku said:
Hello,
It seems lispworks is not populating the compiler::*error-database* is a way that is not compatible with slime's current interpretation.
According to map-error-database in swank-lispworks.lisp in my version and the current CVS version, the expected structure of the variable is a list of
(filename . ((dspec . condition) ... ))
In LW 5.1.1, this structure seems to populated differently. the condition is instead a cons with the condition as the car. ie it is now:
(filename . ((dspec . (condition . some-number) ... )))
This change seems to cause the following error when C-c C-c (slime- compile-defun ?) is performed on a function that would yield any kind of warning.
I will commit a fix for this after further testing.