aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLucas Burson <ljdelight@gmail.com>2016-10-25 22:50:03 -0500
committerLucas Burson <ljdelight@gmail.com>2016-10-31 09:12:25 -0500
commit7c473613266526eb51c3bd7b2003bb281a1f5343 (patch)
treebf5166aa6d68073de7ad9e80326a3c24dc703c94 /src
parentb4f0c6e7856d1dff7139b9500b6a990f181b5f2d (diff)
downloaddotty-7c473613266526eb51c3bd7b2003bb281a1f5343.tar.gz
dotty-7c473613266526eb51c3bd7b2003bb281a1f5343.tar.bz2
dotty-7c473613266526eb51c3bd7b2003bb281a1f5343.zip
Update error msg for Parsers.scala:1738 and 1739
These error messages are for aux ctors needing non-implicit params. I'm testing the error messages with this code ``` class Square(val len: Int) { // typical cases: // (1) this() parens are forgotten, (2) argument set as implicit def this(implicit width: Double) = this(0) def this = { this(4) } } class MyList(val s: String) { def this ```
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/parsing/Parsers.scala4
-rw-r--r--src/dotty/tools/dotc/reporting/diagnostic/messages.scala17
2 files changed, 19 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/parsing/Parsers.scala b/src/dotty/tools/dotc/parsing/Parsers.scala
index 4926ebb9f..95626846d 100644
--- a/src/dotty/tools/dotc/parsing/Parsers.scala
+++ b/src/dotty/tools/dotc/parsing/Parsers.scala
@@ -1742,8 +1742,8 @@ object Parsers {
if (owner == nme.CONSTRUCTOR && (result.isEmpty || (result.head take 1 exists (_.mods is Implicit)))) {
in.token match {
case LBRACKET => syntaxError("no type parameters allowed here")
- case EOF => incompleteInputError("auxiliary constructor needs non-implicit parameter list")
- case _ => syntaxError("auxiliary constructor needs non-implicit parameter list", start)
+ case EOF => incompleteInputError(AuxConstructorNeedsNonImplicitParameter())
+ case _ => syntaxError(AuxConstructorNeedsNonImplicitParameter(), start)
}
}
result
diff --git a/src/dotty/tools/dotc/reporting/diagnostic/messages.scala b/src/dotty/tools/dotc/reporting/diagnostic/messages.scala
index bec49e728..02aa850c5 100644
--- a/src/dotty/tools/dotc/reporting/diagnostic/messages.scala
+++ b/src/dotty/tools/dotc/reporting/diagnostic/messages.scala
@@ -715,4 +715,21 @@ object messages {
|""".stripMargin
}
}
+
+ case class AuxConstructorNeedsNonImplicitParameter()(implicit ctx:Context) extends Message(26) {
+ val kind = "Syntax"
+ val msg = "auxiliary constructor needs non-implicit parameter list"
+ val explanation =
+ hl"""Only the primary constructor is allowed an ${"implicit"} parameter list;
+ |auxiliary constructors need a non-implicit parameter list. When a primary
+ |constructor has an implicit argslist, auxiliary constructors that call the
+ |primary constructor must specify the implicit value.
+ |
+ |To resolve this issue check for:
+ | - forgotten parenthesis on ${"this"} (${"def this() = // ..."})
+ | - auxiliary constructors specify the implicit value
+ |""".stripMargin
+ }
+
+
}