Not sure, but maybe this is somewhere nearby where you want to go.
trait Foo[A,B]
trait Bar[A] { self: Foo[A,_] =>
def doSmth[C](atoc: A => C): C
}
, .
trait Foo[A,B] {type FooA = A}
trait Bar { self: Foo[_,_] =>
def doSmth[C](atoc: FooA => C): C
}
, a Foo , Bar.