summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2006-10-06 15:50:45 +0000
committermichelou <michelou@epfl.ch>2006-10-06 15:50:45 +0000
commit2901639c758397546e8bf7fa994e5612c82be3cd (patch)
tree733f44d1a24d0587d8f60a02398030e80bb0a9a0 /src
parentdc2f20666817ee127588e1071e5f57a0faae7730 (diff)
downloadscala-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
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/ast/TreePrinters.scala9
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Constants.scala42
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Types.scala20
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.