E069: Cannot Have Same Name As
This error is emitted when a member has the same name as another definition in a way that creates an illegal conflict.
This typically happens when:
- A member tries to override a class definition (class definitions cannot be overridden)
- A member in a class has the same name as a member defined in a self-type reference
Example
class Outer:
class Inner
class Child extends Outer:
override class Inner
Error
-- [E069] Naming Error: example.scala:5:17 -------------------------------------
5 | override class Inner
| ^
|class Inner cannot have the same name as class Inner in class Outer -- class definitions cannot be overridden
Solution
// Use an abstract type member with optional interface
abstract class Outer:
trait Interface
type Inner <: Interface
class Child extends Outer:
class Inner extends Interface
In this article