@@ -1783,4 +1783,39 @@ class ErrorMessagesTests extends ErrorMessagesTest {
17831783 assertEquals(" sealed modifier is redundant for objects" , errorMsg)
17841784 assertEquals(" Foo" , mdef.name.toString)
17851785 }
1786+
1787+ @ Test def enumAndCaseWithTypesNeedExplicitExtends =
1788+ checkMessagesAfter(RefChecks .name) {
1789+ """
1790+ |enum E[T,U,V] {
1791+ | case C[X,Y,Z](x: X, y: Y, z: Z)
1792+ |}
1793+ """ .stripMargin
1794+ }
1795+ .expect { (ictx, messages) ⇒
1796+ implicit val ctx : Context = ictx
1797+ assertMessageCount(1 , messages)
1798+ val errorMsg = messages.head.msg
1799+ val TypedCaseDoesNotExplicitlyExtendTypedEnum (enumDef, caseDef) :: Nil = messages
1800+ assertEquals(" explicit extends clause needed because both enum case and enum class have type parameters" , errorMsg)
1801+ assertEquals(" E" , enumDef.name.toString)
1802+ assertEquals(" C" , caseDef.name.toString)
1803+ }
1804+
1805+ @ Test def illegalRedefinitionOfStandardKind =
1806+ checkMessagesAfter(RefChecks .name) {
1807+ """ package scala {
1808+ | class Any()
1809+ | }
1810+ """ .stripMargin
1811+ }
1812+ .expect { (ictx, messages) ⇒
1813+ implicit val ctx : Context = ictx
1814+ assertMessageCount(1 , messages)
1815+ val errorMsg = messages.head.msg
1816+ val IllegalRedefinitionOfStandardKind (kind, name) :: Nil = messages
1817+ assertEquals(" illegal redefinition of standard class Any" , errorMsg)
1818+ assertEquals(" class" , kind)
1819+ assertEquals(" Any" , name.toString)
1820+ }
17861821}
0 commit comments