aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-09-28 13:03:04 +0200
committerFelix Mulder <felix.mulder@gmail.com>2016-10-10 13:25:36 +0200
commite42bb303231b9c91f679c410d51455ba91df024d (patch)
tree69f52e133631f3b3af0d47c6586896c0a914cb86
parentf7b8980fad5adb20e9a420a16f5b3416927dccbc (diff)
downloaddotty-e42bb303231b9c91f679c410d51455ba91df024d.tar.gz
dotty-e42bb303231b9c91f679c410d51455ba91df024d.tar.bz2
dotty-e42bb303231b9c91f679c410d51455ba91df024d.zip
Change Message#errorId to type Int
-rw-r--r--src/dotty/tools/dotc/reporting/ConsoleReporter.scala7
-rw-r--r--src/dotty/tools/dotc/reporting/diagnostic/Message.scala6
-rw-r--r--src/dotty/tools/dotc/reporting/diagnostic/messages.scala14
3 files changed, 16 insertions, 11 deletions
diff --git a/src/dotty/tools/dotc/reporting/ConsoleReporter.scala b/src/dotty/tools/dotc/reporting/ConsoleReporter.scala
index e4c24643b..8ded4035c 100644
--- a/src/dotty/tools/dotc/reporting/ConsoleReporter.scala
+++ b/src/dotty/tools/dotc/reporting/ConsoleReporter.scala
@@ -10,7 +10,7 @@ import java.io.{ BufferedReader, IOException, PrintWriter }
import scala.reflect.internal.util._
import printing.SyntaxHighlighting._
import printing.Highlighting._
-import diagnostic.{ Message, MessageContainer }
+import diagnostic.{ Message, MessageContainer, NoExplanation }
import diagnostic.messages._
/**
@@ -68,7 +68,10 @@ class ConsoleReporter(
def posStr(pos: SourcePosition, diagnosticLevel: String, message: Message)(implicit ctx: Context) =
if (pos.exists) Blue({
val file = pos.source.file.toString
- val errId = if (message.errorId != "") s"[${message.errorId}] " else ""
+ val errId =
+ if (message.errorId != NoExplanation.ID)
+ s"[E${"0" * (3 - message.errorId.toString.length) + message.errorId}] "
+ else ""
val kind =
if (message.kind == "") diagnosticLevel
else s"${message.kind} $diagnosticLevel"
diff --git a/src/dotty/tools/dotc/reporting/diagnostic/Message.scala b/src/dotty/tools/dotc/reporting/diagnostic/Message.scala
index e365851be..f19191f4f 100644
--- a/src/dotty/tools/dotc/reporting/diagnostic/Message.scala
+++ b/src/dotty/tools/dotc/reporting/diagnostic/Message.scala
@@ -15,7 +15,7 @@ object Message {
new NoExplanation(str)
}
-abstract class Message(val errorId: String) { self =>
+abstract class Message(val errorId: Int) { self =>
import messages._
/** The `msg` contains the diagnostic message e.g:
@@ -81,7 +81,7 @@ abstract class Message(val errorId: String) { self =>
}
/** The fallback `Message` containing no explanation and having no `kind` */
-class NoExplanation(val msg: String) extends Message("") {
+class NoExplanation(val msg: String) extends Message(NoExplanation.ID) {
val explanation = ""
val kind = ""
}
@@ -90,6 +90,8 @@ class NoExplanation(val msg: String) extends Message("") {
* lacks an explanation
*/
object NoExplanation {
+ final val ID = -1
+
def unapply(m: Message): Option[Message] =
if (m.explanation == "") Some(m)
else None
diff --git a/src/dotty/tools/dotc/reporting/diagnostic/messages.scala b/src/dotty/tools/dotc/reporting/diagnostic/messages.scala
index 11c6b43d9..4553a2d22 100644
--- a/src/dotty/tools/dotc/reporting/diagnostic/messages.scala
+++ b/src/dotty/tools/dotc/reporting/diagnostic/messages.scala
@@ -89,7 +89,7 @@ object messages {
import dotc.ast.untpd
// Syntax Errors ---------------------------------------------------------- //
- abstract class EmptyCatchOrFinallyBlock(tryBody: untpd.Tree, errNo: String)(implicit ctx: Context)
+ abstract class EmptyCatchOrFinallyBlock(tryBody: untpd.Tree, errNo: Int)(implicit ctx: Context)
extends Message(errNo) {
val explanation = {
val tryString = tryBody match {
@@ -121,7 +121,7 @@ object messages {
}
case class EmptyCatchBlock(tryBody: untpd.Tree)(implicit ctx: Context)
- extends EmptyCatchOrFinallyBlock(tryBody, "E001") {
+ extends EmptyCatchOrFinallyBlock(tryBody, 1) {
val kind = "Syntax"
val msg =
hl"""|The ${"catch"} block does not contain a valid expression, try
@@ -129,7 +129,7 @@ object messages {
}
case class EmptyCatchAndFinallyBlock(tryBody: untpd.Tree)(implicit ctx: Context)
- extends EmptyCatchOrFinallyBlock(tryBody, "E002") {
+ extends EmptyCatchOrFinallyBlock(tryBody, 2) {
val kind = "Syntax"
val msg =
hl"""|A ${"try"} without ${"catch"} or ${"finally"} is equivalent to putting
@@ -137,7 +137,7 @@ object messages {
}
case class DeprecatedWithOperator()(implicit ctx: Context)
- extends Message("E003") {
+ extends Message(3) {
val kind = "Syntax"
val msg =
hl"""${"with"} as a type operator has been deprecated; use `&' instead"""
@@ -168,7 +168,7 @@ object messages {
// Type Errors ------------------------------------------------------------ //
case class DuplicateBind(bind: untpd.Bind, tree: untpd.CaseDef)(implicit ctx: Context)
- extends Message("E004") {
+ extends Message(4) {
val kind = "Naming"
val msg = em"duplicate pattern variable: `${bind.name}`"
@@ -195,7 +195,7 @@ object messages {
}
case class MissingIdent(tree: untpd.Ident, treeKind: String, name: String)(implicit ctx: Context)
- extends Message("E005") {
+ extends Message(5) {
val kind = "Missing Identifier"
val msg = em"not found: $treeKind$name"
@@ -206,7 +206,7 @@ object messages {
}
case class TypeMismatch(found: Type, expected: Type, whyNoMatch: String = "", implicitFailure: String = "")(implicit ctx: Context)
- extends Message("E006") {
+ extends Message(6) {
val kind = "Type Mismatch"
private val (where, printCtx) = Formatting.disambiguateTypes(found, expected)
private val (fnd, exp) = Formatting.typeDiff(found, expected)(printCtx)