diff options
Diffstat (limited to 'src/library/scala/reflect/generic/Flags.scala')
-rwxr-xr-x | src/library/scala/reflect/generic/Flags.scala | 43 |
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 _)) } |