This will not solve the problem of Maurizio for sub-patterns but i like it.
I agree it doesn't *solve* the problem, but it helps somewhat.
We don't have to later transform the warning to an error, keeping it as a warning can be annoying enough to force people to change their code (or ALT-ENTER + CTRL+1 ont it).
Yes, we can make this decision later.
Legacy switches are those whose operand type is one of the "classic" types and all labels are constant labels or "default". For a switch that is deliberately non-exhaustive, all the user has to do to capture this (and shut up the compiler) is: default: break; "default:" should be enough no ?
Yes, probably.
which is not very intrusive, and arguably makes the code more readable anyway. Users will see a speed bump when upgrading to pattern switches (clippy will tell them "I see you're writing a pattern switch, don't forget to end it with default:break") which presumably they will quickly internalize. (How's that for teaching an old dog new tricks?) I think we should tackle "default" not being at the end the same way.
I'd like that; pushing total patterns to the end is pretty helpful. We tried that once, and ran into trouble, though; there were cases we couldn't completely express with that IIRC. With the latest formulation of `case null, default`, I think the trouble we ran into before goes away, but we might have new trouble doing so.