Since you can only mix your InnerMixin inside some external extension, perhaps you can define it inside an Outer mixin, this way
trait Outer { val foo: Int trait Inner } trait OuterMixin { this: Outer => trait InnerMixin { this: Inner => def extension = OuterMixin.this.foo } } class ActualOuter extends Outer with OuterMixin { val foo = 12 class ActualInner extends Inner with InnerMixin { } }
Note. In most cases, you do not need the self type, and you can only do OuterMixin extends Outer and InnerMixin extends Inner.
source share