error[E0308]: mismatched types --> $DIR/never-place-isnt-diverging.rs:4:5 | LL | fn make_up_a_value() -> T { | - expected this type parameter LL | / unsafe { LL | | LL | | let x: *const ! = 0 as _; LL | | &raw const *x; LL | | // Since `*x` is `!`, HIR typeck used to think that it diverges LL | | // and allowed the block to coerce to any value, leading to UB. LL | | } | |_____^ expected type parameter `T`, found `()` | = note: expected type parameter `T` found unit type `()` error[E0308]: mismatched types --> $DIR/never-place-isnt-diverging.rs:17:9 | LL | fn make_up_a_pointer() -> *const T { | - -------- expected `*const T` because of return type | | | expected this type parameter ... LL | &raw const *x | ^^^^^^^^^^^^^ expected `*const T`, found `*const !` | = note: expected raw pointer `*const T` found raw pointer `*const !` error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`.