Skip to content

Commit 917a7ed

Browse files
authored
Merge pull request #2044 from dotty-staging/abstract-type-in-object
Allow abstract type members in objects.
2 parents feaa0ae + 8d801e9 commit 917a7ed

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ object Checking {
327327
if (!sym.is(Deferred))
328328
fail(i"`@native' members may not have implementation")
329329
}
330-
else if (sym.is(Deferred, butNot = Param) && !sym.isSelfSym) {
330+
else if (sym.is(Deferred, butNot = Param) && !sym.isType && !sym.isSelfSym) {
331331
if (!sym.owner.isClass || sym.owner.is(Module) || sym.owner.isAnonymousClass)
332332
fail(i"only classes can have declared but undefined members$varNote")
333333
checkWithDeferred(Private)

tests/neg/customArgs/typers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ object typers {
3030
}
3131

3232
type L[X] = scala.collection.immutable.List[X]
33-
type M[X, Y] <: scala.collection.immutable.Map[X, Y] // error: only classes can have declared but undefined members
33+
type M[X, Y] <: scala.collection.immutable.Map[X, Y] // old-error: only classes can have declared but undefined members
3434

3535
object hk {
3636
def f(x: L) // error: missing type parameter

tests/neg/i1050c.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ object Tiark4 {
2727
v.brand("boom!")
2828
}
2929
object V { // error: cannot be instantiated
30-
type Y >: Any <: Nothing // error: only classes can have declared but undefined members
30+
type Y >: Any <: Nothing // old-error: only classes can have declared but undefined members
31+
type Z
3132
}
3233
object Tiark5 {
3334
trait A { type L <: Nothing }

0 commit comments

Comments
 (0)