Skip to content

Commit b8398a3

Browse files
authored
Merge pull request #2682 from mads-hartmann/error-message-only-case-class-or-case-object-allowed
Move only `case class` or `case object` allowed to new error format
2 parents 41085c8 + 256dcb2 commit b8398a3

File tree

4 files changed

+20
-1
lines changed

4 files changed

+20
-1
lines changed

compiler/src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2382,7 +2382,7 @@ object Parsers {
23822382
stats +++= tmplDef(in.offset, defAnnotsMods(modifierTokens))
23832383
else if (!isStatSep) {
23842384
if (in.token == CASE)
2385-
syntaxErrorOrIncomplete("only `case class` or `case object` allowed")
2385+
syntaxErrorOrIncomplete(OnlyCaseClassOrCaseObjectAllowed())
23862386
else
23872387
syntaxErrorOrIncomplete("expected class or object definition")
23882388
if (mustStartStat) // do parse all definitions even if they are probably local (i.e. a "}" has been forgotten)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public enum ErrorMessageID {
8686
ValueClassesMayNotWrapItselfID,
8787
ValueClassParameterMayNotBeAVarID,
8888
ValueClassNeedsExactlyOneValParamID,
89+
OnlyCaseClassOrCaseObjectAllowedID,
8990
;
9091

9192
public int errorNumber() {

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1566,4 +1566,11 @@ object messages {
15661566
val explanation = ""
15671567
}
15681568

1569+
case class OnlyCaseClassOrCaseObjectAllowed()(implicit ctx: Context)
1570+
extends Message(OnlyCaseClassOrCaseObjectAllowedID) {
1571+
val msg = "only `case class` or `case object` allowed"
1572+
val kind = "Syntax"
1573+
val explanation = ""
1574+
}
1575+
15691576
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,4 +781,15 @@ class ErrorMessagesTests extends ErrorMessagesTest {
781781
assertEquals("class MyValue", valueClass.show)
782782
}
783783

784+
@Test def onlyCaseClassOrCaseObjectAllowed =
785+
checkMessagesAfter("frontend") {
786+
"""case Foobar"""
787+
}
788+
.expect { (ictx, messages) =>
789+
implicit val ctx: Context = ictx
790+
assertMessageCount(1, messages)
791+
val err :: Nil = messages
792+
assertEquals(err, OnlyCaseClassOrCaseObjectAllowed())
793+
}
794+
784795
}

0 commit comments

Comments
 (0)