Less temporary variables in desugaring

No, it isn't. `If`s are not yet expressions in the first commit, so should always be extracted completely.