@@ -1738,4 +1738,49 @@ class ErrorMessagesTests extends ErrorMessagesTest {
17381738 val CaseClassMissingNonImplicitParamList (tpe) :: Nil = messages
17391739 assertEquals(" A case class must have at least one non-implicit parameter list" , messages.head.msg)
17401740 }
1741+
1742+ @ Test def enumMustContainOneCase =
1743+ checkMessagesAfter(RefChecks .name) {
1744+ """
1745+ |enum Foo { }
1746+ """ .stripMargin
1747+ }
1748+ .expect { (ictx, messages) ⇒
1749+ implicit val ctx : Context = ictx
1750+ assertMessageCount(1 , messages)
1751+ val errorMsg = messages.head.msg
1752+ val EnumerationsShouldNotBeEmpty (typeDef) :: Nil = messages
1753+ assertEquals(" Enumerations must contain at least one case" , errorMsg)
1754+ assertEquals(" Foo" , typeDef.name.toString)
1755+ }
1756+
1757+ @ Test def objectsCannotBeAbstract =
1758+ checkMessagesAfter(RefChecks .name) {
1759+ """
1760+ |abstract object Foo { }
1761+ """ .stripMargin
1762+ }
1763+ .expect { (ictx, messages) ⇒
1764+ implicit val ctx : Context = ictx
1765+ assertMessageCount(1 , messages)
1766+ val errorMsg = messages.head.msg
1767+ val AbstractCannotBeUsedForObjects (mdef) :: Nil = messages
1768+ assertEquals(" abstract modifier cannot be used for objects" , errorMsg)
1769+ assertEquals(" Foo" , mdef.name.toString)
1770+ }
1771+
1772+ @ Test def sealedOnObjectsIsRedundant =
1773+ checkMessagesAfter(RefChecks .name) {
1774+ """
1775+ |sealed object Foo { }
1776+ """ .stripMargin
1777+ }
1778+ .expect { (ictx, messages) ⇒
1779+ implicit val ctx : Context = ictx
1780+ assertMessageCount(1 , messages)
1781+ val errorMsg = messages.head.msg
1782+ val ModifierRedundantForObjects (mdef, " sealed" ) :: Nil = messages
1783+ assertEquals(" sealed modifier is redundant for objects" , errorMsg)
1784+ assertEquals(" Foo" , mdef.name.toString)
1785+ }
17411786}
0 commit comments