From dfd5ace889059c822389fb519f083071786d805e Mon Sep 17 00:00:00 2001 From: Liu Fengyun Date: Fri, 1 Mar 2019 16:07:41 +0100 Subject: [PATCH 1/2] Fix #5015: disallow empty enum definition --- compiler/src/dotty/tools/dotc/parsing/Parsers.scala | 5 +++++ tests/neg/i5015.scala | 1 + 2 files changed, 6 insertions(+) create mode 100644 tests/neg/i5015.scala 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/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 From 7edf491cc90e8f067c6a85b7b816b39166c202b7 Mon Sep 17 00:00:00 2001 From: Liu Fengyun Date: Fri, 1 Mar 2019 17:34:46 +0100 Subject: [PATCH 2/2] Fix CI --- .../test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 }