diff --git a/src/test/ui/lint/packed_reference.rs b/src/test/ui/lint/packed_reference.rs index c684fd62ee34..349421084682 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 428f4b66944e..51158a84175d 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