Skip to content

Commit e8e26e1

Browse files
committed
Refactorings
1 parent 615fdc9 commit e8e26e1

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
@@ -2136,7 +2136,7 @@ object messages {
21362136
|""".stripMargin
21372137
}
21382138

2139-
case class CaseClassCannotExtendEnum(cls: Symbol, parent: Symbol)(implicit ctx: Context) extends Message(CaseClassCannotExtendEnumID) {
2139+
case class ClassCannotExtendEnum(cls: Symbol, parent: Symbol)(implicit ctx: Context) extends Message(ClassCannotExtendEnumID) {
21402140
override def kind: String = "Syntax"
21412141
override def msg: String = hl"""Normal case class cannot extend an enum. case $cls in ${cls.owner} is extending enum ${parent.name}."""
21422142
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.pos)
910+
if (!cdef.mods.isEnumCase && !isEnumAnonCls) {
911+
if (cls.is(Case))
912+
ctx.error(ClassCannotExtendEnum(cls, firstParent), cdef.pos)
913+
}
912914
}
913915

914916
/** Check that all references coming from enum cases in an enum companion object
@@ -986,7 +988,7 @@ trait Checking {
986988

987989
trait ReChecking extends Checking {
988990
import tpd._
989-
override def checkEnum(cdef: untpd.TypeDef, cls: Symbol, parent: Symbol)(implicit ctx: Context): Unit = ()
991+
override def checkEnum(cdef: untpd.TypeDef, cls: Symbol, firstParent: Symbol)(implicit ctx: Context): Unit = ()
990992
override def checkRefsLegal(tree: tpd.Tree, badOwner: Symbol, allowed: (Name, Symbol) => Boolean, where: String)(implicit ctx: Context): Unit = ()
991993
override def checkEnumCompanions(stats: List[Tree], enumContexts: collection.Map[Symbol, Context])(implicit ctx: Context): List[Tree] = stats
992994
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1642,7 +1642,7 @@ class Typer extends Namer
16421642
.withType(dummy.termRef)
16431643
if (!cls.is(AbstractOrTrait) && !ctx.isAfterTyper)
16441644
checkRealizableBounds(cls, cdef.namePos)
1645-
if (cls.is(Case) && cls.derivesFrom(defn.EnumClass)) {
1645+
if (cls.derivesFrom(defn.EnumClass)) {
16461646
val firstParent = parents1.head.tpe.dealias.typeSymbol
16471647
checkEnum(cdef, cls, firstParent)
16481648
}

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)