Skip to content

Commit c1be21d

Browse files
committed
Mixing now also changes Scala2 traits into interfaces.
1 parent dc24157 commit c1be21d

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/dotty/tools/dotc/transform/Mixin.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,12 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform =>
7474
override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation =
7575
if (sym.is(Accessor, butNot = Deferred) && sym.owner.is(Trait))
7676
sym.copySymDenotation(initFlags = sym.flags | Deferred)
77-
else
77+
else if(sym.is(Scala2x) && sym.is(Trait, JavaDefined)) { // fixup scala2 traits to become interfaces
78+
val info = sym.asClass.classInfo
79+
val parents: List[TypeRef] = defn.ObjectType.asInstanceOf[TypeRef] :: info.parents // new superClass is object
80+
val newInfo = info.derivedClassInfo(classParents = parents)
81+
sym.copySymDenotation(initFlags = sym.flags | JavaInterface, info = newInfo)
82+
} else
7883
sym
7984

8085
private def initializer(sym: Symbol)(implicit ctx: Context): TermSymbol = {

0 commit comments

Comments
 (0)