diff --git a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala index eeb5eb9edb82..d29d44487262 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala @@ -2556,6 +2556,11 @@ object Parsers { val clsName = modName.toTypeName val constr = classConstr() val templ = templateOpt(constr, isEnum = true) + templ match { + case Template(_, _, _, List(EmptyTree)) => + syntaxError("enum body should not be empty.", start) + case _ => + } finalizeDef(TypeDef(clsName, templ), addMod(mods, enumMod), start) } diff --git a/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala b/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala index 8d5f692aa65d..e077ab742393 100644 --- a/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala +++ b/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala @@ -22,7 +22,7 @@ class ErrorMessagesTests extends ErrorMessagesTest { @Test def caseClassExtendsEnum = checkMessagesAfter(RefChecks.name) { """ - |enum Foo {} + |enum Foo { case A, B } |case class Bar() extends Foo """.stripMargin } diff --git a/tests/neg/i5015.scala b/tests/neg/i5015.scala new file mode 100644 index 000000000000..b3f0341cc774 --- /dev/null +++ b/tests/neg/i5015.scala @@ -0,0 +1 @@ +enum A extends AnyRef { } // error \ No newline at end of file