I would like to do something akin to
trait Copyable[T] {
extension (o: T) def copy: T
}
trait A : Copyable { // Context bound is not legal here...
def foo(): A = copy
}
or
trait A {
this: (A: Copyable) => // Context bound is not legal here...
def foo(): A = copy
}
In other words, I would like the trait A
to "extend" Copyable
, or only be mixable with Copyable
types.
Note: Ideally, foo
would have type this.static_type
(doesn't currently exist), which would represent the most specific static type of this
.