The return statement never returns to the next statement, so it kinda diverges. Also the following is valid rust:
fn main() {
let _: Option<u8> = return;
}
My guess is this is also #1508
No, even with #1508 fixed the type of the whole return statement will still be !. Actually I think this is working as intended.