Skip to content

Commit 512bb15

Browse files
oderskyDarkDimius
authored andcommitted
Extended test case.
Also added non-unit fields and a class that directly implements two traits with the same fields.
1 parent c366cf9 commit 512bb15

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class ResolveSuper extends MiniPhaseTransform with IdentityDenotTransformer { th
8383
def methodOverrides(mixin: ClassSymbol): List[Tree] = {
8484
def isOverridden(meth: Symbol) = meth.overridingSymbol(cls).is(Method, butNot = Deferred)
8585
def needsDisambiguation(meth: Symbol): Boolean =
86-
meth.is(Method, butNot = PrivateOrDeferred) &&
86+
meth.is(Method, butNot = PrivateOrAccessorOrDeferred) &&
8787
!isOverridden(meth) &&
8888
!meth.allOverriddenSymbols.forall(_ is Deferred)
8989
for (meth <- mixin.info.decls.toList if needsDisambiguation(meth))
@@ -107,5 +107,5 @@ class ResolveSuper extends MiniPhaseTransform with IdentityDenotTransformer { th
107107
else ddef
108108
}
109109

110-
private val PrivateOrDeferred = Private | Deferred
110+
private val PrivateOrAccessorOrDeferred = Private | Accessor | Deferred
111111
}

tests/run/traits-initialization.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,32 @@ import store._
66

77
trait A {
88
str += "a"
9+
val i = 2
910
val s = str += 'A'
1011
str += '1'
1112
}
1213

1314
trait B extends A {
1415
str += 'b'
16+
override val i = 3
1517
override val s = str += 'B'
1618
str += '2'
1719
}
1820

1921
class D(sup: Unit) extends A {
2022
str += 'd'
23+
override val i = 4
2124
override val s = str += 'D'
2225
str += '3'
2326
}
2427

28+
class E(sup: Unit) extends A with B {
29+
str += 'd'
30+
override val i = 5
31+
override val s = str += 'E'
32+
str += '3'
33+
}
34+
2535

2636
object Test extends D({str += "Z"}) with B {
2737
// should only have 2 fields

0 commit comments

Comments
 (0)