summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-07-09 15:06:01 +0000
committerAleksandar Pokopec <aleksandar.prokopec@epfl.ch>2010-07-09 15:06:01 +0000
commit029482c86e4940bb47a195eea13d9f66faeb2c66 (patch)
treeff92f471a60311406e508de51f22ae63b81ed46f
parent0394b8426ff8ad41f0455c5318518d1a84540290 (diff)
downloadscala-029482c86e4940bb47a195eea13d9f66faeb2c66.tar.gz
scala-029482c86e4940bb47a195eea13d9f66faeb2c66.tar.bz2
scala-029482c86e4940bb47a195eea13d9f66faeb2c66.zip
Closes #3493. Review by extempore.
-rw-r--r--src/library/scala/runtime/ScalaRunTime.scala8
-rw-r--r--test/files/run/t3493.scala15
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)
+ }
+
+}