CMUCL "CVS 19b 19b-release-20050628-3 + minimal debian patches (19B)" from Debian testing SLIME from CVS today GNU Emacs 21.4.1 from Debian testing
When loading a larger system I'm currently working on I always get "Unbalanced parentheses" errors. This is most likely due to this message that I see when doing the same on the console:
; In: LAMBDA (#:G2286 #:G2287 #:G2288)
; (LET (#) ; (DECLARE #) ; (LET # ; #)) ; Note: Deleting unreachable code. ; ; (FUNCALL (THE FUNCTION #'#) ; (PCL::FAST-METHOD-CALL-PV-CELL PCL::.CALL.) ; (PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL PCL::.CALL.) ; PCL::.ARG0.) ; Note: Deleting unreachable code. ;
Nice message, but I don't know where it comes from, i.e. which part of my code it refers to. SLIME isn't very helpful either in this case because, as I said, I get Emacs errors, probably because Emacs sexp parsing fails here. Any idea for a workaround?
FWIW, the *SLIME Source Form* buffer looks like this:
; (LET (#) ; (DECLARE #) ; (LET # ; #))
And the last form in *slime-events* looks like this:
(:return (:ok ((:message "Deleting unreachable code." :severity :note :location (:location (:source-form "; (LET (#)\n; (DECLARE #)\n; (LET #\n; #))\n") (:position 1) nil) :references nil :short-message "Deleting unreachable code.") (:message "Deleting unreachable code." :severity :note :location (:location (:source-form "; (FUNCALL (THE FUNCTION #'#)\n; (PCL::FAST-METHOD-CALL-PV-CELL PCL::.CALL.)\n; (PCL::FAST-METHOD-CALL-NEXT-METHOD-CALL PCL::.CALL.)\n; PCL::.ARG0.)\n") (:position 1) nil) :references nil :short-message "Deleting unreachable code."))) 4)
And finally this is the Emacs backtrace:
Debugger entered--Lisp error: (scan-error "Unbalanced parentheses" 5 57) scan-sexps(2 1) forward-sexp(1) (or (forward-sexp 1) (point)) (progn (goto-char (1+ start)) (or (forward-sexp 1) (point))) (values (1+ start) (progn (goto-char ...) (or ... ...))) (if (slime-same-line-p start (point)) (values start (point)) (values (1+ start) (progn ... ...))) (let ((start ...)) (ignore-errors (slime-forward-sexp)) (if (slime-same-line-p start ...) (values start ...) (values ... ...))) slime-choose-overlay-for-sexp((:location (:source-form "; (LET (#)\n; (DECLARE #)\n; (LET #\n; #))\n") (:position 1) nil)) (if (eq (slime-note.severity note) :read-error) (values pos (1+ pos)) (slime-choose-overlay-for-sexp location)) (let* ((--rest--24678 rand-24676) (pos ...) (alignp ...)) (if --rest--24678 (signal ... ...)) (if (eq ... :read-error) (values pos ...) (slime-choose-overlay-for-sexp location))) (progn (let* (... ... ...) (if --rest--24678 ...) (if ... ... ...))) (destructuring-bind (pos &optional alignp) rand-24676 (if (eq ... :read-error) (values pos ...) (slime-choose-overlay-for-sexp location))) (cond ((eql op-24675 ...) (destructuring-bind ... rand-24676 ...)) (t (slime-choose-overlay-for-sexp location))) (case op-24675 (:position (destructuring-bind ... rand-24676 ...)) (t (slime-choose-overlay-for-sexp location))) (let* ((tmp-24677 pos) (op-24675 ...) (rand-24676 ...)) (case op-24675 (:position ...) (t ...))) (destructure-case pos ((:position pos &optional alignp) (if ... ... ...)) (t (slime-choose-overlay-for-sexp location))) (let* ((--rest--24674 rand-24672) (_file ...) (pos ...) (_hints ...)) (destructure-case pos (... ...) (t ...))) (progn (let* (... ... ... ...) (destructure-case pos ... ...))) (destructuring-bind (_file pos _hints) rand-24672 (destructure-case pos (... ...) (t ...))) (cond ((eql op-24671 ...) (destructuring-bind ... rand-24672)) ((eql op-24671 ...) (destructuring-bind ... rand-24672 ...)) (t (error "destructure-case failed: %S" tmp-24673))) (case op-24671 (:error (destructuring-bind ... rand-24672)) (:location (destructuring-bind ... rand-24672 ...)) (t (error "destructure-case failed: %S" tmp-24673))) (let* ((tmp-24673 location) (op-24671 ...) (rand-24672 ...)) (case op-24671 (:error ...) (:location ...) (t ...))) (destructure-case location ((:error msg)) ((:location _file pos _hints) (destructure-case pos ... ...))) (let ((location ...)) (destructure-case location (...) (... ...))) slime-choose-overlay-region((:message "Deleting unreachable code." :severity :note :location (:location (:source-form "; (LET (#)\n; (DECLARE #)\n; (LET #\n; #))\n") (:position 1) nil) :references nil :short-message "Deleting unreachable code.")) (let* ((G24670 ...) (start ...) (end ...)) (when start (goto-char start) (let ... ...))) (multiple-value-bind (start end) (slime-choose-overlay-region note) (when start (goto-char start) (let ... ...))) slime-overlay-note((:message "Deleting unreachable code." :severity :note :location (:location (:source-form "; (LET (#)\n; (DECLARE #)\n; (LET #\n; #))\n") (:position 1) nil) :references nil :short-message "Deleting unreachable code.")) mapc(slime-overlay-note ((:message "Deleting unreachable code." :severity :note :location (:location ... ... nil) :references nil :short-message "Deleting unreachable code.") (:message "Deleting unreachable code." :severity :note :location (:location ... ... nil) :references nil :short-message "Deleting unreachable code."))) (save-excursion (slime-remove-old-overlays) (mapc (function slime-overlay-note) (slime-merge-notes-for-display notes))) slime-highlight-notes(((:message "Deleting unreachable code." :severity :note :location (:location ... ... nil) :references nil :short-message "Deleting unreachable code.") (:message "Deleting unreachable code." :severity :note :location (:location ... ... nil) :references nil :short-message "Deleting unreachable code."))) (let* ((G24635 result) (result ...) (secs ...)) (slime-show-note-counts notes secs) (slime-highlight-notes notes)) (multiple-value-bind (result secs) result (slime-show-note-counts notes secs) (slime-highlight-notes notes)) (save-current-buffer (set-buffer buffer) (multiple-value-bind (result secs) result (slime-show-note-counts notes secs) (slime-highlight-notes notes))) (with-current-buffer buffer (multiple-value-bind (result secs) result (slime-show-note-counts notes secs) (slime-highlight-notes notes))) (let ((notes ...)) (with-current-buffer buffer (multiple-value-bind ... result ... ...)) (run-hook-with-args (quote slime-compilation-finished-hook) notes)) slime-compilation-finished(("NIL" "6.08") #<buffer *slime-repl cmucl*>) (lambda (G23990 result) (slime-compilation-finished result (symbol-value G23990)))(--buffer-- ("NIL" "6.08")) apply((lambda (G23990 result) (slime-compilation-finished result (symbol-value G23990))) --buffer-- ("NIL" "6.08")) (lambda (&rest --cl-rest--) (apply (quote ...) (quote --buffer--) --cl-rest--))(("NIL" "6.08")) funcall((lambda (&rest --cl-rest--) (apply (quote ...) (quote --buffer--) --cl-rest--)) ("NIL" "6.08")) (if (symbol-value G24002) (funcall (symbol-value G24002) result)) (let* ((--rest--24000 rand-23998) (result ...)) (if (symbol-value G24002) (funcall ... result))) (cond ((eql op-23997 ...) (let* ... ...)) ((eql op-23997 ...) (let* ... ... ...)) (t (error "destructure-case failed: %S" tmp-23999))) (let* ((tmp-23999 G23993) (op-23997 ...) (rand-23998 ...)) (cond (... ...) (... ...) (t ...))) (lambda (G24002 G23993) (let* (... ... ...) (cond ... ... ...)))(--cont-- (:ok ("NIL" "6.08"))) apply((lambda (G24002 G23993) (let* (... ... ...) (cond ... ... ...))) --cont-- (:ok ("NIL" "6.08"))) (lambda (&rest --cl-rest--) (apply (quote ...) (quote --cont--) --cl-rest--))((:ok ("NIL" "6.08"))) slime-dispatch-event((:return (:ok ("NIL" "6.08")) 3) #<process SLIME Lisp>) slime-process-available-input() slime-net-filter(#<process SLIME Lisp> "000021(:return (:ok ("NIL" "6.08")) 3)\n")
Thanks, Edi.