From 72c123d523525e4f4ea14d821171268dbccc0784 Mon Sep 17 00:00:00 2001 From: Lorand Szakacs Date: Wed, 26 Jul 2017 17:11:22 +0300 Subject: [PATCH] #1589 Move Parsers:2177 err to new format --- .../src/dotty/tools/dotc/parsing/Parsers.scala | 2 +- .../dotc/reporting/diagnostic/ErrorMessageID.java | 1 + .../tools/dotc/reporting/diagnostic/messages.scala | 8 ++++++++ .../tools/dotc/reporting/ErrorMessagesTests.scala | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala index b553e00f3740..af278d766474 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Parsers.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Parsers.scala @@ -2174,7 +2174,7 @@ object Parsers { if (in.token == CLASS) tmplDef(start, addMod(mods, enumMod)) else enumDef(start, mods, enumMod) case _ => - syntaxErrorOrIncomplete("expected start of definition") + syntaxErrorOrIncomplete(ExpectedStartOfTopLevelDefinition()) EmptyTree } } diff --git a/compiler/src/dotty/tools/dotc/reporting/diagnostic/ErrorMessageID.java b/compiler/src/dotty/tools/dotc/reporting/diagnostic/ErrorMessageID.java index f2b8f662e69e..37c6aee6540b 100644 --- a/compiler/src/dotty/tools/dotc/reporting/diagnostic/ErrorMessageID.java +++ b/compiler/src/dotty/tools/dotc/reporting/diagnostic/ErrorMessageID.java @@ -95,6 +95,7 @@ public enum ErrorMessageID { ImplicitFunctionTypeNeedsNonEmptyParameterListID, WrongNumberOfParametersID, DuplicatePrivateProtectedQualifierID, + ExpectedStartOfTopLevelDefinitionID, ; public int errorNumber() { diff --git a/compiler/src/dotty/tools/dotc/reporting/diagnostic/messages.scala b/compiler/src/dotty/tools/dotc/reporting/diagnostic/messages.scala index 3b398d23661c..afba9d5ab6d9 100644 --- a/compiler/src/dotty/tools/dotc/reporting/diagnostic/messages.scala +++ b/compiler/src/dotty/tools/dotc/reporting/diagnostic/messages.scala @@ -1702,4 +1702,12 @@ object messages { hl"It is not allowed to combine `private` and `protected` modifiers even if they are qualified to different scopes" } + case class ExpectedStartOfTopLevelDefinition()(implicit ctx: Context) + extends Message(ExpectedStartOfTopLevelDefinitionID) { + val kind = "Syntax" + val msg = "expected start of definition" + val explanation = + hl"you have to provide either ${"class"}, ${"trait"}, ${"object"}, or ${"enum"} definitions after qualifiers" + } + } diff --git a/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala b/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala index a597ef498b07..e62ca1435ef9 100644 --- a/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala +++ b/compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTests.scala @@ -926,4 +926,18 @@ class ErrorMessagesTests extends ErrorMessagesTest { assertEquals(DuplicatePrivateProtectedQualifier(), err) } + + @Test def expectedStartOfTopLevelDefinition = + checkMessagesAfter("frontend") { + """private Test {}""" + } + .expect { (ictx, messages) => + implicit val ctx: Context = ictx + val defn = ictx.definitions + + assertMessageCount(1, messages) + val err :: Nil = messages + + assertEquals(ExpectedStartOfTopLevelDefinition(), err) + } }