Discussion:
slime question, navigating to compilation errors
Jim Newton
2018-11-13 09:12:35 UTC
Permalink
Perhaps someone can give me some advise about using slime with the sbcl
compiler.

When I load an asdf system from inside slime, using ,load-system
sometimes there are compiler warnings and errors printing into the repl
buffer,
*slime-repl sbcl* in my case.

Is there a way navigate to the code where the errors occur?
I've tried the menu items:

SLIME->Compilation->List Notes
SLIME->Compilation->Next Note

But they don't seem to do anything.


For example, in the compile log (printed to the slime repl buffer)
I see several of "issues" in the text, 1) undefined function FINAL-P
2) #'EQ passed as :key which probably should be :test, 3) Required
argument is not a symbol: (SM STATE-MACHINE), which is probably a defun
where it should be defmethod.

Anyway, I can find the errors in my code because I know my own code
pretty well. But isn't there something slime can do to help me which
I'm not taking advantage of?


; compiling (DEFUN FIND-TRANSIT ...)

; file: /private/var/tmp/tmp.5ur0yB
; in: DEFUN FIND-TRANSIT
; (DEFUN NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (
; (NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (RETURN-FROM
NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT #))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
; NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (COND # #)))
; (DOLIST
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
; (NON-DETERMINISTIC-FINITE-AUTOMATA:GET-INITIAL-STATES
; NON-DETERMINISTIC-FINITE-AUTOMATA::SM))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL))))
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA
; ==>
; #'(SB-INT:NAMED-LAMBDA NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; ((NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (BLOCK NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT #
; #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT #
; #))
; (DOLIST (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL)))))
;
; caught ERROR:
; Required argument is not a symbol: (SM STATE-MACHINE)
;
; compilation unit finished
; caught 1 ERROR condition
; compiling (DEFUN FIND-TRANSIT ...)

; file: /private/var/tmp/tmp.x7Lnm3
; in: DEFUN FIND-TRANSIT
; (DEFUN NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (
; (NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (RETURN-FROM
NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT #))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
; NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (COND # #)))
; (DOLIST
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
; (NON-DETERMINISTIC-FINITE-AUTOMATA:GET-INITIAL-STATES
; NON-DETERMINISTIC-FINITE-AUTOMATA::SM))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL))))
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA
; ==>
; #'(SB-INT:NAMED-LAMBDA NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; ((NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (BLOCK NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT #
; #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT #
; #))
; (DOLIST (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL)))))
;
; caught ERROR:
; Required argument is not a symbol: (SM STATE-MACHINE)
;
; compilation unit finished
; caught 1 ERROR condition
; compiling (DEFUN FIND-TRANSIT ...)

; file: /private/var/tmp/tmp.qQtnKo
; in: DEFUN FIND-TRANSIT
; (MEMBER NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION
; NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION :KEY #'EQ)
;
; caught WARNING:
; The function EQ is called by MEMBER with one argument, but wants
exactly two.

; file: /private/var/tmp/tmp.qQtnKo
; in: DEFUN FIND-TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::FINAL-P
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE)
;
; caught STYLE-WARNING:
; undefined function: FINAL-P
;
; compilation unit finished
; Undefined function:
; FINAL-P
; caught 1 WARNING condition
; caught 1 STYLE-WARNING condition
; compiling (DEFUN FIND-TRANSIT ...)

; file: /private/var/tmp/tmp.996P12
; in: DEFUN FIND-TRANSIT
; (MEMBER NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION
; NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY :KEY
#'EQ)
;
; caught WARNING:
; The function EQ is called by MEMBER with one argument, but wants
exactly two.

; file: /private/var/tmp/tmp.996P12
; in: DEFUN FIND-TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::FINAL-P
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE)
;
; caught STYLE-WARNING:
; undefined function: FINAL-P
;
; compilation unit finished
; Undefined function:
; FINAL-P
; caught 1 WARNING condition
; caught 1 STYLE-WARNING condition
; compiling (DEFUN FIND-TRANSIT ...)

; file: /private/var/tmp/tmp.L6YTQn
; in: DEFUN FIND-TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::FINAL-P
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE)
;
; caught STYLE-WARNING:
; undefined function: FINAL-P
;
; compilation unit finished
; Undefined function:
; FINAL-P
; caught 1 STYLE-WARNING condition
; compiling (DEFUN FIND-TRANSIT ...)
; compiling (DEFUN FIND-TRANSIT ...)
CL-USER>
CL-USER>
Luís Oliveira
2018-11-13 18:16:21 UTC
Permalink
Have a look at the *slime-compilation* buffer. There you'll find all the
compilation warnings with useful shortcuts. Not sure why it's not popping
up for you.

