summaryrefslogtreecommitdiff
path: root/src/library/scala/reflect/generic/Flags.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/scala/reflect/generic/Flags.scala')
-rwxr-xr-xsrc/library/scala/reflect/generic/Flags.scala43
1 files changed, 27 insertions, 16 deletions
diff --git a/src/library/scala/reflect/generic/Flags.scala b/src/library/scala/reflect/generic/Flags.scala
index d7c8ff9296..b56faf8934 100755
--- a/src/library/scala/reflect/generic/Flags.scala
+++ b/src/library/scala/reflect/generic/Flags.scala
@@ -3,7 +3,7 @@ package generic
/** Flags set on Modifiers instances in the parsing stage.
*/
-class ModifierFlags {
+@deprecated("scala.reflect.generic will be removed", "2.9.1") class ModifierFlags {
final val IMPLICIT = 0x00000200
final val FINAL = 0x00000020
final val PRIVATE = 0x00000004
@@ -43,7 +43,7 @@ class ModifierFlags {
}
object ModifierFlags extends ModifierFlags
-class Flags extends ModifierFlags {
+@deprecated("scala.reflect.generic will be removed", "2.9.1") class Flags extends ModifierFlags {
final val METHOD = 0x00000040 // a method
final val MODULE = 0x00000100 // symbol is module or class implementing a module
final val PACKAGE = 0x00004000 // symbol is a java package
@@ -102,7 +102,7 @@ class Flags extends ModifierFlags {
final val PickledFlags: Long = 0xFFFFFFFFL
- private val rawPickledCorrespondence = List(
+ private def rawPickledCorrespondence = Array(
(IMPLICIT, IMPLICIT_PKL),
(FINAL, FINAL_PKL),
(PRIVATE, PRIVATE_PKL),
@@ -116,20 +116,31 @@ class Flags extends ModifierFlags {
(MODULE, MODULE_PKL),
(INTERFACE, INTERFACE_PKL)
)
- private def mkCorrespondenceArray(correspondence: List[(Int, Int)]) = {
- def f(flags: Int): Int = {
- correspondence.foldLeft(0) {
- case (result, (oldFlag, newFlag)) =>
- if ((flags & oldFlag) != 0) result | newFlag
- else result
- }
+ private val rawFlags: Array[Int] = rawPickledCorrespondence map (_._1)
+ private val pickledFlags: Array[Int] = rawPickledCorrespondence map (_._2)
+
+ private def r2p(flags: Int): Int = {
+ var result = 0
+ var i = 0
+ while (i < rawFlags.length) {
+ if ((flags & rawFlags(i)) != 0)
+ result |= pickledFlags(i)
+
+ i += 1
+ }
+ result
+ }
+ private def p2r(flags: Int): Int = {
+ var result = 0
+ var i = 0
+ while (i < rawFlags.length) {
+ if ((flags & pickledFlags(i)) != 0)
+ result |= rawFlags(i)
+
+ i += 1
}
- 0 to PKL_MASK map f toArray
+ result
}
- /** A map from the raw to pickled flags, and vice versa.
- */
- private val r2p = mkCorrespondenceArray(rawPickledCorrespondence)
- private val p2r = mkCorrespondenceArray(rawPickledCorrespondence map (_.swap))
// Generated by mkFlagToStringMethod() at Mon Oct 11 10:07:29 PDT 2010
@annotation.switch override def flagToString(flag: Long): String = flag match {
@@ -232,7 +243,7 @@ class Flags extends ModifierFlags {
// List of the raw flags, in pickled order
protected val pickledListOrder: List[Long] = {
val all = 0 to 62 map (1L << _)
- val front = rawPickledCorrespondence map (_._1.toLong)
+ val front = rawFlags map (_.toLong)
front.toList ++ (all filterNot (front contains _))
}