Add regression test for integral pointers in zst str slice fat pointers

This commit is contained in:
Oliver Scherer 2018-11-13 14:54:00 +01:00
parent df1ed0c2a6
commit 20dee47a66
2 changed files with 26 additions and 0 deletions

View File

@ -0,0 +1,3 @@
const FOO: &str = unsafe { &*(1_usize as *const [u8; 0] as *const [u8] as *const [str]) };
fn main() {}

View File

@ -0,0 +1,23 @@
error[E0308]: mismatched types
--> $DIR/int_ptr_for_zst_slices.rs:1:28
|
LL | const FOO: &str = unsafe { &*(1_usize as *const [u8; 0] as *const [u8] as *const [str]) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected str, found slice
|
= note: expected type `&'static str`
found type `&[str]`
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> $DIR/int_ptr_for_zst_slices.rs:1:75
|
LL | const FOO: &str = unsafe { &*(1_usize as *const [u8; 0] as *const [u8] as *const [str]) };
| ^^^^^^^^^^^^ doesn't have a size known at compile-time
|
= help: the trait `std::marker::Sized` is not implemented for `str`
= note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
= note: slice and array elements must have `Sized` type
error: aborting due to 2 previous errors
Some errors occurred: E0277, E0308.
For more information about an error, try `rustc --explain E0277`.