Skip to content

Commit 644053a

Browse files
committed
Refactorings
1 parent 1947222 commit 644053a

File tree

5 files changed

+10
-8
lines changed

5 files changed

+10
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public enum ErrorMessageID {
132132
ImportRenamedTwiceID,
133133
TypeTestAlwaysSucceedsID,
134134
TermMemberNeedsNeedsResultTypeForImplicitSearchID,
135-
CaseClassCannotExtendEnumID,
135+
ClassCannotExtendEnumID,
136136
ValueClassParameterMayNotBeCallByNameID,
137137
NotAnExtractorID,
138138
MemberWithSameNameAsStaticID,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2126,7 +2126,7 @@ object messages {
21262126
|""".stripMargin
21272127
}
21282128

2129-
case class CaseClassCannotExtendEnum(cls: Symbol, parent: Symbol)(implicit ctx: Context) extends Message(CaseClassCannotExtendEnumID) {
2129+
case class ClassCannotExtendEnum(cls: Symbol, parent: Symbol)(implicit ctx: Context) extends Message(ClassCannotExtendEnumID) {
21302130
override def kind: String = "Syntax"
21312131
override def msg: String = hl"""Normal case class cannot extend an enum. case $cls in ${cls.owner} is extending enum ${parent.name}."""
21322132
override def explanation: String = ""

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -901,14 +901,16 @@ trait Checking {
901901
}
902902

903903
/** Check that all case classes that extend `scala.Enum` are `enum` cases */
904-
def checkEnum(cdef: untpd.TypeDef, cls: Symbol, parent: Symbol)(implicit ctx: Context): Unit = {
904+
def checkEnum(cdef: untpd.TypeDef, cls: Symbol, firstParent: Symbol)(implicit ctx: Context): Unit = {
905905
import untpd.modsDeco
906906
def isEnumAnonCls =
907907
cls.isAnonymousClass &&
908908
cls.owner.isTerm &&
909909
(cls.owner.flagsUNSAFE.is(Case) || cls.owner.name == nme.DOLLAR_NEW)
910-
if (!cdef.mods.isEnumCase && !isEnumAnonCls)
911-
ctx.error(CaseClassCannotExtendEnum(cls, parent), cdef.sourcePos)
910+
if (!cdef.mods.isEnumCase && !isEnumAnonCls) {
911+
if (cls.is(Case))
912+
ctx.error(ClassCannotExtendEnum(cls, firstParent), cdef.sourcePos)
913+
}
912914
}
913915

914916
/** Check that all references coming from enum cases in an enum companion object
@@ -975,7 +977,7 @@ trait Checking {
975977

976978
trait ReChecking extends Checking {
977979
import tpd._
978-
override def checkEnum(cdef: untpd.TypeDef, cls: Symbol, parent: Symbol)(implicit ctx: Context): Unit = ()
980+
override def checkEnum(cdef: untpd.TypeDef, cls: Symbol, firstParent: Symbol)(implicit ctx: Context): Unit = ()
979981
override def checkRefsLegal(tree: tpd.Tree, badOwner: Symbol, allowed: (Name, Symbol) => Boolean, where: String)(implicit ctx: Context): Unit = ()
980982
override def checkEnumCaseRefsLegal(cdef: TypeDef, enumCtx: Context)(implicit ctx: Context): Unit = ()
981983
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,7 @@ class Typer extends Namer
16511651
.withType(dummy.termRef)
16521652
if (!cls.is(AbstractOrTrait) && !ctx.isAfterTyper)
16531653
checkRealizableBounds(cls, cdef.sourcePos.withSpan(cdef.nameSpan))
1654-
if (cls.is(Case) && cls.derivesFrom(defn.EnumClass)) {
1654+
if (cls.derivesFrom(defn.EnumClass)) {
16551655
val firstParent = parents1.head.tpe.dealias.typeSymbol
16561656
checkEnum(cdef, cls, firstParent)
16571657
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class ErrorMessagesTests extends ErrorMessagesTest {
3030
implicit val ctx: Context = ictx
3131
assertMessageCount(1, messages)
3232
val errorMsg = messages.head
33-
val CaseClassCannotExtendEnum(cls, parent) :: Nil = messages
33+
val ClassCannotExtendEnum(cls, parent) :: Nil = messages
3434
assertEquals("Bar", cls.name.show)
3535
assertEquals("Foo", parent.name.show)
3636
assertEquals("<empty>", cls.owner.name.show)

0 commit comments

Comments
 (0)