diff options
-rw-r--r-- | compiler/src/dotty/tools/dotc/typer/Checking.scala | 2 | ||||
-rw-r--r-- | tests/neg/customArgs/typers.scala | 2 | ||||
-rw-r--r-- | tests/neg/i1050c.scala | 3 |
3 files changed, 4 insertions, 3 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Checking.scala b/compiler/src/dotty/tools/dotc/typer/Checking.scala index 48f9243f7..1ca7eb107 100644 --- a/compiler/src/dotty/tools/dotc/typer/Checking.scala +++ b/compiler/src/dotty/tools/dotc/typer/Checking.scala @@ -327,7 +327,7 @@ object Checking { if (!sym.is(Deferred)) fail(i"`@native' members may not have implementation") } - else if (sym.is(Deferred, butNot = Param) && !sym.isSelfSym) { + else if (sym.is(Deferred, butNot = Param) && !sym.isType && !sym.isSelfSym) { if (!sym.owner.isClass || sym.owner.is(Module) || sym.owner.isAnonymousClass) fail(i"only classes can have declared but undefined members$varNote") checkWithDeferred(Private) diff --git a/tests/neg/customArgs/typers.scala b/tests/neg/customArgs/typers.scala index 49742ebbd..9432ab039 100644 --- a/tests/neg/customArgs/typers.scala +++ b/tests/neg/customArgs/typers.scala @@ -30,7 +30,7 @@ object typers { } type L[X] = scala.collection.immutable.List[X] - type M[X, Y] <: scala.collection.immutable.Map[X, Y] // error: only classes can have declared but undefined members + type M[X, Y] <: scala.collection.immutable.Map[X, Y] // old-error: only classes can have declared but undefined members object hk { def f(x: L) // error: missing type parameter diff --git a/tests/neg/i1050c.scala b/tests/neg/i1050c.scala index 19570eb83..ecfaa3ea3 100644 --- a/tests/neg/i1050c.scala +++ b/tests/neg/i1050c.scala @@ -27,7 +27,8 @@ object Tiark4 { v.brand("boom!") } object V { // error: cannot be instantiated - type Y >: Any <: Nothing // error: only classes can have declared but undefined members + type Y >: Any <: Nothing // old-error: only classes can have declared but undefined members + type Z } object Tiark5 { trait A { type L <: Nothing } |