メソッドで匿名クラスを作るとき、引数とそのクラスのメソッド名が同じ場合

trait User{ val name:String }

def newUser(name:String) = new User{
  val name = name
}

のようにしたいのですが、warning: value name does nothing other than call itself recursively となります、というかval name=name が val name=this.name と解釈されているため、意図通りには動きません。

関数の引数名は、名前付き引数などで利用したいので、なるべくクラスで使われているそのものにしたいです。その場合

def newUser(name:String) = {
  val xname=name
  new User{
    val name = xname
  }
}

のように一時的に別名の引数に代入するしかないのでしょうか?