@@ -1770,4 +1770,39 @@ class ErrorMessagesTests extends ErrorMessagesTest {
17701770 assertEquals(" sealed modifier is redundant for objects" , errorMsg)
17711771 assertEquals(" Foo" , mdef.name.toString)
17721772 }
1773+
1774+ @ Test def enumAndCaseWithTypesNeedExplicitExtends =
1775+ checkMessagesAfter(RefChecks .name) {
1776+ """
1777+ |enum E[T,U,V] {
1778+ | case C[X,Y,Z](x: X, y: Y, z: Z)
1779+ |}
1780+ """ .stripMargin
1781+ }
1782+ .expect { (ictx, messages) ⇒
1783+ implicit val ctx : Context = ictx
1784+ assertMessageCount(1 , messages)
1785+ val errorMsg = messages.head.msg
1786+ val TypedCaseDoesNotExplicitlyExtendTypedEnum (enumDef, caseDef) :: Nil = messages
1787+ assertEquals(" explicit extends clause needed because both enum case and enum class have type parameters" , errorMsg)
1788+ assertEquals(" E" , enumDef.name.toString)
1789+ assertEquals(" C" , caseDef.name.toString)
1790+ }
1791+
1792+ @ Test def illegalRedefinitionOfStandardKind =
1793+ checkMessagesAfter(RefChecks .name) {
1794+ """ package scala {
1795+ | class Any()
1796+ | }
1797+ """ .stripMargin
1798+ }
1799+ .expect { (ictx, messages) ⇒
1800+ implicit val ctx : Context = ictx
1801+ assertMessageCount(1 , messages)
1802+ val errorMsg = messages.head.msg
1803+ val IllegalRedefinitionOfStandardKind (kind, name) :: Nil = messages
1804+ assertEquals(" illegal redefinition of standard class Any" , errorMsg)
1805+ assertEquals(" class" , kind)
1806+ assertEquals(" Any" , name.toString)
1807+ }
17731808}
0 commit comments