aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Flags.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-11-09 13:21:06 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-11-10 13:31:00 +0100
commit540479ad682fae4278f15e9eb7d4a17f084e21b2 (patch)
treec7f331ff2764ebfdf5fe5d31f94c529eb504268f /src/dotty/tools/dotc/core/Flags.scala
parent18cd0dde7e949d6ae20f451f98843d48f28e2e26 (diff)
downloaddotty-540479ad682fae4278f15e9eb7d4a17f084e21b2.tar.gz
dotty-540479ad682fae4278f15e9eb7d4a17f084e21b2.tar.bz2
dotty-540479ad682fae4278f15e9eb7d4a17f084e21b2.zip
Clean up code relating to interfaces.
Previous implementation was confused about the meaning of interface (with default methods or without?). Now instead of Interface/JavaInterface we have PureInterface - all members are abstract methods NoInits - all members are methods
Diffstat (limited to 'src/dotty/tools/dotc/core/Flags.scala')
-rw-r--r--src/dotty/tools/dotc/core/Flags.scala18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala
index 804f6af1a..db969767b 100644
--- a/src/dotty/tools/dotc/core/Flags.scala
+++ b/src/dotty/tools/dotc/core/Flags.scala
@@ -287,7 +287,7 @@ object Flags {
/** A trait that has only abstract methods as members
* (and therefore can be represented by a Java interface
*/
- final val Interface = typeFlag(22, "interface")
+ final val PureInterface = typeFlag(22, "interface")
/** Labeled with of abstract & override */
final val AbsOverride = termFlag(22, "abstract override")
@@ -335,6 +335,9 @@ object Flags {
final val JavaStaticTerm = JavaStatic.toTermFlags
final val JavaStaticType = JavaStatic.toTypeFlags
+ /** Trait is not an interface, but does not have fields or intialization code */
+ final val NoInits = typeFlag(32, "<noInits>")
+
/** Variable is accessed from nested function. */
final val Captured = termFlag(32, "<captured>")
@@ -353,9 +356,6 @@ object Flags {
/** Symbol is a Java-style varargs method */
final val JavaVarargs = termFlag(37, "<varargs>")
- /** Symbol is a Java default method */
- final val DefaultMethod = termFlag(38, "<defaultmethod>")
-
// Flags following this one are not pickled
/** Symbol always defines a fresh named type */
@@ -464,6 +464,9 @@ object Flags {
/** Accessors always have these flags set */
final val AccessorCreationFlags = Method | Accessor
+ /** Pure interfaces always have these flags */
+ final val PureInterfaceCreationFlags = Trait | NoInits | PureInterface
+
/** The flags of the self symbol */
final val SelfSymFlags = Private | Local | Deferred
@@ -539,8 +542,11 @@ object Flags {
/** Is a default parameter in Scala 2*/
final val DefaultParameter = allOf(Param, DefaultParameterized)
- /** A Java interface */
- final val JavaInterface = allOf(JavaDefined, Trait)
+ /** A trait that does not need to be initialized */
+ final val NoInitsTrait = allOf(Trait, NoInits)
+
+ /** A Java interface, potentially with default methods */
+ final val JavaTrait = allOf(JavaDefined, Trait, NoInits)
/** A Java companion object */
final val JavaModule = allOf(JavaDefined, Module)