Welcome! Please see the About page for a little more info on how this works.

0 votes
ago in data.avl by

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)

  1. 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
    

Please log in or register to answer this question.

...