diff options
author | michelou <michelou@epfl.ch> | 2006-10-06 15:50:45 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2006-10-06 15:50:45 +0000 |
commit | 2901639c758397546e8bf7fa994e5612c82be3cd (patch) | |
tree | 733f44d1a24d0587d8f60a02398030e80bb0a9a0 | |
parent | dc2f20666817ee127588e1071e5f57a0faae7730 (diff) | |
download | scala-2901639c758397546e8bf7fa994e5612c82be3cd.tar.gz scala-2901639c758397546e8bf7fa994e5612c82be3cd.tar.bz2 scala-2901639c758397546e8bf7fa994e5612c82be3cd.zip |
TreePrinter and Types now use escapedStringValu...
TreePrinter and Types now use escapedStringValue from class Constant
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/TreePrinters.scala | 9 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Constants.scala | 42 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Types.scala | 20 |
3 files changed, 35 insertions, 36 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreePrinters.scala b/src/compiler/scala/tools/nsc/ast/TreePrinters.scala index ec41149264..52e95ea818 100644 --- a/src/compiler/scala/tools/nsc/ast/TreePrinters.scala +++ b/src/compiler/scala/tools/nsc/ast/TreePrinters.scala @@ -290,14 +290,7 @@ abstract class TreePrinters { print(symName(tree, name)) case Literal(x) => - print(x.tag match { - case NullTag => "null" - case StringTag => "\"" + x.stringValue + "\"" - case ClassTag => x.stringValue + ".class" - case CharTag => "\'" + x.charValue + "\'" - case LongTag => x.longValue.toString() + "L" - case _ => x.value.toString() - }) + print(x.escapedStringValue) case TypeTree() => print( diff --git a/src/compiler/scala/tools/nsc/symtab/Constants.scala b/src/compiler/scala/tools/nsc/symtab/Constants.scala index f86f68cf7a..ab2c58cdbd 100644 --- a/src/compiler/scala/tools/nsc/symtab/Constants.scala +++ b/src/compiler/scala/tools/nsc/symtab/Constants.scala @@ -164,24 +164,24 @@ trait Constants requires SymbolTable { def convertTo(pt: Type): Constant = { val target = pt.symbol if (target == tpe.symbol) - this + this else if (target == ByteClass && ByteTag <= tag && tag <= IntTag && - -128 <= intValue && intValue <= 127) - Constant(byteValue) + -128 <= intValue && intValue <= 127) + Constant(byteValue) else if (target == ShortClass && ByteTag <= tag && tag <= IntTag && - -32768 <= intValue && intValue <= 32767) - Constant(shortValue) + -32768 <= intValue && intValue <= 32767) + Constant(shortValue) else if (target == CharClass && ByteTag <= tag && tag <= IntTag && - 0 <= intValue && intValue <= 65635) - Constant(charValue) + 0 <= intValue && intValue <= 65635) + Constant(charValue) else if (target == IntClass && ByteTag <= tag && tag <= IntTag) - Constant(intValue) + Constant(intValue) else if (target == LongClass && ByteTag <= tag && tag <= LongTag) - Constant(longValue) + Constant(longValue) else if (target == FloatClass && ByteTag <= tag && tag <= FloatTag) - Constant(floatValue) + Constant(floatValue) else if (target == DoubleClass && ByteTag <= tag && tag <= DoubleTag) - Constant(doubleValue) + Constant(doubleValue) else { null } @@ -192,6 +192,26 @@ trait Constants requires SymbolTable { else if (tag == ClassTag) signature(typeValue) else value.toString() + def escapedStringValue: String = { + def escape(text: String): String = { + val buf = new StringBuffer + for (val c <- Iterator.fromString(text)) + if (Character.isISOControl(c)) + buf.append("\\0" + Integer.toOctalString(c.asInstanceOf[Int])) + else + buf.append(c) + buf.toString + } + tag match { + case NullTag => "null" + case StringTag => "\"" + escape(stringValue) + "\"" + case ClassTag => signature(typeValue) + ".class" + case CharTag => escape("\'" + charValue + "\'") + case LongTag => longValue.toString() + "L" + case _ => value.toString() + } + } + def typeValue: Type = value.asInstanceOf[Type] def symbolValue: Symbol = value.asInstanceOf[Symbol] diff --git a/src/compiler/scala/tools/nsc/symtab/Types.scala b/src/compiler/scala/tools/nsc/symtab/Types.scala index 3c5524e88e..1441a1e7b5 100644 --- a/src/compiler/scala/tools/nsc/symtab/Types.scala +++ b/src/compiler/scala/tools/nsc/symtab/Types.scala @@ -838,22 +838,8 @@ trait Types requires SymbolTable { override def symbol: Symbol = value.tpe.symbol override def singleDeref: Type = value.tpe override def deconst: Type = value.tpe - override def toString(): String = { - def escape(text: String): String = { - val buf = new StringBuffer - for (val c <- Iterator.fromString(text)) - if (Character.isISOControl(c)) - buf.append("\\0" + Integer.toOctalString(c.asInstanceOf[Int])) - else - buf.append(c) - buf.toString - } - val svalue = - if (value.tag == CharTag) "'" + escape(value.stringValue) + "'" - else if (value.tag == StringTag) "\"" + escape(value.stringValue) + "\"" - else value.stringValue - value.tpe.toString() + "(" + svalue + ")" - } + override def toString(): String = + value.tpe.toString() + "(" + value.escapedStringValue + ")" // override def isNullable: boolean = value.value == null // override def isNonNull: boolean = value.value != null } @@ -979,7 +965,7 @@ trait Types requires SymbolTable { else if (sym.isRoot || sym.isEmptyPackageClass || sym.isInterpreterWrapper || sym.isAnonymousClass || sym.isRefinementClass) "" else if (sym.isPackageClass) sym.fullNameString + "." - else super.prefixString; + else super.prefixString } /** A class representing a method type with parameters. |