summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/reflect/base/Base.scala1
-rw-r--r--src/library/scala/reflect/base/FlagSets.scala6
-rw-r--r--src/library/scala/reflect/base/Trees.scala5
-rw-r--r--src/reflect/scala/reflect/api/FlagSets.scala9
-rw-r--r--src/reflect/scala/reflect/api/Symbols.scala13
-rw-r--r--src/reflect/scala/reflect/api/Trees.scala2
-rw-r--r--src/reflect/scala/reflect/internal/FlagSets.scala18
-rw-r--r--src/reflect/scala/reflect/internal/Printers.scala2
8 files changed, 14 insertions, 42 deletions
diff --git a/src/library/scala/reflect/base/Base.scala b/src/library/scala/reflect/base/Base.scala
index ddb502fd44..6d13395019 100644
--- a/src/library/scala/reflect/base/Base.scala
+++ b/src/library/scala/reflect/base/Base.scala
@@ -234,7 +234,6 @@ class Base extends Universe { self =>
override val privateWithin: Name,
override val annotations: List[Tree]) extends ModifiersBase {
def hasFlag(flags: FlagSet) = (this.flags & flags) != 0
- def hasAllFlags(flags: FlagSet) = (flags & ~this.flags) == 0
}
implicit val ModifiersTag = ClassTag[Modifiers](classOf[Modifiers])
diff --git a/src/library/scala/reflect/base/FlagSets.scala b/src/library/scala/reflect/base/FlagSets.scala
index 57946d0f27..43de9970c0 100644
--- a/src/library/scala/reflect/base/FlagSets.scala
+++ b/src/library/scala/reflect/base/FlagSets.scala
@@ -13,5 +13,11 @@ trait FlagSets { self: Universe =>
/** The empty set of flags */
val NoFlags: FlagSet
+
+ /** The base API all flag bearers support */
+ trait HasFlagsBase {
+ def flags: FlagSet
+ def hasFlag(flags: FlagSet): Boolean
+ }
}
diff --git a/src/library/scala/reflect/base/Trees.scala b/src/library/scala/reflect/base/Trees.scala
index 2814450ae3..ab03b7a89f 100644
--- a/src/library/scala/reflect/base/Trees.scala
+++ b/src/library/scala/reflect/base/Trees.scala
@@ -1356,10 +1356,7 @@ trait Trees { self: Universe =>
implicit val ModifiersTag: ClassTag[Modifiers]
/** ... */
- abstract class ModifiersBase {
- def flags: FlagSet
- def hasFlag(flags: FlagSet): Boolean
- def hasAllFlags(flags: FlagSet): Boolean
+ abstract class ModifiersBase extends HasFlagsBase {
def privateWithin: Name // default: EmptyTypeName
def annotations: List[Tree] // default: List()
def mapAnnotations(f: List[Tree] => List[Tree]): Modifiers =
diff --git a/src/reflect/scala/reflect/api/FlagSets.scala b/src/reflect/scala/reflect/api/FlagSets.scala
index 969176d641..c56de49962 100644
--- a/src/reflect/scala/reflect/api/FlagSets.scala
+++ b/src/reflect/scala/reflect/api/FlagSets.scala
@@ -9,8 +9,7 @@ trait FlagSets { self: Universe =>
trait FlagOps extends Any {
def | (right: FlagSet): FlagSet
- def & (right: FlagSet): FlagSet
- def containsAll (right: FlagSet): Boolean
+ def hasFlag(flags: FlagSet): Boolean
}
implicit def addFlagOps(left: FlagSet): FlagOps
@@ -19,8 +18,6 @@ trait FlagSets { self: Universe =>
type FlagValues >: Null <: FlagValuesApi
- // [Eugene++] any other flags we would like to expose?
-
trait FlagValuesApi {
/** Flag indicating that symbol or tree represents a trait */
@@ -104,9 +101,5 @@ trait FlagSets { self: Universe =>
/** Flag indicating that trait has neither method implementations nor fields.
* This means the trait can be represented as a Java interface. */
val INTERFACE: FlagSet
-
- def union(flags: FlagSet*): FlagSet
- def intersection(flag: FlagSet*): FlagSet
- def containsAll(superset: FlagSet, subset: FlagSet): Boolean
}
}
diff --git a/src/reflect/scala/reflect/api/Symbols.scala b/src/reflect/scala/reflect/api/Symbols.scala
index c94c796279..84341177ca 100644
--- a/src/reflect/scala/reflect/api/Symbols.scala
+++ b/src/reflect/scala/reflect/api/Symbols.scala
@@ -12,15 +12,8 @@ trait Symbols extends base.Symbols { self: Universe =>
override type FreeTermSymbol >: Null <: TermSymbol with FreeTermSymbolApi
override type FreeTypeSymbol >: Null <: TypeSymbol with FreeTypeSymbolApi
- trait HasFlagsApi {
- def flags: FlagSet
- def hasFlag(fs: FlagSet): Boolean
- def hasAllFlags(fs: FlagSet): Boolean
- def flagString: String
- }
-
/** The API of symbols */
- trait SymbolApi extends SymbolBase with HasFlagsApi { this: Symbol =>
+ trait SymbolApi extends SymbolBase with HasFlagsBase { this: Symbol =>
/** The position of this symbol
*/
@@ -228,14 +221,14 @@ trait Symbols extends base.Symbols { self: Universe =>
}
/** The API of term symbols */
- trait TermSymbolApi extends SymbolApi with HasFlagsApi with TermSymbolBase { this: TermSymbol =>
+ trait TermSymbolApi extends SymbolApi with TermSymbolBase { this: TermSymbol =>
/** The overloaded alternatives of this symbol */
def alternatives: List[Symbol]
}
/** The API of type symbols */
- trait TypeSymbolApi extends SymbolApi with HasFlagsApi with TypeSymbolBase { this: TypeSymbol =>
+ trait TypeSymbolApi extends SymbolApi with TypeSymbolBase { this: TypeSymbol =>
/** Is the type parameter represented by this symbol contravariant?
*/
def isContravariant : Boolean
diff --git a/src/reflect/scala/reflect/api/Trees.scala b/src/reflect/scala/reflect/api/Trees.scala
index 2d130daa4e..28dd764c70 100644
--- a/src/reflect/scala/reflect/api/Trees.scala
+++ b/src/reflect/scala/reflect/api/Trees.scala
@@ -683,7 +683,7 @@ trait Trees extends base.Trees { self: Universe =>
type Modifiers >: Null <: ModifiersApi
- abstract class ModifiersApi extends ModifiersBase with HasFlagsApi
+ abstract class ModifiersApi extends ModifiersBase
}
diff --git a/src/reflect/scala/reflect/internal/FlagSets.scala b/src/reflect/scala/reflect/internal/FlagSets.scala
index 0354d2513c..6e77741355 100644
--- a/src/reflect/scala/reflect/internal/FlagSets.scala
+++ b/src/reflect/scala/reflect/internal/FlagSets.scala
@@ -13,8 +13,7 @@ trait FlagSets extends api.FlagSets { self: SymbolTable =>
private class FlagOpsImpl(left: Long) extends FlagOps {
def | (right: Long): Long = left | right
- def & (right: Long): Long = left & right
- def containsAll (right: Long): Boolean = (right & ~left) == 0
+ def hasFlag(right: Long): Boolean = (left & right) != 0
}
val NoFlags: FlagSet = 0L
@@ -47,20 +46,5 @@ trait FlagSets extends api.FlagSets { self: SymbolTable =>
val CONTRAVARIANT : FlagSet = Flags.CONTRAVARIANT
val DEFAULTPARAM : FlagSet = Flags.DEFAULTPARAM
val INTERFACE : FlagSet = Flags.INTERFACE
-
- def union(flags: FlagSet*): FlagSet = {
- var acc = 0L
- for (flag <- flags) acc |= flag
- acc
- }
-
- def intersection(flags: FlagSet*): FlagSet = {
- var acc = -1L
- for (flag <- flags) acc &= flag
- acc
- }
-
- def containsAll(superset: FlagSet, subset: FlagSet): Boolean =
- (subset & ~superset) == 0
}
}
diff --git a/src/reflect/scala/reflect/internal/Printers.scala b/src/reflect/scala/reflect/internal/Printers.scala
index 18f9928124..8571ac1110 100644
--- a/src/reflect/scala/reflect/internal/Printers.scala
+++ b/src/reflect/scala/reflect/internal/Printers.scala
@@ -670,7 +670,7 @@ trait Printers extends api.Printers { self: SymbolTable =>
if (flags == NoFlags) nme.NoFlags.toString
else {
val s_flags = new collection.mutable.ListBuffer[String]
- for (i <- 0 to 63 if (flags containsAll (1L << i)))
+ for (i <- 0 to 63 if (flags hasFlag (1L << i)))
s_flags += flagToString(1L << i).replace("<", "").replace(">", "").toUpperCase
s_flags mkString " | "
}