Disallow mix of specific traits
scala, type-systems
Solution
And type erasure saves the day again:
trait Foo
trait Dummy[A]
trait Bar extends Dummy[Bar]{ this: Foo => }
trait NoBar extends Dummy[NoBar]{ this: Foo => }
new Foo with Bar with NoBar {}
This results in the following error:
illegal inheritance; anonymous class $anon inherits different
type instances of trait Dummy: Dummy[Bar] and Dummy[NoBar]
Problem
Given: ``` trait Foo trait Bar { this: Foo => } trait NoBar { this: Foo => } ``` Is there a way a can trick the type system into disallowing: ``` new Foo with Bar with NoBar {} ```