enhancements to stacktrace

5 views
Skip to first unread message

Mike Hinchey

unread,
Jul 3, 2009, 7:38:10 PM7/3/09
to cloju...@googlegroups.com
I started working on some small enhancements to stacktrace.clj I'd like to make if you all approve.

Copy the feature of java stacktrace to print "... 25 more" instead of duplicating stack lines.

Print java class.method in clojure format: class/method.

Make the decision of whether a line is java or clj more accurate.  There are a few cases where it misses clj...

Now: clojure.core$apply__3900.doInvoke (core.clj:390)
Should be: clojure.core/apply (core.clj:390)

Now: swank.commands.basic$eval__904$listener_eval__906.invoke (basic.clj:50)
I'm not sure this one has a clearly correct answer.  This isn't perfect, but closer:
swank.commands.basic/eval/listener_eval (basic.clj:50)

I won't try to replace the underscores with dashes because that could be wrong, unless we try to lookup the symbols.

-Mike

Mike Hinchey

unread,
Sep 13, 2009, 4:14:45 PM9/13/09
to cloju...@googlegroups.com
Hi all.  I have a patch ready for this, but no one replied before.  Stuart Sierra is the original author of this ns.  I'm unsure about your protocol.  Should I go ahead and submit a ticket and patch or assume this is unwanted?

Example output:
user> (inc :a)
user> (print-cause-trace *e)
clojure.lang.Compiler$CompilerException: java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.Number (NO_SOURCE_FILE:0)
 at clojure.lang.Compiler/eval (Compiler.java:4620)
    clojure.core/eval (core.clj:1923)
    swank.commands.basic/eval_region (basic.clj:36)
    swank.commands.basic/eval/listener_eval (basic.clj:50)
    clojure.lang.Var/invoke (Var.java:359)
    user/eval (NO_SOURCE_FILE)
    clojure.lang.Compiler/eval (Compiler.java:4604)
    clojure.core/eval (core.clj:1923)
    swank.core/eval_in_emacs_package (core.clj:58)
    swank.core/eval_for_emacs (core.clj:126)
    clojure.lang.Var/invoke (Var.java:367)
    clojure.lang.AFn/applyToHelper (AFn.java:179)
    clojure.lang.Var/applyTo (Var.java:476)
    clojure.core/apply (core.clj:412)
    swank.core/eval_from_control (core.clj:65)
    swank.core/eval_loop (core.clj:70)
    swank.core/spawn_repl_thread/fn/fn (core.clj:179)
    clojure.lang.AFn/applyToHelper (AFn.java:171)
    clojure.lang.AFn/applyTo (AFn.java:164)
    clojure.core/apply (core.clj:412)
    swank.core/spawn_repl_thread/fn (core.clj:176)
    clojure.lang.RestFn/invoke (RestFn.java:402)
    clojure.lang.AFn/run (AFn.java:37)
    java.lang.Thread/run (Thread.java:636)
Caused by: java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.Number
 at clojure.lang.Numbers/inc (Numbers.java:115)
    user/eval (NO_SOURCE_FILE:1)
    clojure.lang.Compiler/eval (Compiler.java:4604)
    ... 23 more

Thanks,
Mike

Stuart Sierra

unread,
Sep 13, 2009, 10:40:02 PM9/13/09
to Clojure Dev
Please create a ticket, that way at least it won't get lost, and
anyone can apply it.
-SS
Reply all
Reply to author
Forward
0 new messages