Skip to content

Commit fbb9dd0

Browse files
committed
Fix #7748: Don't allow classes to be defined in universal traits
1 parent 9aa7991 commit fbb9dd0

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1810,6 +1810,9 @@ class Typer extends Namer
18101810
// check value class constraints
18111811
checkDerivedValueClass(cls, body1)
18121812

1813+
if !cls.owner.is(Package) && !cls.owner.derivesFrom(defn.ObjectClass)
1814+
ctx.error(i"classes cannot be defined in universal traits", cdef.sourcePos)
1815+
18131816
// Temporarily set the typed class def as root tree so that we have at least some
18141817
// information in the IDE in case we never reach `SetRootTree`.
18151818
if (ctx.mode.is(Mode.Interactive) && ctx.settings.YretainTrees.value)

tests/pos/i7748.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
trait A extends Any {
2+
case class B() // error
3+
}

0 commit comments

Comments
 (0)