The clojure.data.avl AVLMap does not have an implementation for the isEmpty method of the java.util.Map interface.
The cider debugger calls isEmpty on instances of java.util.Map when printing values while stepping through execution. If the value is an AVLMap, this throws an AbstractMethodError that prevents the debugger from working (see the stacktrace below).
I have a workaround, which is to use a :local/root version of clojure.data.avl with isEmpty implemented.
I have not checked if this problem exists on the CLJS implementation.
I am on Clojure 1.12.4 and clojure.data.avl 0.2.1.
Show: Project-Only All
Hide: Clojure Java REPL Tooling Duplicates (35 frames hidden)
- Unhandled java.lang.AbstractMethodError
Method clojure/data/avl/AVLMap.isEmpty()Z is abstract avl.clj: -1 clojure.data.avl.AVLMap/isEmpty
print.clj: 166 orchard.print/print-map
print.clj: 165 orchard.print/print-map
print.clj: 174 orchard.print/eval46055/fn
MultiFn.java: 234 clojure.lang.MultiFn/invoke
print.clj: 301 orchard.print/print-str/fn
print.clj: 301 orchard.print/print-str
print.clj: 295 orchard.print/print-str
debug.clj: 195 cider.nrepl.middleware.debug/pr-short
debug.clj: 183 cider.nrepl.middleware.debug/pr-short
core.clj: 7059 clojure.core/mapv/fn
protocols.clj: 42 clojure.core.protocols/iterator-reduce!
protocols.clj: 52 clojure.core.protocols/iter-reduce
protocols.clj: 74 clojure.core.protocols/fn
protocols.clj: 74 clojure.core.protocols/fn
protocols.clj: 13 clojure.core.protocols/fn/G
core.clj: 6965 clojure.core/reduce
core.clj: 7050 clojure.core/mapv
core.clj: 7050 clojure.core/mapv
core.clj: 2641 clojure.core/partial/fn
core.clj: 7059 clojure.core/mapv/fn
protocols.clj: 42 clojure.core.protocols/iterator-reduce!
protocols.clj: 52 clojure.core.protocols/iter-reduce
protocols.clj: 74 clojure.core.protocols/fn
protocols.clj: 74 clojure.core.protocols/fn
protocols.clj: 13 clojure.core.protocols/fn/G
core.clj: 6965 clojure.core/reduce
core.clj: 7050 clojure.core/mapv
core.clj: 7050 clojure.core/mapv
debug.clj: 200 cider.nrepl.middleware.debug/locals-for-message
debug.clj: 197 cider.nrepl.middleware.debug/locals-for-message
core.clj: 6259 clojure.core/update
core.clj: 6251 clojure.core/update
debug.clj: 244 cider.nrepl.middleware.debug/read-debug-input
debug.clj: 233 cider.nrepl.middleware.debug/read-debug-input
debug.clj: 356 cider.nrepl.middleware.debug/read-debug-command
debug.clj: 322 cider.nrepl.middleware.debug/read-debug-command
debug.clj: 557 cider.nrepl.middleware.debug/break
debug.clj: 535 cider.nrepl.middleware.debug/break
Var.java: 401 clojure.lang.Var/invoke
DebugSupport.java: 23 cider.nrepl.middleware.DebugSupport/doBreak
REPL: 749 fredb.index.storage/eval82032/materialize
REPL: 767 fredb.index.storage/eval82041
REPL: 767 fredb.index.storage/eval82041
Compiler.java: 7757 clojure.lang.Compiler/eval
interruptible_eval.clj: 106 nrepl.middleware.interruptible-eval/evaluator/run/fn
interruptible_eval.clj: 101 nrepl.middleware.interruptible-eval/evaluator/run
session.clj: 251 nrepl.middleware.session/session-exec/session-loop
SessionThread.java: 21 nrepl.SessionThread/run