I found when working on ticket 191 (dead now, I suppose) that counting the
stack elements is not reliable, but = works to get rid of duplicates.  Below
you can compare java's to your new function - the clojure has one duplicate
element (the very last one).  Also, I find the "..." useful to know
something is cut off.

root-cause is too generic of a name since it only strips out
CompileException.

Will clojure.stacktrace be deprecated or patched to use this implementation?

My patch for 191 includes test code if you want to adjust it for this.

-Mike

user=> (.printStackTrace *e)
java.lang.Exception: Unable to resolve symbol: x in this context,
compiling:(NO_SOURCE_FILE:0)
        at clojure.lang.Compiler.analyze(Compiler.java:5777)
        at clojure.lang.Compiler.analyze(Compiler.java:5723)
        at clojure.lang.Compiler.eval(Compiler.java:6002)
        at clojure.lang.Compiler.eval(Compiler.java:5965)
        at clojure.core$eval.invokeStatic(core.clj:2652)
        at clojure.core$eval.invoke(core.clj)
        at clojure.main$repl$read_eval_print__5766.invoke(main.clj:177)
        at clojure.main$repl$fn__5771.invoke(main.clj:198)
        at clojure.main$repl.doInvoke(main.clj:198)
        at clojure.lang.RestFn.invoke(RestFn.java:422)
        at clojure.main$repl_opt.invoke(main.clj:256)
        at clojure.main$main.doInvoke(main.clj:349)
        at clojure.lang.RestFn.invoke(RestFn.java:398)
        at clojure.lang.Var.invoke(Var.java:361)
        at clojure.lang.AFn.applyToHelper(AFn.java:159)
        at clojure.lang.Var.applyTo(Var.java:482)
        at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: Unable to resolve symbol: x in this context
        at clojure.lang.Compiler.resolveIn(Compiler.java:6251)
        at clojure.lang.Compiler.resolve(Compiler.java:6195)
        at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6158)
        at clojure.lang.Compiler.analyze(Compiler.java:5744)
        ... 16 more
nil

user=> (pst *e 40)
CompilerException java.lang.Exception: Unable to resolve symbol: x in this
context, compiling:(NO_SOURCE_FILE:0)
        clojure.lang.Compiler.analyze (Compiler.java:5777)
        clojure.lang.Compiler.analyze (Compiler.java:5723)
        clojure.lang.Compiler.eval (Compiler.java:6002)
        clojure.lang.Compiler.eval (Compiler.java:5965)
        clojure.core/eval (core.clj:2652)
        clojure.core/eval (core.clj:-1)
        clojure.main/repl/read-eval-print--5766 (main.clj:177)
        clojure.main/repl/fn--5771 (main.clj:198)
        clojure.main/repl (main.clj:198)
        clojure.main/repl-opt (main.clj:256)
        clojure.main/main (main.clj:349)
        clojure.lang.Var.invoke (Var.java:361)
        clojure.lang.Var.applyTo (Var.java:482)
        clojure.main.main (main.java:37)
Caused by:
Exception Unable to resolve symbol: x in this context
        clojure.lang.Compiler.resolveIn (Compiler.java:6251)
        clojure.lang.Compiler.resolve (Compiler.java:6195)
         clojure.lang.Compiler.analyzeSymbol (Compiler.java:6158)
        clojure.lang.Compiler.analyze (Compiler.java:5744)
        clojure.lang.Compiler.analyze (Compiler.java:5723)
nil

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to