summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2011-07-25 13:36:57 +0000
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2011-07-25 13:36:57 +0000
commit8c8e8788fd3769b728150d36faa57671d531624a (patch)
tree1f6defaa37a49bb0e6451d0294e0e8c722e00017 /src
parentb204a9360fadf090b8f84c04b4f73423f575516e (diff)
downloadscala-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')
-rw-r--r--src/compiler/scala/reflect/internal/Constants.scala9
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) + "\""