Back to Scala3

E070: Value Classes May Not Define Inner Class

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

3.8.41.2 KB
Original Source

E070: Value Classes May Not Define Inner Class

This error is emitted when a value class (a class extending AnyVal) contains an inner class definition.

Value classes have strict limitations to ensure they can be optimized by the compiler. They may not define inner classes, traits, or objects because the runtime representation of a value class is its wrapped value, not a full object.


Example

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

Error

scala
-- [E070] Syntax Error: example.scala:2:8 --------------------------------------
2 |  class Inner
  |  ^^^^^^^^^^^
  |  Value classes may not define an inner class

Solution

scala
// Move the inner class outside the value class
class Inner

class Wrapper(val value: Int) extends AnyVal:
  def process: Int = value * 2
scala
// Or use a regular class if you need inner classes
class Wrapper(val value: Int):
  class Inner
<!-- 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>