Skip to content

Commit 79d782d

Browse files
committed
Fix of #329.
Overriding pairs needs to match ExprTypes with field types. Closes #329.
1 parent 4aa6b7a commit 79d782d

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ object OverridingPairs {
4343
val info1 = self.memberInfo(sym1)
4444
val info2 = self.memberInfo(sym2)
4545
// info1.signature == info2.signature && // TODO enable for speed
46-
info1 matches info2
46+
info1.widenExpr matches info2.widenExpr
4747
}
4848

4949
/** The symbols that can take part in an overriding pair */

test/dotc/tests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ class tests extends CompilerTest {
8282
@Test def neg_autoTupling = compileFile(posDir, "autoTuplingTest", "-language:noAutoTupling" :: Nil, xerrors = 4)
8383
@Test def neg_autoTupling2 = compileFile(negDir, "autoTuplingTest", xerrors = 4)
8484
@Test def neg_companions = compileFile(negDir, "companions", xerrors = 1)
85-
@Test def neg_over = compileFile(negDir, "over", xerrors = 1)
86-
@Test def neg_overrides = compileFile(negDir, "overrides", xerrors = 8)
85+
@Test def neg_over = compileFile(negDir, "over", xerrors = 2)
86+
@Test def neg_overrides = compileFile(negDir, "overrides", xerrors = 9)
8787
@Test def neg_projections = compileFile(negDir, "projections", xerrors = 1)
8888
@Test def neg_i39 = compileFile(negDir, "i39", xerrors = 1)
8989
@Test def neg_i50_volatile = compileFile(negDir, "i50-volatile", xerrors = 4)

tests/neg/overrides.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,10 @@ trait TOverrider { this: TCommon =>
100100
class C2 extends C1 with TOverrider // ... fails to override, here.
101101

102102
}
103+
104+
package p4 {
105+
106+
abstract class C[T] { def head: T }
107+
case class D[T](head: Int) extends C[T]
108+
109+
}

0 commit comments

Comments
 (0)