diff options
Diffstat (limited to 'library')
-rw-r--r-- | library/src/dotty/Show.scala | 24 |
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] { |