Back to Scala3

E075: Value Classes May Not Be Contained

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

3.8.41.4 KB
Original Source

E075: Value Classes May Not Be Contained

This error is emitted when a value class (a class extending AnyVal) is defined as a local class or as a member of another class.

Value classes must be top-level classes or members of an object. They cannot be local classes (defined inside a method) or member classes (defined inside another class) because they need to be fully resolved at compile time for optimization.


Example

scala
class Outer:
  class Wrapper(val value: Int) extends AnyVal

Error

scala
-- [E075] Syntax Error: example.scala:2:8 --------------------------------------
2 |  class Wrapper(val value: Int) extends AnyVal
  |        ^
  |        Value classes may not be a member of another class

Solution

scala
// Define the value class at the top level
class Wrapper(val value: Int) extends AnyVal

class Outer:
  def wrap(x: Int): Wrapper = new Wrapper(x)
scala
// Or define it inside an object
object Types:
  class Wrapper(val value: Int) extends AnyVal

class Outer:
  def wrap(x: Int): Types.Wrapper = new Types.Wrapper(x)
<!-- 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>