На самом деле это не анонимный класс! Это ранний инициализатор, который запускается как часть конструктора, предшествующего его суперклассу.
Цитируя отличный ответ от другого вопроса stackoverflow :
abstract class X {
val name: String
val size = name.size
}
class Y extends {
val name = "class Y"
} with X
Если код был написан вместо
class Z extends X {
val name = "class Z"
}
тогда возникнет исключение нулевого указателя при инициализации Z, потому что размер инициализируется перед именем в обычном порядке инициализации (суперкласс перед классом).