This repository was archived by the owner on Oct 21, 2022. It is now read-only.
This repository was archived by the owner on Oct 21, 2022. It is now read-only.
better error messages #77
Open
Description
Hey guys,
I was checking around what I thought was normal behavior for clojure and found out that it is probably a Lighttable thing. My problem is that any error that occurs in Lighttable creates a stack trace which is unreadable. For example:
(filter #() [1 2 3 4])
on the REPL produces:
ArityException Wrong number of args (1) passed to: core/eval21331/fn--21332 clojure.lang.AFn.throwArity (AFn.java:429)
Whereas on my Lighttable produces:
clojure.lang.ArityException: Wrong number of args (1) passed to: core/eval5308/fn--5309
AFn.java:429 clojure.lang.AFn.throwArity
AFn.java:32 clojure.lang.AFn.invoke
core.clj:2601 clojure.core/filter[fn]
LazySeq.java:40 clojure.lang.LazySeq.sval
LazySeq.java:49 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
core_print.clj:46 clojure.core/print-sequential
core_print.clj:147 clojure.core/fn
MultiFn.java:231 clojure.lang.MultiFn.invoke
core.clj:3392 clojure.core/pr-on
core.clj:3404 clojure.core/pr
AFn.java:154 clojure.lang.AFn.applyToHelper
RestFn.java:132 clojure.lang.RestFn.applyTo
core.clj:624 clojure.core/apply
core.clj:4373 clojure.core/pr-str
RestFn.java:408 clojure.lang.RestFn.invoke
eval.clj:68 lighttable.nrepl.eval/clean-serialize
RestFn.java:423 clojure.lang.RestFn.invoke
eval.clj:81 lighttable.nrepl.eval/->result
AFn.java:156 clojure.lang.AFn.applyToHelper
AFn.java:144 clojure.lang.AFn.applyTo
core.clj:626 clojure.core/apply
core.clj:2468 clojure.core/partial[fn]
RestFn.java:408 clojure.lang.RestFn.invoke
core.clj:2559 clojure.core/map[fn]
LazySeq.java:40 clojure.lang.LazySeq.sval
LazySeq.java:49 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
core.clj:2595 clojure.core/filter[fn]
LazySeq.java:40 clojure.lang.LazySeq.sval
LazySeq.java:49 clojure.lang.LazySeq.seq
Cons.java:39 clojure.lang.Cons.next
RT.java:598 clojure.lang.RT.next
core.clj:64 clojure.core/next
core.clj:2856 clojure.core/dorun
core.clj:2871 clojure.core/doall
eval.clj:125 lighttable.nrepl.eval/eval-clj
RestFn.java:442 clojure.lang.RestFn.invoke
eval.clj:191 lighttable.nrepl.eval/eval2119[fn]
AFn.java:152 clojure.lang.AFn.applyToHelper
AFn.java:144 clojure.lang.AFn.applyTo
core.clj:624 clojure.core/apply
core.clj:1862 clojure.core/with-bindings*
RestFn.java:425 clojure.lang.RestFn.invoke
eval.clj:176 lighttable.nrepl.eval/eval2119[fn]
eval.clj:175 lighttable.nrepl.eval/eval2119[fn]
MultiFn.java:227 clojure.lang.MultiFn.invoke
core.clj:97 lighttable.nrepl.core/queued[fn]
core.clj:2402 clojure.core/comp[fn]
interruptible_eval.clj:159 clojure.tools.nrepl.middleware.interruptible-eval/run-next[fn]
AFn.java:22 clojure.lang.AFn.run
ThreadPoolExecutor.java:1145 java.util.concurrent.ThreadPoolExecutor.runWorker
ThreadPoolExecutor.java:615 java.util.concurrent.ThreadPoolExecutor$Worker.run
Thread.java:745 java.lang.Thread.run
I don't know if this behavior is only on my Lighttable version but I guess not.
On the other hand I saw that you use clj-stacktrace in nrepl/exception.clj which is a user specific code. Have you checked clojure.stacktrace from Clojure itself?
In tryclojure they use it and it is extremely simple; you can see the relevant lines here
Let me know your thoughts about it
Metadata
Metadata
Assignees
Labels
No labels