Это может быть что угодно: self, this, meep, blah и т. Д. Он используется только компилятором при определении, к какому классу приводиться (при вызове методов для него), и фактически не отображается в байт-коде.
Будьте осторожны при именовании, потому что локальные идентификаторы переопределяют определение собственного типа:
trait A {
def baz = println("baz!")
}
trait B {
foo: A =>
val foo = "hello"
// def bar = foo.baz // does not compile because foo is String, not A
def bar = foo.substring(1)
}