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>
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
On Tue, Nov 13, 2018 at 4:14 PM Jim Newton jimka.issy@gmail.com wrote:
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>