Not seeing full output when using `with-out-str`
For me, when I run this test in Calva I'm only getting Hello1 printed.
(deftest print-test []
(println (with-out-str (clojure.pprint/pprint "Hello1")))
(println (with-out-str (clojure.pprint/pprint "Hello2"))))
And even this shorter one was producing the same output for me:
(deftest print-test []
(println (with-out-str (clojure.pprint/pprint "Hello1")))
(println "Hello2"))
NOTE: Today it worked, but 18 days ago it wasn't (as well as on many occasions earlier).
Discussion in Calva channel here: https://clojurians.slack.com/archives/CBE668G4R/p1659634488364589.
Was this just with tests or did it happen outside of tests?
Was this just with tests or did it happen outside of tests?
I can't say for sure now, today I tried this in both test and non-test environments and it worked both times. So it is either fixed or depends on something else.
Well, we haven't fixed anything around this on purpose, and other changes have been quite unrelated.
Did you run it with the Calva test runner, or from the REPL?
In all cases I run it either with "evaluate selection/top level form" or using one of "run current test", "run all tests from the current namespace" commands. Or it was evaluating of an expression in calva repl window. I can't say for sure now. When I reproduce it again, what additional debug info should I collect? What else should I try?
On Thu, May 4, 2023, 10:55 PM Peter Strömberg @.***> wrote:
Well, we haven't fixed anything around this on purpose, and other changes have been quite unrelated.
Did you run it with the Calva test runner, or from the REPL?
— Reply to this email directly, view it on GitHub https://github.com/BetterThanTomorrow/calva/issues/2172#issuecomment-1535733640, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGXVI5XRCPA72HY4JF6IVELXESI3JANCNFSM6AAAAAAXLISYNM . You are receiving this because you authored the thread.Message ID: @.***>
When I reproduce it again, what additional debug info should I collect? What else should I try?
There's a command for enabling a printout of a log with messages sent and recieved by our nREPL client:
I really doubt that the error should be there, but would be good to confirm.
Just reproduced it again by evaluating an expression in the Calva output window (using Option-Enter in it). My expression is a one line macro call that generates two println statements but only the first one is printed in the repl window:
(override-delegate {} Connection Statement)
["type methods" Connection ()]
; Syntax error (ClassFormatError) compiling reify* at (.calva/output-window/output.calva-repl:357:1).
; Duplicate method name "isWrapperFor" with signature "(Ljava.lang.Class;)Z" in class file company/reify$eval8473$reify__8574
The second message is shown in the log but not on the screen: ["type methods" Statement ()].
Could it be a race condition between processing an event from the output stream vs. the error stream?
I tried to reproduce the original example to see if this state was persistent and this simpler version didn't reproduce the issue:
clj꞉reify꞉>
(defn print-test []
(println (with-out-str (clojure.pprint/pprint "Hello1")))
(println "Hello2"))
#'reify/print-test
clj:reify꞉>
(print-test)
"Hello1"
Hello2
nil
I then created a test and used "Run the current test" command (all in the calva output window):
(deftest print-test []
(println (with-out-str (clojure.pprint/pprint "Hello1")))
(println (with-out-str (clojure.pprint/pprint "Hello2"))))
I got the output window only show "Hello1" and then nothing. It appeared stuck but it wasn't, I was able to execute more commands after it and even run the test again a few times and it was printing both messages properly on subsequent attempts.
clj꞉reify꞉>
; Running test: print-test…
"Hello1"
Maybe some other extension is messing with Calva? How can I debug this further?
Here is a complete log (of the first issue):
-> sent
{
id: '438',
op: 'eval',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
code: '(override-delegate {} Connection Statement)',
file: '/Users/username/src/company/.calva/output-window/output.calva-repl',
line: 357,
column: 1,
stdout: [Function: stdout],
stderr: [Function: stderr],
pprint: false
}
<- received
{
id: '438',
out: '["type methods" Connection ()]\n\n',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}
<- received
{
id: '438',
out: '["type methods" Statement ()]\n\n',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}
<- received
{
err: 'Syntax error (ClassFormatError) compiling reify* at (.calva/output-window/output.calva-repl:357:1).\n' +
'Duplicate method name "isWrapperFor" with signature "(Ljava.lang.Class;)Z" in class file company/reify$eval8473$reify__8574\n',
id: '438',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}
<- received
{
ex: 'class clojure.lang.Compiler$CompilerException',
id: '438',
'root-ex': 'class clojure.lang.Compiler$CompilerException',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
status: [ 'eval-error' ]
}
<- received
{
id: '438',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
status: [ 'done' ]
}
-> sent
{
op: 'stacktrace',
id: '439',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a'
}
<- received
{
'changed-namespaces': {},
id: '438',
'repl-type': 'clj',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
status: [ 'state' ]
}
<- received
{
class: 'clojure.lang.Compiler$CompilerException',
column: 1,
data: '#:clojure.error{:phase :compile-syntax-check, :line 357, :column 1, :source "/Users/username/src/company/.calva/output-window/output.calva-repl", :symbol reify*}',
file: '/Users/username/src/company/.calva/output-window/output.calva-repl',
'file-url': 'file:/Users/username/src/company/.calva/output-window/output.calva-repl',
id: '439',
line: 357,
location: {
'clojure.error/column': 1,
'clojure.error/line': 357,
'clojure.error/phase': 'compile-syntax-check',
'clojure.error/source': '/Users/username/src/company/.calva/output-window/output.calva-repl',
'clojure.error/symbol': 'reify*'
},
message: 'Syntax error compiling reify* at (/Users/username/src/company/.calva/output-window/output.calva-repl:357:1).',
path: '.calva/output-window/output.calva-repl',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
stacktrace: [
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7132,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7112,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6762,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler$BodyExpr$Parser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6137,
method: 'parse',
name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler$LetExpr$Parser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6453,
method: 'parse',
name: 'clojure.lang.Compiler$LetExpr$Parser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7124,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6762,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler$BodyExpr$Parser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6137,
method: 'parse',
name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler$FnMethod',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 5479,
method: 'parse',
name: 'clojure.lang.Compiler$FnMethod/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler$FnExpr',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 4041,
method: 'parse',
name: 'clojure.lang.Compiler$FnExpr/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7122,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7191,
method: 'eval',
name: 'clojure.lang.Compiler/eval',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7149,
method: 'eval',
name: 'clojure.lang.Compiler/eval',
type: 'java'
},
{
class: 'clojure.core$eval',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'eval',
line: 3215,
method: 'invokeStatic',
name: 'clojure.core$eval/invokeStatic',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/eval'
},
{
class: 'clojure.core$eval',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'eval',
line: 3211,
method: 'invoke',
name: 'clojure.core$eval/invoke',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/eval'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate/fn/fn',
line: 87,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 152,
method: 'applyToHelper',
name: 'clojure.lang.AFn/applyToHelper',
type: 'java'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 144,
method: 'applyTo',
name: 'clojure.lang.AFn/applyTo',
type: 'java'
},
{
class: 'clojure.core$apply',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'apply',
line: 667,
method: 'invokeStatic',
name: 'clojure.core$apply/invokeStatic',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/apply'
},
{
class: 'clojure.core$with_bindings_STAR_',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'with-bindings*',
line: 1990,
method: 'invokeStatic',
name: 'clojure.core$with_bindings_STAR_/invokeStatic',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/with-bindings*'
},
{
class: 'clojure.core$with_bindings_STAR_',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'with-bindings*',
line: 1990,
method: 'doInvoke',
name: 'clojure.core$with_bindings_STAR_/doInvoke',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/with-bindings*'
},
{
class: 'clojure.lang.RestFn',
file: 'RestFn.java',
'file-url': [],
flags: [Array],
line: 425,
method: 'invoke',
name: 'clojure.lang.RestFn/invoke',
type: 'java'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate/fn',
line: 87,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'clojure.main$repl$read_eval_print__9206$fn__9209',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl/read-eval-print/fn',
line: 437,
method: 'invoke',
name: 'clojure.main$repl$read_eval_print__9206$fn__9209/invoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl$read_eval_print__9206',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl/read-eval-print',
line: 437,
method: 'invoke',
name: 'clojure.main$repl$read_eval_print__9206/invoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl$fn__9215',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl/fn',
line: 458,
method: 'invoke',
name: 'clojure.main$repl$fn__9215/invoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl',
line: 458,
method: 'invokeStatic',
name: 'clojure.main$repl/invokeStatic',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl',
line: 368,
method: 'doInvoke',
name: 'clojure.main$repl/doInvoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.lang.RestFn',
file: 'RestFn.java',
'file-url': [],
flags: [Array],
line: 1523,
method: 'invoke',
name: 'clojure.lang.RestFn/invoke',
type: 'java'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate',
line: 84,
method: 'invokeStatic',
name: 'nrepl.middleware.interruptible_eval$evaluate/invokeStatic',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate',
line: 56,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$evaluate/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'interruptible-eval/fn/fn',
line: 152,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/interruptible-eval'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 22,
method: 'run',
name: 'clojure.lang.AFn/run',
type: 'java'
},
{
class: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372',
file: 'session.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
flags: [Array],
fn: 'session-exec/main-loop/fn',
line: 218,
method: 'invoke',
name: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372/invoke',
ns: 'nrepl.middleware.session',
type: 'clj',
var: 'nrepl.middleware.session/session-exec'
},
{
class: 'nrepl.middleware.session$session_exec$main_loop__1368',
file: 'session.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
flags: [Array],
fn: 'session-exec/main-loop',
line: 217,
method: 'invoke',
name: 'nrepl.middleware.session$session_exec$main_loop__1368/invoke',
ns: 'nrepl.middleware.session',
type: 'clj',
var: 'nrepl.middleware.session/session-exec'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 22,
method: 'run',
name: 'clojure.lang.AFn/run',
type: 'java'
},
{
class: 'java.lang.Thread',
file: 'Thread.java',
'file-url': [],
flags: [Array],
line: 833,
method: 'run',
name: 'java.lang.Thread/run',
type: 'java'
}
]
}
<- received
{
class: 'java.lang.ClassFormatError',
id: '439',
message: 'Duplicate method name "isWrapperFor" with signature "(Ljava.lang.Class;)Z" in class file company/reify$eval8473$reify__8574',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
stacktrace: [
{
class: 'java.lang.ClassLoader',
file: 'ClassLoader.java',
'file-url': [],
flags: [Array],
line: -2,
method: 'defineClass1',
name: 'java.lang.ClassLoader/defineClass1',
type: 'java'
},
{
class: 'java.lang.ClassLoader',
file: 'ClassLoader.java',
'file-url': [],
flags: [Array],
line: 1012,
method: 'defineClass',
name: 'java.lang.ClassLoader/defineClass',
type: 'java'
},
{
class: 'java.lang.ClassLoader',
file: 'ClassLoader.java',
'file-url': [],
flags: [Array],
line: 874,
method: 'defineClass',
name: 'java.lang.ClassLoader/defineClass',
type: 'java'
},
{
class: 'clojure.lang.DynamicClassLoader',
file: 'DynamicClassLoader.java',
'file-url': [],
flags: [Array],
line: 46,
method: 'defineClass',
name: 'clojure.lang.DynamicClassLoader/defineClass',
type: 'java'
},
{
class: 'clojure.lang.Compiler$ObjExpr',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 4998,
method: 'getCompiledClass',
name: 'clojure.lang.Compiler$ObjExpr/getCompiledClass',
type: 'java'
},
{
class: 'clojure.lang.Compiler$NewInstanceExpr',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 8105,
method: 'build',
name: 'clojure.lang.Compiler$NewInstanceExpr/build',
type: 'java'
},
{
class: 'clojure.lang.Compiler$NewInstanceExpr$ReifyParser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7977,
method: 'parse',
name: 'clojure.lang.Compiler$NewInstanceExpr$ReifyParser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7124,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7112,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6762,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler$BodyExpr$Parser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6137,
method: 'parse',
name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler$LetExpr$Parser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6453,
method: 'parse',
name: 'clojure.lang.Compiler$LetExpr$Parser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7124,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6762,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler$BodyExpr$Parser',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6137,
method: 'parse',
name: 'clojure.lang.Compiler$BodyExpr$Parser/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler$FnMethod',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 5479,
method: 'parse',
name: 'clojure.lang.Compiler$FnMethod/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler$FnExpr',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 4041,
method: 'parse',
name: 'clojure.lang.Compiler$FnExpr/parse',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7122,
method: 'analyzeSeq',
name: 'clojure.lang.Compiler/analyzeSeq',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 6806,
method: 'analyze',
name: 'clojure.lang.Compiler/analyze',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7191,
method: 'eval',
name: 'clojure.lang.Compiler/eval',
type: 'java'
},
{
class: 'clojure.lang.Compiler',
file: 'Compiler.java',
'file-url': [],
flags: [Array],
line: 7149,
method: 'eval',
name: 'clojure.lang.Compiler/eval',
type: 'java'
},
{
class: 'clojure.core$eval',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'eval',
line: 3215,
method: 'invokeStatic',
name: 'clojure.core$eval/invokeStatic',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/eval'
},
{
class: 'clojure.core$eval',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'eval',
line: 3211,
method: 'invoke',
name: 'clojure.core$eval/invoke',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/eval'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate/fn/fn',
line: 87,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265$fn__1266/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 152,
method: 'applyToHelper',
name: 'clojure.lang.AFn/applyToHelper',
type: 'java'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 144,
method: 'applyTo',
name: 'clojure.lang.AFn/applyTo',
type: 'java'
},
{
class: 'clojure.core$apply',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'apply',
line: 667,
method: 'invokeStatic',
name: 'clojure.core$apply/invokeStatic',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/apply'
},
{
class: 'clojure.core$with_bindings_STAR_',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'with-bindings*',
line: 1990,
method: 'invokeStatic',
name: 'clojure.core$with_bindings_STAR_/invokeStatic',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/with-bindings*'
},
{
class: 'clojure.core$with_bindings_STAR_',
file: 'core.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/core.clj',
flags: [Array],
fn: 'with-bindings*',
line: 1990,
method: 'doInvoke',
name: 'clojure.core$with_bindings_STAR_/doInvoke',
ns: 'clojure.core',
type: 'clj',
var: 'clojure.core/with-bindings*'
},
{
class: 'clojure.lang.RestFn',
file: 'RestFn.java',
'file-url': [],
flags: [Array],
line: 425,
method: 'invoke',
name: 'clojure.lang.RestFn/invoke',
type: 'java'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate/fn',
line: 87,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$evaluate$fn__1265/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'clojure.main$repl$read_eval_print__9206$fn__9209',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl/read-eval-print/fn',
line: 437,
method: 'invoke',
name: 'clojure.main$repl$read_eval_print__9206$fn__9209/invoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl$read_eval_print__9206',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl/read-eval-print',
line: 437,
method: 'invoke',
name: 'clojure.main$repl$read_eval_print__9206/invoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl$fn__9215',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl/fn',
line: 458,
method: 'invoke',
name: 'clojure.main$repl$fn__9215/invoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl',
line: 458,
method: 'invokeStatic',
name: 'clojure.main$repl/invokeStatic',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.main$repl',
file: 'main.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/org/clojure/clojure/1.11.1/clojure-1.11.1.jar!/clojure/main.clj',
flags: [Array],
fn: 'repl',
line: 368,
method: 'doInvoke',
name: 'clojure.main$repl/doInvoke',
ns: 'clojure.main',
type: 'clj',
var: 'clojure.main/repl'
},
{
class: 'clojure.lang.RestFn',
file: 'RestFn.java',
'file-url': [],
flags: [Array],
line: 1523,
method: 'invoke',
name: 'clojure.lang.RestFn/invoke',
type: 'java'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate',
line: 84,
method: 'invokeStatic',
name: 'nrepl.middleware.interruptible_eval$evaluate/invokeStatic',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'nrepl.middleware.interruptible_eval$evaluate',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'evaluate',
line: 56,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$evaluate/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/evaluate'
},
{
class: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302',
file: 'interruptible_eval.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/interruptible_eval.clj',
flags: [Array],
fn: 'interruptible-eval/fn/fn',
line: 152,
method: 'invoke',
name: 'nrepl.middleware.interruptible_eval$interruptible_eval$fn__1298$fn__1302/invoke',
ns: 'nrepl.middleware.interruptible-eval',
type: 'clj',
var: 'nrepl.middleware.interruptible-eval/interruptible-eval'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 22,
method: 'run',
name: 'clojure.lang.AFn/run',
type: 'java'
},
{
class: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372',
file: 'session.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
flags: [Array],
fn: 'session-exec/main-loop/fn',
line: 218,
method: 'invoke',
name: 'nrepl.middleware.session$session_exec$main_loop__1368$fn__1372/invoke',
ns: 'nrepl.middleware.session',
type: 'clj',
var: 'nrepl.middleware.session/session-exec'
},
{
class: 'nrepl.middleware.session$session_exec$main_loop__1368',
file: 'session.clj',
'file-url': 'jar:file:/Users/username/.m2/repository/nrepl/nrepl/1.0.0/nrepl-1.0.0.jar!/nrepl/middleware/session.clj',
flags: [Array],
fn: 'session-exec/main-loop',
line: 217,
method: 'invoke',
name: 'nrepl.middleware.session$session_exec$main_loop__1368/invoke',
ns: 'nrepl.middleware.session',
type: 'clj',
var: 'nrepl.middleware.session/session-exec'
},
{
class: 'clojure.lang.AFn',
file: 'AFn.java',
'file-url': [],
flags: [Array],
line: 22,
method: 'run',
name: 'clojure.lang.AFn/run',
type: 'java'
},
{
class: 'java.lang.Thread',
file: 'Thread.java',
'file-url': [],
flags: [Array],
line: 833,
method: 'run',
name: 'java.lang.Thread/run',
type: 'java'
}
]
}
<- received
{
id: '439',
session: '1b26af0e-8a7b-43d0-9b24-0df0eb70335a',
status: [ 'done' ]
}
Thanks for those logs. I don't see anything telling in them.
Maybe some other extension is messing with Calva? How can I debug this further?
There's an extension bisect feature in VS Code which helps you disable extensions to find the one causing the problem.
Do you know if it is possible to keep Calva extension? It removed Calva on its first iteration :-)
🤔 I haven't used this feature myself. @PEZ Do you know to answer to the above question?