E144: Case Class Missing Non-Implicit Parameter List
This error occurs when a case class is defined with only implicit or using parameter lists, without any leading non-implicit parameter list.
Case classes in Scala require at least one leading non-implicit parameter list. This is because case classes automatically generate methods like equals, hashCode, toString, and copy based on their primary constructor parameters, and these generated methods expect regular (non-implicit) parameters.
Example
case class Example(using x: Int)
Error
-- [E144] Syntax Error: example.scala:1:11 -------------------------------------
1 |case class Example(using x: Int)
| ^^^^^^^
| A case class must have at least one leading non-implicit parameter list
|-----------------------------------------------------------------------------
| Explanation (enabled by `-explain`)
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Example must have at least one leading non-implicit parameter list,
| if you're aiming to have a case class parametrized only by implicit ones, you should
| add an explicit () as the first parameter list to Example.
-----------------------------------------------------------------------------
Solution
// Add an explicit empty parameter list before the using clause
case class Example()(using x: Int)
// Or add a regular parameter
case class Example(value: String)(using x: Int)
// If no parameters are needed, consider using a regular class or object
class Example(using x: Int)
In this article