summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/parser/Parsers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 440e45c577..c35c0a1019 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -2262,11 +2262,20 @@ self =>
}
if (ofCaseClass) {
if (vds.isEmpty)
- syntaxError(in.lastOffset, s"case classes must have a parameter list; try 'case class ${owner.encoded
+ syntaxError(start, s"case classes must have a parameter list; try 'case class ${owner.encoded
}()' or 'case object ${owner.encoded}'")
- else if (vds.head.nonEmpty && vds.head.head.mods.isImplicit)
- syntaxError(in.lastOffset, s"case classes must have a non-implicit parameter list; try 'case class ${
+ else if (vds.head.nonEmpty && vds.head.head.mods.isImplicit) {
+ if (settings.isScala213)
+ syntaxError(start, s"case classes must have a non-implicit parameter list; try 'case class ${
owner.encoded}()${ vds.map(vs => "(...)").mkString }'")
+ else {
+ deprecationWarning(start, s"case classes should have a non-implicit parameter list; adapting to 'case class ${
+ owner.encoded}()${ vds.map(vs => "(...)").mkString }'", "2.12.2")
+ vds.insert(0, List.empty[ValDef])
+ vds(1) = vds(1).map(vd => copyValDef(vd)(mods = vd.mods & ~Flags.CASEACCESSOR))
+ if (implicitSection != -1) implicitSection += 1
+ }
+ }
}
if (implicitSection != -1 && implicitSection != vds.length - 1)
syntaxError(implicitOffset, "an implicit parameter section must be last")