So I guess I’ll ask this, Scala 3 is pretty historical so even if I think nothing will come out of this because it’s too late for such a fundamental change and I’m also probably wrong.
I think I heard years ago now an explanation along the lines of “if your class extends a door with a window and you open() it, you’re opening the door”
I never thought about it like that, for me it was always like that class is both a window and a door (the example falls apart here a bit)
This also came up recently when I was experimenting trying to extend an intersection type, the non-commutability of inherited traits given to me as explanation on gitter. So the introduction of intersection types is further motivation for me to bring this up.
Also the way it currently works feels weirdly implicit to me.
Can’t think of any way to have these changes than to force the user to disambiguate everythig, override ambiguous methods (possibly delegating to one of the traits implementation), etc. Not sure how this would play with the new trait parameters.
I’d prefer that… anyway, just wanted to have this out here for discussion before the final feature freeze, thanks for your attention