Skip to content

Commit e4f7b38

Browse files
committed
Optimize Show[String] instance
1 parent a190cfe commit e4f7b38

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

library/src/dotty/Show.scala

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,20 @@ object Show {
1919
//
2020
// charEscapeSeq ::= ‘\‘ (‘b‘ | ‘t‘ | ‘n‘ | ‘f‘ | ‘r‘ | ‘"‘ | ‘'‘ | ‘\‘)
2121
def show(str: String) =
22-
"\"" +
23-
str
24-
.replaceAll("\b", "\\\\b")
25-
.replaceAll("\t", "\\\\t")
26-
.replaceAll("\n", "\\\\n")
27-
.replaceAll("\f", "\\\\f")
28-
.replaceAll("\r", "\\\\r")
29-
.replaceAll("\'", "\\\\'")
30-
.replaceAll("\"", "\\\\\"") +
31-
"\""
22+
"\"" + {
23+
val sb = new StringBuilder
24+
str.foreach {
25+
case '\b' => sb.append("\\b")
26+
case '\t' => sb.append("\\t")
27+
case '\n' => sb.append("\\n")
28+
case '\f' => sb.append("\\f")
29+
case '\r' => sb.append("\\r")
30+
case '\'' => sb.append("\\'")
31+
case '\"' => sb.append("\\\"")
32+
case c => sb.append(c)
33+
}
34+
sb.toString
35+
} + "\""
3236
}
3337

3438
implicit val intShow = new Show[Int] {

0 commit comments

Comments
 (0)