Причина, по которой синтаксис действителен, заключается в том, что… хорошо… потому что это:
implicit class UpdateableSymbol(val s: Symbol.type) extends AnyVal {
def update[A](s: String, v: A) = println(s"`Symbol.update` called with s = $s and v = $v")
}
'n = 5
// `Symbol.update` called with s = n and v = 5
Как видите, в синтаксисе нет ничего плохого, так почему он должен быть недействительным? Сообщение об ошибке сообщает вам, в чем проблема: вы звоните Symbol.update
, но этого не существует. Отсутствующий метод не является синтаксической ошибкой, это семантическая ошибка.