summaryrefslogtreecommitdiff
path: root/src/library/scala/runtime/ScalaRunTime.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-06-18 19:09:40 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-06-20 15:46:25 -0700
commit739cc9d1ad8b7d1def468299c9cdc6e9ebb2d143 (patch)
treee0ac244f9bedd3e5744b4ac02db9445c9ded173b /src/library/scala/runtime/ScalaRunTime.scala
parent1a1d09ce961e318f06ed52dd74b250b11358d050 (diff)
downloadscala-739cc9d1ad8b7d1def468299c9cdc6e9ebb2d143.tar.gz
scala-739cc9d1ad8b7d1def468299c9cdc6e9ebb2d143.tar.bz2
scala-739cc9d1ad8b7d1def468299c9cdc6e9ebb2d143.zip
Remove dependency on xml in ScalaRunTime.
runtime.ScalaRunTime.stringOf's behavior has changed slightly: Call the object's `toString` for all classes in `scala.xml._`, instead of only for `Node` and `MetaData` (old behavior).
Diffstat (limited to 'src/library/scala/runtime/ScalaRunTime.scala')
-rw-r--r--src/library/scala/runtime/ScalaRunTime.scala7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/library/scala/runtime/ScalaRunTime.scala b/src/library/scala/runtime/ScalaRunTime.scala
index 3a85207235..c049de3a28 100644
--- a/src/library/scala/runtime/ScalaRunTime.scala
+++ b/src/library/scala/runtime/ScalaRunTime.scala
@@ -15,7 +15,6 @@ import scala.collection.immutable.{ StringLike, NumericRange, List, Stream, Nil,
import scala.collection.generic.{ Sorted }
import scala.reflect.{ ClassTag, classTag }
import scala.util.control.ControlThrowable
-import scala.xml.{ Node, MetaData }
import java.lang.{ Class => jClass }
import java.lang.Double.doubleToLongBits
@@ -268,11 +267,10 @@ object ScalaRunTime {
}
def isScalaClass(x: AnyRef) = packageOf(x) startsWith "scala."
def isScalaCompilerClass(x: AnyRef) = packageOf(x) startsWith "scala.tools.nsc."
+ def isXmlClass(x: AnyRef) = packageOf(x) startsWith "scala.xml."
// When doing our own iteration is dangerous
def useOwnToString(x: Any) = x match {
- // Node extends NodeSeq extends Seq[Node] and MetaData extends Iterable[MetaData]
- case _: Node | _: MetaData => true
// Range/NumericRange have a custom toString to avoid walking a gazillion elements
case _: Range | _: NumericRange[_] => true
// Sorted collections to the wrong thing (for us) on iteration - ticket #3493
@@ -281,10 +279,11 @@ object ScalaRunTime {
case _: StringLike[_] => true
// Don't want to evaluate any elements in a view
case _: TraversableView[_, _] => true
+ // Node extends NodeSeq extends Seq[Node] and MetaData extends Iterable[MetaData] -> catch those and more by isXmlClass(x)
// Don't want to a) traverse infinity or b) be overly helpful with peoples' custom
// collections which may have useful toString methods - ticket #3710
// or c) print AbstractFiles which are somehow also Iterable[AbstractFile]s.
- case x: Traversable[_] => !x.hasDefiniteSize || !isScalaClass(x) || isScalaCompilerClass(x)
+ case x: Traversable[_] => !x.hasDefiniteSize || !isScalaClass(x) || isScalaCompilerClass(x) || isXmlClass(x)
// Otherwise, nothing could possibly go wrong
case _ => false
}