]> git.lizzy.rs Git - rust.git/commitdiff
rename lint
authorRalf Jung <post@ralfj.de>
Mon, 25 May 2020 13:32:46 +0000 (15:32 +0200)
committerRalf Jung <post@ralfj.de>
Mon, 25 May 2020 13:32:46 +0000 (15:32 +0200)
src/librustc_mir/transform/check_packed_ref.rs
src/librustc_session/lint/builtin.rs
src/test/ui/lint/packed_reference.rs [deleted file]
src/test/ui/lint/packed_reference.stderr [deleted file]
src/test/ui/lint/unaligned_references.rs [new file with mode: 0644]
src/test/ui/lint/unaligned_references.stderr [new file with mode: 0644]

index 9e07a4599f6869e40ba7be37174a7a9075711ff0..faad1a72327f49acd88a19c96f65b59ffa901068 100644 (file)
@@ -1,7 +1,7 @@
 use rustc_middle::mir::visit::{PlaceContext, Visitor};
 use rustc_middle::mir::*;
 use rustc_middle::ty::{self, TyCtxt};
-use rustc_session::lint::builtin::PACKED_REFERENCES;
+use rustc_session::lint::builtin::UNALIGNED_REFERENCES;
 
 use crate::transform::{MirPass, MirSource};
 use crate::util;
@@ -47,13 +47,13 @@ fn visit_place(&mut self, place: &Place<'tcx>, context: PlaceContext, _location:
                     .assert_crate_local()
                     .lint_root;
                 self.tcx.struct_span_lint_hir(
-                    PACKED_REFERENCES,
+                    UNALIGNED_REFERENCES,
                     lint_root,
                     source_info.span,
                     |lint| {
-                        lint.build(&format!("reference to packed field is not allowed",))
+                        lint.build(&format!("reference to packed field is unaligned",))
                             .note(
-                                "fields of packed structs might be misaligned, and creating \
+                                "fields of packed structs are not properly aligned, and creating \
                                 a misaligned reference is undefined behavior (even if that \
                                 reference is never dereferenced)",
                             )
index 0753e9e4b7325f478740c3b22285886d8756def3..4035417204867496ff95612d24a4130d5331e830 100644 (file)
 }
 
 declare_lint! {
-    pub PACKED_REFERENCES,
+    pub UNALIGNED_REFERENCES,
     Allow,
     "detects unaligned references to fields of packed structs",
 }
         INVALID_TYPE_PARAM_DEFAULT,
         CONST_ERR,
         RENAMED_AND_REMOVED_LINTS,
-        PACKED_REFERENCES,
+        UNALIGNED_REFERENCES,
         SAFE_PACKED_BORROWS,
         PATTERNS_IN_FNS_WITHOUT_BODY,
         MISSING_FRAGMENT_SPECIFIER,
diff --git a/src/test/ui/lint/packed_reference.rs b/src/test/ui/lint/packed_reference.rs
deleted file mode 100644 (file)
index 3494210..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#![deny(packed_references)]
-
-#[repr(packed)]
-pub struct Good {
-    data: &'static u32,
-    data2: [&'static u32; 2],
-    aligned: [u8; 32],
-}
-
-fn main() {
-    unsafe {
-        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
-        let _ = &good.aligned[2]; // ok, has align 1
-    }
-}
diff --git a/src/test/ui/lint/packed_reference.stderr b/src/test/ui/lint/packed_reference.stderr
deleted file mode 100644 (file)
index 51158a8..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-error: reference to packed field is not allowed
-  --> $DIR/packed_reference.rs:14:17
-   |
-LL |         let _ = &good.data;
-   |                 ^^^^^^^^^^
-   |
-note: the lint level is defined here
-  --> $DIR/packed_reference.rs:1:9
-   |
-LL | #![deny(packed_references)]
-   |         ^^^^^^^^^^^^^^^^^
-   = 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: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 4 previous errors
-
diff --git a/src/test/ui/lint/unaligned_references.rs b/src/test/ui/lint/unaligned_references.rs
new file mode 100644 (file)
index 0000000..1d9f4c3
--- /dev/null
@@ -0,0 +1,22 @@
+#![deny(unaligned_references)]
+
+#[repr(packed)]
+pub struct Good {
+    data: &'static u32,
+    data2: [&'static u32; 2],
+    aligned: [u8; 32],
+}
+
+fn main() {
+    unsafe {
+        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
+        let _ = &good.aligned[2]; // ok, has align 1
+    }
+}
diff --git a/src/test/ui/lint/unaligned_references.stderr b/src/test/ui/lint/unaligned_references.stderr
new file mode 100644 (file)
index 0000000..0c594cd
--- /dev/null
@@ -0,0 +1,39 @@
+error: reference to packed field is unaligned
+  --> $DIR/unaligned_references.rs:14:17
+   |
+LL |         let _ = &good.data;
+   |                 ^^^^^^^^^^
+   |
+note: the lint level is defined here
+  --> $DIR/unaligned_references.rs:1:9
+   |
+LL | #![deny(unaligned_references)]
+   |         ^^^^^^^^^^^^^^^^^^^^
+   = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+
+error: reference to packed field is unaligned
+  --> $DIR/unaligned_references.rs:15:17
+   |
+LL |         let _ = &good.data as *const _;
+   |                 ^^^^^^^^^^
+   |
+   = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+
+error: reference to packed field is unaligned
+  --> $DIR/unaligned_references.rs:16:27
+   |
+LL |         let _: *const _ = &good.data;
+   |                           ^^^^^^^^^^
+   |
+   = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+
+error: reference to packed field is unaligned
+  --> $DIR/unaligned_references.rs:17:17
+   |
+LL |         let _ = &good.data2[0];
+   |                 ^^^^^^^^^^^^^^
+   |
+   = note: fields of packed structs are not properly aligned, and creating a misaligned reference is undefined behavior (even if that reference is never dereferenced)
+
+error: aborting due to 4 previous errors
+