diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2011-07-25 13:36:57 +0000 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2011-07-25 13:36:57 +0000 |
commit | 8c8e8788fd3769b728150d36faa57671d531624a (patch) | |
tree | 1f6defaa37a49bb0e6451d0294e0e8c722e00017 /src/compiler | |
parent | b204a9360fadf090b8f84c04b4f73423f575516e (diff) | |
download | scala-8c8e8788fd3769b728150d36faa57671d531624a.tar.gz scala-8c8e8788fd3769b728150d36faa57671d531624a.tar.bz2 scala-8c8e8788fd3769b728150d36faa57671d531624a.zip |
Always escape control characters when printing ...
Always escape control characters when printing trees.
Escaping of control characters should be performed for both Char and
String constants. This is useful when printing trees of a program that
contains control character as constants. Before that fix, one could get
really broken output that was hard to read.
Review by extempore.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/reflect/internal/Constants.scala | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/compiler/scala/reflect/internal/Constants.scala b/src/compiler/scala/reflect/internal/Constants.scala index 95ba46f243..55bb7c2ceb 100644 --- a/src/compiler/scala/reflect/internal/Constants.scala +++ b/src/compiler/scala/reflect/internal/Constants.scala @@ -211,16 +211,11 @@ trait Constants extends api.Constants { case '"' => "\\\"" case '\'' => "\\\'" case '\\' => "\\\\" - case _ => String.valueOf(ch) + case _ => if (ch.isControl) "\\0" + toOctalString(ch) else String.valueOf(ch) } def escapedStringValue: String = { - def escape(text: String): String = { - text map { ch => - if (ch.isControl) "\\0" + toOctalString(ch) - else escapedChar(ch) - } mkString "" - } + def escape(text: String): String = (text map escapedChar) mkString "" tag match { case NullTag => "null" case StringTag => "\"" + escape(stringValue) + "\"" |