aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Flags.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-03-13 14:11:44 +0100
committerMartin Odersky <odersky@gmail.com>2013-03-13 14:11:44 +0100
commit3c7a8eada3630989b07bd3022797fd42a3b8cfcc (patch)
tree0036fee8aa025e3eea8502ea08f413f6baec3a56 /src/dotty/tools/dotc/core/Flags.scala
parentd1794c15f5a5743763adeb8f8e248f9ca5f53869 (diff)
downloaddotty-3c7a8eada3630989b07bd3022797fd42a3b8cfcc.tar.gz
dotty-3c7a8eada3630989b07bd3022797fd42a3b8cfcc.tar.bz2
dotty-3c7a8eada3630989b07bd3022797fd42a3b8cfcc.zip
Various fixes to get past Definitions#init.
Diffstat (limited to 'src/dotty/tools/dotc/core/Flags.scala')
-rw-r--r--src/dotty/tools/dotc/core/Flags.scala21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala
index 14f31a16d..1a8ff3ea8 100644
--- a/src/dotty/tools/dotc/core/Flags.scala
+++ b/src/dotty/tools/dotc/core/Flags.scala
@@ -1,5 +1,7 @@
package dotty.tools.dotc.core
+import language.implicitConversions
+
object Flags {
/** A FlagSet represents a set of flags. Flags are encoded as follows:
@@ -65,13 +67,13 @@ object Flags {
def <= (that: FlagSet) = (bits & that.bits) == bits
/** This flag set with all flags transposed to be type flags */
- def toTypeFlags = FlagSet(bits & ~KINDFLAGS | TYPES)
+ def toTypeFlags = if (bits == 0) this else FlagSet(bits & ~KINDFLAGS | TYPES)
/** This flag set with all flags transposed to be term flags */
- def toTermFlags = FlagSet(bits & ~KINDFLAGS | TERMS)
+ def toTermFlags = if (bits == 0) this else FlagSet(bits & ~KINDFLAGS | TERMS)
/** This flag set with all flags transposed to be common flags */
- def toCommonFlags = FlagSet(bits | KINDFLAGS)
+ def toCommonFlags = if (bits == 0) this else FlagSet(bits | KINDFLAGS)
/** The number of non-kind flags in this set */
def numFlags: Int = java.lang.Long.bitCount(bits & ~KINDFLAGS)
@@ -334,7 +336,8 @@ object Flags {
final val ImplClass = typeFlag(54, "<implclass>")
/** An existentially bound symbol (Scala 2.x only) */
- final val Scala2Existential = typeFlag(55, "<existential>")
+ final val Scala2ExistentialCommon = commonFlag(55, "<existential>")
+ final val Scala2Existential = Scala2ExistentialCommon.toTypeFlags
/** An overloaded symbol (Scala 2.x only) */
final val Scala2Overloaded = termFlag(56, "<overloaded>")
@@ -354,7 +357,7 @@ object Flags {
/** Flags guaranteed to be set upon symbol creation */
final val FromStartFlags =
- AccessFlags | Module | Package | Deferred
+ AccessFlags | Module | Package | Deferred | Param | Scala2ExistentialCommon
/** Flags representing access rights */
final val AccessFlags = Private | Protected | Local
@@ -367,10 +370,10 @@ object Flags {
final val RetainedTypeArgFlags = Covariant | Contravariant | Protected | Local
/** Modules always have these flags set */
- final val ModuleCreationFlags = Module
+ final val ModuleCreationFlags = ModuleVal
/** Module classes always have these flags set */
- final val ModuleClassCreationFlags = Module | Final
+ final val ModuleClassCreationFlags = ModuleClass | Final
/** The flags of a type parameter */
final val TypeParamCreationFlags = TypeParam | Protected | Local
@@ -393,7 +396,9 @@ object Flags {
InConstructor | ImplClass
/** Packages and package classes always have these flags set */
- final val PackageCreationFlags = Module | Package | Final | JavaDefined | Static
+ final val PackageCreationFlags =
+ (Module | Package | Final | JavaDefined | Static).toTermFlags
+ final val PackageClassCreationFlags = PackageCreationFlags.toTypeFlags
/** These flags are pickled */
final val PickledFlags = flagRange(FirstFlag, FirstNotPickledFlag)