aboutsummaryrefslogtreecommitdiff
path: root/library
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-11-30 15:51:36 +0100
committerFelix Mulder <felix.mulder@gmail.com>2016-11-30 16:55:59 +0100
commite4f7b386d42352cea79b2a385668ce47e15cb13c (patch)
tree2a7105e5f004cee9f5b07744422b030c5fda0d7f /library
parenta190cfe4f0ece8221d8d7e4b27e4bf73ca665a56 (diff)
downloaddotty-e4f7b386d42352cea79b2a385668ce47e15cb13c.tar.gz
dotty-e4f7b386d42352cea79b2a385668ce47e15cb13c.tar.bz2
dotty-e4f7b386d42352cea79b2a385668ce47e15cb13c.zip
Optimize `Show[String]` instance
Diffstat (limited to 'library')
-rw-r--r--library/src/dotty/Show.scala24
1 files changed, 14 insertions, 10 deletions
diff --git a/library/src/dotty/Show.scala b/library/src/dotty/Show.scala
index 103341d00..36327b834 100644
--- a/library/src/dotty/Show.scala
+++ b/library/src/dotty/Show.scala
@@ -19,16 +19,20 @@ object Show {
//
// charEscapeSeq ::= ‘\‘ (‘b‘ | ‘t‘ | ‘n‘ | ‘f‘ | ‘r‘ | ‘"‘ | ‘'‘ | ‘\‘)
def show(str: String) =
- "\"" +
- str
- .replaceAll("\b", "\\\\b")
- .replaceAll("\t", "\\\\t")
- .replaceAll("\n", "\\\\n")
- .replaceAll("\f", "\\\\f")
- .replaceAll("\r", "\\\\r")
- .replaceAll("\'", "\\\\'")
- .replaceAll("\"", "\\\\\"") +
- "\""
+ "\"" + {
+ val sb = new StringBuilder
+ str.foreach {
+ case '\b' => sb.append("\\b")
+ case '\t' => sb.append("\\t")
+ case '\n' => sb.append("\\n")
+ case '\f' => sb.append("\\f")
+ case '\r' => sb.append("\\r")
+ case '\'' => sb.append("\\'")
+ case '\"' => sb.append("\\\"")
+ case c => sb.append(c)
+ }
+ sb.toString
+ } + "\""
}
implicit val intShow = new Show[Int] {