Cheers,
Luís
Post by Jim Newton
Perhaps someone can give me some advise about using slime with the sbcl
compiler.
When I load an asdf system from inside slime, using ,load-system
sometimes there are compiler warnings and errors printing into the repl
buffer,
*slime-repl sbcl* in my case.
Is there a way navigate to the code where the errors occur?
SLIME->Compilation->List Notes
SLIME->Compilation->Next Note
But they don't seem to do anything.
For example, in the compile log (printed to the slime repl buffer)
I see several of "issues" in the text, 1) undefined function FINAL-P
2) #'EQ passed as :key which probably should be :test, 3) Required
argument is not a symbol: (SM STATE-MACHINE), which is probably a defun
where it should be defmethod.
Anyway, I can find the errors in my code because I know my own code
pretty well. But isn't there something slime can do to help me which
I'm not taking advantage of?
; compiling (DEFUN FIND-TRANSIT ...)
; file: /private/var/tmp/tmp.5ur0yB
; in: DEFUN FIND-TRANSIT
; (DEFUN NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (
; (NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT
;
(NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (RETURN-FROM
NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT #))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
;
NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (COND # #)))
; (DOLIST
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
; (NON-DETERMINISTIC-FINITE-AUTOMATA:GET-INITIAL-STATES
; NON-DETERMINISTIC-FINITE-AUTOMATA::SM))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL))))
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA
; ==>
; #'(SB-INT:NAMED-LAMBDA NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; ((NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (BLOCK NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT #
; #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT #
; #))
; (DOLIST (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL)))))
;
; Required argument is not a symbol: (SM STATE-MACHINE)
;
; compilation unit finished
; caught 1 ERROR condition
; compiling (DEFUN FIND-TRANSIT ...)
; file: /private/var/tmp/tmp.x7Lnm3
; in: DEFUN FIND-TRANSIT
; (DEFUN NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (
; (NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT
;
(NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (RETURN-FROM
NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT #))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
;
NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY)
; (COND # #)))
; (DOLIST
; (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE
; (NON-DETERMINISTIC-FINITE-AUTOMATA:GET-INITIAL-STATES
; NON-DETERMINISTIC-FINITE-AUTOMATA::SM))
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL))))
; --> PROGN SB-IMPL::%DEFUN SB-IMPL::%DEFUN SB-INT:NAMED-LAMBDA
; ==>
; #'(SB-INT:NAMED-LAMBDA NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; ((NON-DETERMINISTIC-FINITE-AUTOMATA::SM
; NON-DETERMINISTIC-FINITE-AUTOMATA:STATE-MACHINE))
; (BLOCK NON-DETERMINISTIC-FINITE-AUTOMATA::FIND-TRANSIT
; (LABELS ((NON-DETERMINISTIC-FINITE-AUTOMATA::EXTRACT #
; #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT #
; #))
; (DOLIST (NON-DETERMINISTIC-FINITE-AUTOMATA::STATE #)
; (NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSIT
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE NIL)))))
;
; Required argument is not a symbol: (SM STATE-MACHINE)
;
; compilation unit finished
; caught 1 ERROR condition
; compiling (DEFUN FIND-TRANSIT ...)
; file: /private/var/tmp/tmp.qQtnKo
; in: DEFUN FIND-TRANSIT
; (MEMBER NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION
; NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION :KEY #'EQ)
;
; The function EQ is called by MEMBER with one argument, but wants
exactly two.
; file: /private/var/tmp/tmp.qQtnKo
; in: DEFUN FIND-TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::FINAL-P
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE)
;
; undefined function: FINAL-P
;
; compilation unit finished
; FINAL-P
; caught 1 WARNING condition
; caught 1 STYLE-WARNING condition
; compiling (DEFUN FIND-TRANSIT ...)
; file: /private/var/tmp/tmp.996P12
; in: DEFUN FIND-TRANSIT
; (MEMBER NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION
; NON-DETERMINISTIC-FINITE-AUTOMATA::TRANSITION-HISTORY :KEY
#'EQ)
;
; The function EQ is called by MEMBER with one argument, but wants
exactly two.
; file: /private/var/tmp/tmp.996P12
; in: DEFUN FIND-TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::FINAL-P
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE)
;
; undefined function: FINAL-P
;
; compilation unit finished
; FINAL-P
; caught 1 WARNING condition
; caught 1 STYLE-WARNING condition
; compiling (DEFUN FIND-TRANSIT ...)
; file: /private/var/tmp/tmp.L6YTQn
; in: DEFUN FIND-TRANSIT
; (NON-DETERMINISTIC-FINITE-AUTOMATA::FINAL-P
; NON-DETERMINISTIC-FINITE-AUTOMATA::STATE)
;
; undefined function: FINAL-P
;
; compilation unit finished
; FINAL-P
; caught 1 STYLE-WARNING condition
; compiling (DEFUN FIND-TRANSIT ...)
; compiling (DEFUN FIND-TRANSIT ...)
CL-USER>
CL-USER>
Loading...