Print a friendly error for the if-let construct without an else block

Fixes #19991.
What are you trying to detect by checking spans? This seems like a bad idea, since I don't see why the span for the whole expression and for the body should ever be the same (if they are at the moment, that might be a mistake).