
import scala.language.reflectiveCalls

object Test {
  type valueType = { def value: this.type }

  class StringValue(x: String) {
    def value: this.type = this
  }

  def m(x: valueType) = x.value

  val s = new StringValue("hei")

  def main(args: Array[String]) {
    m(s)
  }
}
