This is fine
class VC(val s: String) extends AnyVal
class AImpl {
def a : VC = new VC("a")
}
class X {
def build(v: String) = new AImpl {
private var _a = new VC(v)
override def a : VC = _a
def a_=(newA: String) { _a = new VC(newA) }
}
}
But this isn't
class VC(val s: String) extends AnyVal
class AImpl {
def a : VC = new VC("a")
}
class X {
def build(v: String) = new AImpl {
override var a = new VC(v)
}
}
It fails with
error: Parameter type in structural refinement may not refer to a user-defined value class
def build(v: String) = new AImpl {
Instead of
error: method a_= overrides nothing