Result type in structural refinement may not refer to a user-defined value class

1.1k Views Asked by At

When I define Wrapper as value class(extending AnyVal):

class Wrapper(val string: String) extends AnyVal

def wrapperHolder(w: Wrapper): {def wrapper: Wrapper} = new {
  def wrapper: Wrapper = w
}

I have following compile error for wrapperHolder:

Error:(5, 22) Result type in structural refinement may not refer to a user-defined value class
def wrapper: Wrapper = w
  • Why it doesn't work for value class?
1

There are 1 best solutions below

0
On

Declaring a trait may help:

class Wrapper(val string: String) extends AnyVal

trait WrapperHolder {
    def wrapper: Wrapper 
}

def wrapperHolder(w: Wrapper) : WrapperHolder = new WrapperHolder {
    def wrapper: Wrapper = w
}