diff --git a/compiler/src/dotty/tools/dotc/ast/Desugar.scala b/compiler/src/dotty/tools/dotc/ast/Desugar.scala index a9a1eaa05fe9..b915b199094c 100644 --- a/compiler/src/dotty/tools/dotc/ast/Desugar.scala +++ b/compiler/src/dotty/tools/dotc/ast/Desugar.scala @@ -352,6 +352,9 @@ object desugar { if (isCaseClass && originalTparams.isEmpty) ctx.error(CaseClassMissingParamList(cdef), cdef.namePos) ListOfNil + } else if (isCaseClass && originalVparamss.head.exists(_.mods.is(Implicit))) { + ctx.error("Case classes should have a non-implicit parameter list", cdef.namePos) + ListOfNil } else originalVparamss.nestedMap(toDefParam) val constr = cpy.DefDef(constr1)(tparams = constrTparams, vparamss = constrVparamss) diff --git a/tests/neg/5541.scala b/tests/neg/5541.scala new file mode 100644 index 000000000000..53d178e57c44 --- /dev/null +++ b/tests/neg/5541.scala @@ -0,0 +1 @@ +case class Foo(implicit i: Int) // error: Case classes should have a non-implicit parameter list