diff options
author | Paul Phillips <paulp@improving.org> | 2011-11-26 07:39:27 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-11-26 07:39:27 +0000 |
commit | afc755916f7e67f1f2c899972de8801b1ef62543 (patch) | |
tree | fd11b17ba26a42a9509a5c9b35136e02553416e6 /src/library | |
parent | 1b98d1fa2a54dc1d8fafed6d270534d729420c21 (diff) | |
download | scala-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.scala | 9 |
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] |