Я думаю, что "smartindent" разработан для C, таким образом, это думает, что "#" является запуском директивы препроцессору вместо комментария. Я не знаю решения для него, кроме того, если Вы введете пространство, затем клавиша Backspace, тогда "#", то это не сделает этого.
Использовать составной тип:
trait Narrowable[A] extends Iterable[A] {
def narrow[B <: A with AnyRef] : Iterable[B]
}