Creating the patch was the easy part, if I wanted to make a merge request it would take at least double the time to make test cases for it lol
I'm tempted to ask "what can we do to help?" but since the patch took you 15 minutes it would probably take more than 30 for you to explain the additional detail :-)
But aside from that, I'm not happy with it, because it's a bit weird to have this for if but not for other statements. What about case?
That's a possibility I've raised in the past, but I'd make two comments.
First, the if-then-else expression was in ALGOL-60 and, via C, is in most of its derivatives. There is no general acceptance of an if-case-else expression, although I suspect that aspects of it overlap with some of the tuple handling that I believe Sverah has looked at.
Second, Pascal's case statement does not have a mandatory else/otherwise part, but a case expression would have to have one.
Third, if <expression> then <statement-or-expression1> else <statement-or-expression2> associates a boolean true (variously described as either <expression> evaluating to 1 or to non-zero) with <statement-or-expression1>. However, one would reasonably expect a case-else expression to evaluate from zero upwards, which immediately gets conceptually messy. (Detail: I've tackled this in the scripting stuff that runs my business, and ended up defining distinct expressions to handle the two variants).
OK, that's three. Sorry. If I had to rate them, I'd say that they're already in order of importance.
MarkMLl