diff options
author | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-07-09 15:06:01 +0000 |
---|---|---|
committer | Aleksandar Pokopec <aleksandar.prokopec@epfl.ch> | 2010-07-09 15:06:01 +0000 |
commit | 029482c86e4940bb47a195eea13d9f66faeb2c66 (patch) | |
tree | ff92f471a60311406e508de51f22ae63b81ed46f | |
parent | 0394b8426ff8ad41f0455c5318518d1a84540290 (diff) | |
download | scala-029482c86e4940bb47a195eea13d9f66faeb2c66.tar.gz scala-029482c86e4940bb47a195eea13d9f66faeb2c66.tar.bz2 scala-029482c86e4940bb47a195eea13d9f66faeb2c66.zip |
Closes #3493. Review by extempore.
-rw-r--r-- | src/library/scala/runtime/ScalaRunTime.scala | 8 | ||||
-rw-r--r-- | test/files/run/t3493.scala | 15 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/library/scala/runtime/ScalaRunTime.scala b/src/library/scala/runtime/ScalaRunTime.scala index a1d15c4b7d..a8cb2340ff 100644 --- a/src/library/scala/runtime/ScalaRunTime.scala +++ b/src/library/scala/runtime/ScalaRunTime.scala @@ -235,6 +235,12 @@ object ScalaRunTime { * */ def stringOf(arg: Any): String = { + import collection.{SortedSet, SortedMap} + def mapTraversable(x: Traversable[_], f: Any => String) = x match { + case ss: SortedSet[_] => ss.map(f) + case ss: SortedMap[_, _] => ss.map(f) + case _ => x.map(f) + } def inner(arg: Any): String = arg match { case null => "null" // Node extends NodeSeq extends Seq[Node] strikes again @@ -252,7 +258,7 @@ object ScalaRunTime { // exception if you call iterator. What a world. // And they can't be infinite either. if (x.getClass.getName startsWith "scala.tools.nsc.io") x.toString - else (x map inner) mkString (x.stringPrefix + "(", ", ", ")") + else (mapTraversable(x, inner)) mkString (x.stringPrefix + "(", ", ", ")") case x => x toString } val s = inner(arg) diff --git a/test/files/run/t3493.scala b/test/files/run/t3493.scala new file mode 100644 index 0000000000..aafe7a3a4a --- /dev/null +++ b/test/files/run/t3493.scala @@ -0,0 +1,15 @@ + + + + +object Test { + + def main(args: Array[String]) { + import scala.collection.immutable._ + val x = TreeSet("a", "b", "c", "d") + val x2 = x + "e" + assert(x2.toString == "TreeSet(a, b, c, d, e)") + assert(x2.toString == runtime.ScalaRunTime.stringOf(x2).trim) + } + +} |