Рассмотрим это:
 class Foo { def foo = "foo" }
 trait Bar { self: Foo =>
    override def foo = "bar"
 }
Я был приятно удивлен, узнав, что это возможно, и работает так, как ожидалось:
new Foo with Bar foo 
возвращает "bar". Вопрос в том, можно ли Bar.foo вызвать Foo.foo, как это часто бывает в случае "обычного" наследования. override def foo = super.foo + "bar" не работает (говорит: "foo не является членом AnyRef), и не делает override def foo = self.foo + "bar" (он заканчивается тем, что просто вызывает себя, и приводит к бесконечной рекурсии).
Я попробовал несколько других комбинаций (например, self.Foo.foo, Foo.this.foo и т.д.), Но без везения.
Это просто невозможно?