about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorLeSeulArtichaut <leseulartichaut@gmail.com>2021-05-15 15:26:28 +0200
committerLeSeulArtichaut <leseulartichaut@gmail.com>2021-05-21 18:29:51 +0200
commit592fecbafb9c2fe7f793bdb0529fcb25032bda6e (patch)
tree06f8e73374deda6bc0e003e22cda0ab9ca0e9dd5 /src/test/ui
parentd7787bbaeffefc4c89910b1aac2cd370c2c27955 (diff)
downloadrust-592fecbafb9c2fe7f793bdb0529fcb25032bda6e.tar.gz
rust-592fecbafb9c2fe7f793bdb0529fcb25032bda6e.zip
Check for initialization of layout-restricted types
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/unsafe/ranged_ints.mir.stderr (renamed from src/test/ui/unsafe/ranged_ints.stderr)2
-rw-r--r--src/test/ui/unsafe/ranged_ints.rs3
-rw-r--r--src/test/ui/unsafe/ranged_ints.thir.stderr11
-rw-r--r--src/test/ui/unsafe/ranged_ints_const.mir.stderr (renamed from src/test/ui/unsafe/ranged_ints_const.stderr)2
-rw-r--r--src/test/ui/unsafe/ranged_ints_const.rs3
-rw-r--r--src/test/ui/unsafe/ranged_ints_const.thir.stderr11
-rw-r--r--src/test/ui/unsafe/ranged_ints_macro.rs3
7 files changed, 33 insertions, 2 deletions
diff --git a/src/test/ui/unsafe/ranged_ints.stderr b/src/test/ui/unsafe/ranged_ints.mir.stderr
index 4e43df495c0..f9ef7834e1e 100644
--- a/src/test/ui/unsafe/ranged_ints.stderr
+++ b/src/test/ui/unsafe/ranged_ints.mir.stderr
@@ -1,5 +1,5 @@
 error[E0133]: initializing type with `rustc_layout_scalar_valid_range` attr is unsafe and requires unsafe function or block
-  --> $DIR/ranged_ints.rs:7:14
+  --> $DIR/ranged_ints.rs:10:14
    |
 LL |     let _x = NonZero(0);
    |              ^^^^^^^^^^ initializing type with `rustc_layout_scalar_valid_range` attr
diff --git a/src/test/ui/unsafe/ranged_ints.rs b/src/test/ui/unsafe/ranged_ints.rs
index 0fa2da917e9..05efe87ba6e 100644
--- a/src/test/ui/unsafe/ranged_ints.rs
+++ b/src/test/ui/unsafe/ranged_ints.rs
@@ -1,3 +1,6 @@
+// revisions: mir thir
+// [thir]compile-flags: -Z thir-unsafeck
+
 #![feature(rustc_attrs)]
 
 #[rustc_layout_scalar_valid_range_start(1)]
diff --git a/src/test/ui/unsafe/ranged_ints.thir.stderr b/src/test/ui/unsafe/ranged_ints.thir.stderr
new file mode 100644
index 00000000000..f9ef7834e1e
--- /dev/null
+++ b/src/test/ui/unsafe/ranged_ints.thir.stderr
@@ -0,0 +1,11 @@
+error[E0133]: initializing type with `rustc_layout_scalar_valid_range` attr is unsafe and requires unsafe function or block
+  --> $DIR/ranged_ints.rs:10:14
+   |
+LL |     let _x = NonZero(0);
+   |              ^^^^^^^^^^ initializing type with `rustc_layout_scalar_valid_range` attr
+   |
+   = note: initializing a layout restricted type's field with a value outside the valid range is undefined behavior
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0133`.
diff --git a/src/test/ui/unsafe/ranged_ints_const.stderr b/src/test/ui/unsafe/ranged_ints_const.mir.stderr
index 584ad40a92b..33d134c7ce5 100644
--- a/src/test/ui/unsafe/ranged_ints_const.stderr
+++ b/src/test/ui/unsafe/ranged_ints_const.mir.stderr
@@ -1,5 +1,5 @@
 error[E0133]: initializing type with `rustc_layout_scalar_valid_range` attr is unsafe and requires unsafe function or block
-  --> $DIR/ranged_ints_const.rs:8:34
+  --> $DIR/ranged_ints_const.rs:11:34
    |
 LL | const fn foo() -> NonZero<u32> { NonZero(0) }
    |                                  ^^^^^^^^^^ initializing type with `rustc_layout_scalar_valid_range` attr
diff --git a/src/test/ui/unsafe/ranged_ints_const.rs b/src/test/ui/unsafe/ranged_ints_const.rs
index 8477772867e..472b0968150 100644
--- a/src/test/ui/unsafe/ranged_ints_const.rs
+++ b/src/test/ui/unsafe/ranged_ints_const.rs
@@ -1,3 +1,6 @@
+// revisions: mir thir
+// [thir]compile-flags: -Z thir-unsafeck
+
 #![feature(rustc_attrs)]
 
 #[rustc_layout_scalar_valid_range_start(1)]
diff --git a/src/test/ui/unsafe/ranged_ints_const.thir.stderr b/src/test/ui/unsafe/ranged_ints_const.thir.stderr
new file mode 100644
index 00000000000..33d134c7ce5
--- /dev/null
+++ b/src/test/ui/unsafe/ranged_ints_const.thir.stderr
@@ -0,0 +1,11 @@
+error[E0133]: initializing type with `rustc_layout_scalar_valid_range` attr is unsafe and requires unsafe function or block
+  --> $DIR/ranged_ints_const.rs:11:34
+   |
+LL | const fn foo() -> NonZero<u32> { NonZero(0) }
+   |                                  ^^^^^^^^^^ initializing type with `rustc_layout_scalar_valid_range` attr
+   |
+   = note: initializing a layout restricted type's field with a value outside the valid range is undefined behavior
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0133`.
diff --git a/src/test/ui/unsafe/ranged_ints_macro.rs b/src/test/ui/unsafe/ranged_ints_macro.rs
index 9192ecfe196..8293d029951 100644
--- a/src/test/ui/unsafe/ranged_ints_macro.rs
+++ b/src/test/ui/unsafe/ranged_ints_macro.rs
@@ -1,4 +1,7 @@
 // build-pass
+// revisions: mir thir
+// [thir]compile-flags: -Z thir-unsafeck
+
 #![feature(rustc_attrs)]
 
 macro_rules! apply {