aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala1
-rw-r--r--test/dotc/tests.scala1
-rw-r--r--tests/neg/subtyping.scala13
3 files changed, 15 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index 1e1d02be2..073724922 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -476,6 +476,7 @@ class TypeComparer(initctx: Context) extends DotClass {
|| sym1.isClass
&& pre2.classSymbol.exists
&& pre2.abstractTypeMembers.isEmpty
+ && isSubType(pre1, pre2)
)
}
)
diff --git a/test/dotc/tests.scala b/test/dotc/tests.scala
index fa577573a..c4b34e0e9 100644
--- a/test/dotc/tests.scala
+++ b/test/dotc/tests.scala
@@ -87,6 +87,7 @@ class tests extends CompilerTest {
@Test def neg_t1843 = compileFile(negDir, "t1843", xerrors = 1)
@Test def neg_t1843_variances = compileFile(negDir, "t1843-variances", xerrors = 1)
@Test def neg_t2994 = compileFile(negDir, "t2994", xerrors = 2)
+ @Test def neg_subtyping = compileFile(negDir, "subtyping", xerrors = 1)
@Test def neg_variances = compileFile(negDir, "variances", xerrors = 2)
@Test def dotc = compileDir(dotcDir + "tools/dotc", twice)
diff --git a/tests/neg/subtyping.scala b/tests/neg/subtyping.scala
new file mode 100644
index 000000000..d7f849ddc
--- /dev/null
+++ b/tests/neg/subtyping.scala
@@ -0,0 +1,13 @@
+class B {
+ class X
+}
+class A extends B
+
+object Test {
+ def foo(a: A#X): Unit = {
+ return;
+ }
+ def test(): Unit = {
+ foo(??? : B#X);
+ }
+}