| #![feature(never_type)] | |
| fn make_up_a_value<T>() -> T { | |
| unsafe { | |
| //~^ ERROR mismatched types | |
| let x: *const ! = 0 as _; | |
| &raw const *x; | |
| // Since `*x` is `!`, HIR typeck used to think that it diverges | |
| // and allowed the block to coerce to any value, leading to UB. | |
| } | |
| } | |
| fn make_up_a_pointer<T>() -> *const T { | |
| unsafe { | |
| let x: *const ! = 0 as _; | |
| &raw const *x | |
| //~^ ERROR mismatched types | |
| } | |
| } | |
| fn main() {} |