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 {}
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]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With