2024-09-05 06:02:26 -05:00
|
|
|
error[E0308]: mismatched types
|
|
|
|
--> $DIR/never-place-isnt-diverging.rs:4:5
|
|
|
|
|
|
|
|
|
LL | fn make_up_a_value<T>() -> 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 `()`
|
|
|
|
|
2024-09-06 09:19:07 -05:00
|
|
|
error[E0308]: mismatched types
|
|
|
|
--> $DIR/never-place-isnt-diverging.rs:17:9
|
|
|
|
|
|
|
|
|
LL | fn make_up_a_pointer<T>() -> *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
|
2024-09-05 06:02:26 -05:00
|
|
|
|
|
|
|
For more information about this error, try `rustc --explain E0308`.
|