summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-11-26 07:39:27 +0000
committerPaul Phillips <paulp@improving.org>2011-11-26 07:39:27 +0000
commitafc755916f7e67f1f2c899972de8801b1ef62543 (patch)
treefd11b17ba26a42a9509a5c9b35136e02553416e6 /src/library
parent1b98d1fa2a54dc1d8fafed6d270534d729420c21 (diff)
downloadscala-afc755916f7e67f1f2c899972de8801b1ef62543.tar.gz
scala-afc755916f7e67f1f2c899972de8801b1ef62543.tar.bz2
scala-afc755916f7e67f1f2c899972de8801b1ef62543.zip
Annotations reacquainted with reification.
Had AnnotationInfo extend Product3 since it's no longer a case class. Tried to make reflection a little more robust. Closes SI-5223, review by vogt.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/runtime/ScalaRunTime.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/library/scala/runtime/ScalaRunTime.scala b/src/library/scala/runtime/ScalaRunTime.scala
index aa4830369e..951bdd888e 100644
--- a/src/library/scala/runtime/ScalaRunTime.scala
+++ b/src/library/scala/runtime/ScalaRunTime.scala
@@ -31,6 +31,12 @@ object ScalaRunTime {
clazz.isArray && (atLevel == 1 || isArrayClass(clazz.getComponentType, atLevel - 1))
def isValueClass(clazz: Class[_]) = clazz.isPrimitive()
+ def isTuple(x: Any) = tupleNames(x.getClass.getName)
+ def isAnyVal(x: Any) = x match {
+ case _: Byte | _: Short | _: Char | _: Int | _: Long | _: Float | _: Double | _: Boolean | _: Unit => true
+ case _ => false
+ }
+ private val tupleNames = 1 to 22 map ("scala.Tuple" + _) toSet
/** Return the class object representing an unboxed value type,
* e.g. classOf[int], not classOf[java.lang.Integer]. The compiler
@@ -273,9 +279,6 @@ object ScalaRunTime {
def isScalaClass(x: AnyRef) =
Option(x.getClass.getPackage) exists (_.getName startsWith "scala.")
- def isTuple(x: AnyRef) =
- x.getClass.getName matches """^scala\.Tuple(\d+).*"""
-
// When doing our own iteration is dangerous
def useOwnToString(x: Any) = x match {
// Node extends NodeSeq extends Seq[Node] and MetaData extends Iterable[MetaData]