aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Flags.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-02-28 15:02:28 +0100
committerMartin Odersky <odersky@gmail.com>2013-02-28 15:02:28 +0100
commitb1adda5e885880d95dd675a127349c4bc8376bb9 (patch)
treec42258ce0a119269a632b088c05f925a642626e6 /src/dotty/tools/dotc/core/Flags.scala
parent14eff0537cb6af8047a50cc4e85149340661f8d8 (diff)
downloaddotty-b1adda5e885880d95dd675a127349c4bc8376bb9.tar.gz
dotty-b1adda5e885880d95dd675a127349c4bc8376bb9.tar.bz2
dotty-b1adda5e885880d95dd675a127349c4bc8376bb9.zip
fixes to flags
Diffstat (limited to 'src/dotty/tools/dotc/core/Flags.scala')
-rw-r--r--src/dotty/tools/dotc/core/Flags.scala17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala
index cc6d003fa..d846e4405 100644
--- a/src/dotty/tools/dotc/core/Flags.scala
+++ b/src/dotty/tools/dotc/core/Flags.scala
@@ -97,7 +97,9 @@ object Flags {
* conjunctively. I.e. for a flag conjunction `fc`,
* `x is fc` tests whether `x` contains all flags in `fc`.
*/
- case class FlagConjunction(bits: Long)
+ case class FlagConjunction(bits: Long) {
+ override def toString = FlagSet(bits).toString
+ }
private final val TYPESHIFT = 2
private final val TERMindex = 0
@@ -143,12 +145,17 @@ object Flags {
FlagSet(TERMS | TYPES | (1L << index))
}
+ /** The union of all flags in given flag set */
+ def union(flagss: FlagSet*) = (EmptyFlags /: flagss)(_ | _)
+
/** The conjunction of all flags in given flag set */
def allOf(flagss: FlagSet*) = {
assert(flagss forall (_.numFlags == 1))
- FlagConjunction((EmptyFlags /: flagss)(_ | _).bits)
+ FlagConjunction(union(flagss: _*).bits)
}
+ def commonFlags(flagss: FlagSet*) = union(flagss.map(_.toCommonFlags): _*)
+
/** The empty flag set */
final val EmptyFlags = FlagSet(0)
@@ -339,8 +346,8 @@ object Flags {
/** Flags representing source modifiers */
final val ModifierFlags =
- (Private | Protected | Abstract | Final |
- Sealed | Case | Implicit | AbsOverride | Lazy).toCommonFlags
+ commonFlags(Private, Protected, Abstract, Final,
+ Sealed, Case, Implicit, AbsOverride, Lazy)
/** Flags representing access rights */
final val AccessFlags = Private | Protected | Local
@@ -394,7 +401,7 @@ object Flags {
final val ExpandedTypeParam = allOf(ExpandedName, TypeParam)
/** A Java interface */
- final val JavaInterface = allOf(JavaDefined | Trait)
+ final val JavaInterface = allOf(JavaDefined, Trait)
/** Labeled private[this] */
final val PrivateLocal = allOf(Private, Local)