diff options
| author | Ralf Jung <post@ralfj.de> | 2020-05-25 11:15:38 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2020-05-25 11:15:38 +0200 |
| commit | 061773fd2b7fd40ba7c368de50878539d30f7bb1 (patch) | |
| tree | b485b3558af1609c388e7c55d0b96e50f9ffbeb3 | |
| parent | c79535eab9500b87ab62f9e077db3953aa06b486 (diff) | |
| download | rust-061773fd2b7fd40ba7c368de50878539d30f7bb1.tar.gz rust-061773fd2b7fd40ba7c368de50878539d30f7bb1.zip | |
more test ref-to-packed tests
| -rw-r--r-- | src/test/ui/lint/packed_reference.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/lint/packed_reference.stderr | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/test/ui/lint/packed_reference.rs b/src/test/ui/lint/packed_reference.rs index c684fd62ee3..34942108468 100644 --- a/src/test/ui/lint/packed_reference.rs +++ b/src/test/ui/lint/packed_reference.rs @@ -12,6 +12,8 @@ fn main() { let good = Good { data: &0, data2: [&0, &0], aligned: [0; 32] }; let _ = &good.data; //~ ERROR reference to packed field + let _ = &good.data as *const _; //~ ERROR reference to packed field + let _: *const _ = &good.data; //~ ERROR reference to packed field let _ = &good.data2[0]; //~ ERROR reference to packed field let _ = &*good.data; // ok, behind a pointer let _ = &good.aligned; // ok, has align 1 diff --git a/src/test/ui/lint/packed_reference.stderr b/src/test/ui/lint/packed_reference.stderr index 428f4b66944..51158a84175 100644 --- a/src/test/ui/lint/packed_reference.stderr +++ b/src/test/ui/lint/packed_reference.stderr @@ -14,10 +14,26 @@ LL | #![deny(packed_references)] error: reference to packed field is not allowed --> $DIR/packed_reference.rs:15:17 | +LL | let _ = &good.data as *const _; + | ^^^^^^^^^^ + | + = note: fields of packed structs might be misaligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) + +error: reference to packed field is not allowed + --> $DIR/packed_reference.rs:16:27 + | +LL | let _: *const _ = &good.data; + | ^^^^^^^^^^ + | + = note: fields of packed structs might be misaligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) + +error: reference to packed field is not allowed + --> $DIR/packed_reference.rs:17:17 + | LL | let _ = &good.data2[0]; | ^^^^^^^^^^^^^^ | = note: fields of packed structs might be misaligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced) -error: aborting due to 2 previous errors +error: aborting due to 4 previous errors |
