Back to Scala3

E125: Class Cannot Extend Enum

docs/_docs/reference/error-codes/E125.md

3.8.41.3 KB
Original Source

E125: Class Cannot Extend Enum

This error is emitted when a class attempts to extend an enum.

In Scala 3, enums are sealed by design and can only be extended by their defined cases within the same enum declaration. External classes cannot extend enums.


Example

scala
enum Color:
  case Red, Green, Blue

class CustomColor extends Color

Error

scala
-- [E125] Syntax Error: example.scala:4:6 --------------------------------------
4 |class CustomColor extends Color
  |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |class CustomColor in package <empty> extends enum Color, but extending enums is prohibited.

Solution

scala
// Add new cases within the enum definition
enum Color:
  case Red, Green, Blue
  case Custom(rgb: Int)
scala
// Or use a sealed trait if you need external extensibility
sealed trait Color
object Color:
  case object Red extends Color
  case object Green extends Color
  case object Blue extends Color

case class CustomColor(rgb: Int) extends Color
<!-- SOURCE-ONLY: Remove the notice below once this page has been manually updated. --> <aside class="warning"> This reference page was created with LLM assistance - the description of the error code may not be accurate or cover all possible scenarios. </aside>