Skip to content

Commit bfb719d

Browse files
committed
add test and provide owner on message creation
1 parent 933a378 commit bfb719d

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

compiler/src/dotty/tools/dotc/ast/DesugarEnums.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ object DesugarEnums {
3333
/** Is enum case `tree` situated in a companion object of an enum class? */
3434
def enumCaseIsLegal(tree: Tree)(implicit ctx: Context): Boolean = (
3535
ctx.owner.is(ModuleClass) && enumClass.derivesFrom(defn.EnumClass)
36-
|| { ctx.error(EnumCaseDefinitionInNonEnumOwner(), tree.pos)
36+
|| { ctx.error(EnumCaseDefinitionInNonEnumOwner(ctx.owner), tree.pos)
3737
false
3838
}
3939
)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1770,10 +1770,10 @@ object messages {
17701770
|"""
17711771
}
17721772

1773-
case class EnumCaseDefinitionInNonEnumOwner()(implicit ctx: Context)
1773+
case class EnumCaseDefinitionInNonEnumOwner(owner: Symbol)(implicit ctx: Context)
17741774
extends Message(EnumCaseDefinitionInNonEnumOwnerID) {
17751775
val kind = "Syntax"
1776-
val msg = em"case not allowed here, since owner ${ctx.owner} is not an `enum' object"
1776+
val msg = em"case not allowed here, since owner ${owner} is not an `enum' object"
17771777
val explanation = {
17781778

17791779
hl"""

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,4 +998,17 @@ class ErrorMessagesTests extends ErrorMessagesTest {
998998
val ReturnOutsideMethodDefinition(owner) :: Nil = messages
999999
assertEquals("object A", owner.show)
10001000
}
1001+
1002+
@Test def enumCaseDefinitionInNonEnumOwner =
1003+
checkMessagesAfter("frontend") {
1004+
"""object Qux {
1005+
| case Foo
1006+
|}
1007+
""".stripMargin
1008+
}.expect { (ictx, messages) =>
1009+
implicit val ctx: Context = ictx
1010+
assertMessageCount(1, messages)
1011+
val EnumCaseDefinitionInNonEnumOwner(owner) :: Nil = messages
1012+
assertEquals("object Qux", owner.show)
1013+
}
10011014
}

0 commit comments

Comments
 (0)