@@ -37,6 +37,9 @@ object StackTraceOps:
3737 val Self = " "
3838 val CausedBy = " Caused by: "
3939 val Suppressed = " Suppressed: "
40+ def renderDotDelimited (s : String ) = {
41+ fansi.Str .join(s.split('.' ).map(fansi.Color .LightRed (_)), " ." )
42+ }
4043
4144 def header (e : Throwable ): fansi.Str =
4245 def because = e.getCause match { case null => null ; case c => header(c) }
@@ -45,13 +48,12 @@ object StackTraceOps:
4548 case null => " "
4649 case s => s " : $s"
4750 }
48- fansi. Color . LightRed (e.getClass.getName) ++ txt
51+ renderDotDelimited (e.getClass.getName) ++ txt
4952
5053 val seen = mutable.Set .empty[Throwable ]
5154 def unseen (e : Throwable ): Boolean = (e != null && ! seen(e)).tap(if _ then seen += e)
5255
5356 val lines = ListBuffer .empty[fansi.Str ]
54-
5557 // format the stack trace, skipping the shared trace
5658 def print (e : Throwable , r : TraceRelation , share : Array [StackTraceElement ], indents : Int ): Unit = if unseen(e) then
5759 val trace = e.getStackTrace
@@ -65,7 +67,7 @@ object StackTraceOps:
6567 prefix.foreach(frame =>
6668 lines +=
6769 fansi.Str (s " $margin " ) ++ fansi.Color .Red (" at" ) ++ " " ++
68- fansi. Str .join (frame.getClassName.split( '.' ).map(fansi. Color . LightRed (_)), " . " ) ++ " ." ++
70+ renderDotDelimited (frame.getClassName) ++ " ." ++
6971 fansi.Color .LightRed (frame.getMethodName) ++ " (" ++
7072 fansi.Color .LightRed (frame.getFileName) ++ " :" ++
7173 fansi.Color .LightRed (frame.getLineNumber.toString) ++ " )"
0 commit comments