Skip to content

Commit c1492ac

Browse files
committed
Merge pull request scala#4024 from retronym/ticket/8217
SI-8217 allow abstract type members in objects
2 parents 192d65f + 0d8ca1f commit c1492ac

File tree

7 files changed

+26
-8
lines changed

7 files changed

+26
-8
lines changed

src/compiler/scala/tools/nsc/typechecker/Namers.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1643,6 +1643,7 @@ trait Namers extends MethodSynthesis {
16431643
def symbolAllowsDeferred = (
16441644
sym.isValueParameter
16451645
|| sym.isTypeParameterOrSkolem
1646+
|| (sym.isAbstractType && sym.owner.isClass)
16461647
|| context.tree.isInstanceOf[ExistentialTypeTree]
16471648
)
16481649
// Does the symbol owner require no undefined members?

test/files/neg/t3240.check

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
t8217-local-alias-requires-rhs.scala:6: error: only classes can have declared but undefined members
2+
type B
3+
^
4+
t8217-local-alias-requires-rhs.scala:3: error: only classes can have declared but undefined members
5+
type A
6+
^
7+
t8217-local-alias-requires-rhs.scala:14: error: only classes can have declared but undefined members
8+
def this(a: Any) = { this(); type C }
9+
^
10+
three errors found
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
trait Alias {
2+
def foo = {
3+
type A
4+
}
5+
val bar = {
6+
type B
7+
object O {
8+
type OK
9+
}
10+
}
11+
}
12+
13+
class C {
14+
def this(a: Any) = { this(); type C }
15+
}

test/files/neg/t845.check

Lines changed: 0 additions & 4 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)