aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/Flags.scala8
-rw-r--r--src/dotty/tools/dotc/typer/Namer.scala4
-rw-r--r--src/dotty/tools/dotc/typer/Typer.scala4
3 files changed, 7 insertions, 9 deletions
diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala
index c2e7cd399..e57ba066e 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 PureInterface = typeFlag(22, "interface")
+ final val PureInterface = typeFlag(22, "interface") // TODO when unpickling, reconstitute from context
/** Labeled with of abstract & override */
final val AbsOverride = termFlag(22, "abstract override")
@@ -336,7 +336,7 @@ object Flags {
final val JavaStaticType = JavaStatic.toTypeFlags
/** Trait is not an interface, but does not have fields or intialization code */
- final val NoInits = typeFlag(32, "<noInits>") // TODO reconstitute from context
+ final val NoInits = typeFlag(32, "<noInits>") // TODO when unpickling, reconstitute from context
/** Variable is accessed from nested function. */
final val Captured = termFlag(32, "<captured>")
@@ -367,7 +367,7 @@ object Flags {
/** Symbol always defines a fresh named type */
final val Fresh = commonFlag(45, "<fresh>")
- /** Symbol is defined in a super call */ // TODO reconstitute from context
+ /** Symbol is defined in a super call */ // TODO when unpickling, reconstitute from context
final val InSuperCall = commonFlag(46, "<in supercall>")
/** Symbol with private access is accessed outside its private scope */
@@ -554,7 +554,7 @@ object Flags {
/** A Java interface, potentially with default methods */
final val JavaTrait = allOf(JavaDefined, Trait, NoInits)
- /** A Java interface */ // TODO reconstitute from context
+ /** A Java interface */ // TODO when unpickling, reconstitute from context
final val JavaInterface = allOf(JavaDefined, Trait)
/** A Java companion object */
diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala
index 95f0b4165..c522a5998 100644
--- a/src/dotty/tools/dotc/typer/Namer.scala
+++ b/src/dotty/tools/dotc/typer/Namer.scala
@@ -497,9 +497,9 @@ class Namer { typer: Typer =>
denot.info = ClassInfo(cls.owner.thisType, cls, parentRefs, decls, selfInfo)
if (cls is Trait) {
if (body forall isNoInitMember) {
- cls.setFlag(NoInits) // TODO set when unpickling
+ cls.setFlag(NoInits)
if (body forall isPureInterfaceMember)
- cls.setFlag(PureInterface) // TODO set when unpickling
+ cls.setFlag(PureInterface)
}
}
}
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala
index d194ccaae..974a42638 100644
--- a/src/dotty/tools/dotc/typer/Typer.scala
+++ b/src/dotty/tools/dotc/typer/Typer.scala
@@ -801,10 +801,8 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
typr.println(s"adding refinement $refinement")
checkRefinementNonCyclic(refinement, refineCls, seen)
val rsym = refinement.symbol
- if ((rsym.is(Method) || rsym.isType) && rsym.allOverriddenSymbols.isEmpty) {
- println(refineCls.baseClasses)
+ if ((rsym.is(Method) || rsym.isType) && rsym.allOverriddenSymbols.isEmpty)
ctx.error(i"refinement $rsym without matching type in parent $parent", refinement.pos)
- }
val rinfo = if (rsym is Accessor) rsym.info.resultType else rsym.info
RefinedType(parent, rsym.name, rt => rinfo.substThis(refineCls, SkolemType(rt)))
// todo later: check that refinement is within bounds