> I'm going to dodge the breaking changes discussion, since it's a huge tangent,
How is it a tangent? One of the biggest reasons to want exhaustiveness checking is to avoid the even uglier problem of "compiling but semantic changing" changes.
> I greatly dislike _breaking_ changes and want languages that make it possible to avoid them
It seems you are only talking about disliking breaking changes that cause your program not to compile whole totally disregarding the danger of changes that compile but change semantics.
As respectfully as possible, that seems backwards to me.
How is it a tangent? One of the biggest reasons to want exhaustiveness checking is to avoid the even uglier problem of "compiling but semantic changing" changes.
> I greatly dislike _breaking_ changes and want languages that make it possible to avoid them
It seems you are only talking about disliking breaking changes that cause your program not to compile whole totally disregarding the danger of changes that compile but change semantics.
As respectfully as possible, that seems backwards to me.