Skip to content

Commit 7ef4491

Browse files
authored
Merge pull request #5023 from skvithalani/ReplaceErrorStringWithMessage
Introduce CaseClassCannotExtendsEnum message to replace error string from Checking
2 parents 28ddeac + 39c598c commit 7ef4491

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

compiler/src/dotty/tools/dotc/reporting/diagnostic/ErrorMessageID.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ public enum ErrorMessageID {
131131
MatchCaseOnlyNullWarningID,
132132
ImportRenamedTwiceID,
133133
TypeTestAlwaysSucceedsID,
134-
TermMemberNeedsNeedsResultTypeForImplicitSearchID
134+
TermMemberNeedsNeedsResultTypeForImplicitSearchID,
135+
CaseClassCannotExtendEnumID
135136
;
136137

137138
public int errorNumber() {

compiler/src/dotty/tools/dotc/reporting/diagnostic/messages.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2120,4 +2120,10 @@ object messages {
21202120
|To avoid this error, give `$cycleSym` an explicit type.
21212121
|""".stripMargin
21222122
}
2123+
2124+
case class CaseClassCannotExtendEnum(cls: Symbol)(implicit ctx: Context) extends Message(CaseClassCannotExtendEnumID) {
2125+
override def kind: String = "Syntax"
2126+
override def msg: String = hl"""normal case $cls in ${cls.owner} cannot extend an enum"""
2127+
override def explanation: String = ""
2128+
}
21232129
}

compiler/src/dotty/tools/dotc/typer/Checking.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ trait Checking {
853853
cls.owner.isTerm &&
854854
(cls.owner.flagsUNSAFE.is(Case) || cls.owner.name == nme.DOLLAR_NEW)
855855
if (!cdef.mods.isEnumCase && !isEnumAnonCls)
856-
ctx.error(em"normal case $cls in ${cls.owner} cannot extend an enum", cdef.pos)
856+
ctx.error(CaseClassCannotExtendEnum(cls), cdef.pos)
857857
}
858858

859859
/** Check that all references coming from enum cases in an enum companion object

compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ class ErrorMessagesTests extends ErrorMessagesTest {
3030
implicit val ctx: Context = ictx
3131
assertMessageCount(1, messages)
3232
val errorMsg = messages.head
33-
assertEquals("normal case class Bar in package <empty> cannot extend an enum", errorMsg.msg)
33+
val CaseClassCannotExtendEnum(cls) :: Nil = messages
34+
assertEquals("Bar", cls.name.show)
35+
assertEquals("<empty>", cls.owner.name.show)
3436
}
3537

3638
@Test def typeMismatch =

0 commit comments

Comments
 (0)