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
class Wrapper(val value: Int) extends AnyVal:
class Inner
Error
-- [E070] Syntax Error: example.scala:2:8 --------------------------------------
2 | class Inner
| ^^^^^^^^^^^
| Value classes may not define an inner class
Solution
// Move the inner class outside the value class
class Inner
class Wrapper(val value: Int) extends AnyVal:
def process: Int = value * 2
// Or use a regular class if you need inner classes
class Wrapper(val value: Int):
class Inner
In this article