aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/transform/Mixin.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala
index 230763fae..9cd29881b 100644
--- a/src/dotty/tools/dotc/transform/Mixin.scala
+++ b/src/dotty/tools/dotc/transform/Mixin.scala
@@ -73,7 +73,12 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation =
if (sym.is(Accessor, butNot = Deferred) && sym.owner.is(Trait))
sym.copySymDenotation(initFlags = sym.flags | Deferred)
- else
+ else if(sym.is(Scala2x) && sym.is(Trait, JavaDefined)) { // fixup scala2 traits to become interfaces
+ val info = sym.asClass.classInfo
+ val parents: List[TypeRef] = defn.ObjectType.asInstanceOf[TypeRef] :: info.parents // new superClass is object
+ val newInfo = info.derivedClassInfo(classParents = parents)
+ sym.copySymDenotation(initFlags = sym.flags | JavaInterface, info = newInfo)
+ } else
sym
private def initializer(sym: Symbol)(implicit ctx: Context): TermSymbol = {