diff options
| author | LeSeulArtichaut <leseulartichaut@gmail.com> | 2021-03-14 20:11:37 +0100 |
|---|---|---|
| committer | LeSeulArtichaut <leseulartichaut@gmail.com> | 2021-05-11 20:35:38 +0200 |
| commit | a95b342f0283dd213ef0248bc1a42e158dbef603 (patch) | |
| tree | 66bad2c99b5cdebc10bde77d0d6b8f38d8ecbe29 /src/test/ui/threads-sendsync | |
| parent | 29780f43e2067ee1c88e73fa76ef1cced28758d3 (diff) | |
Test `-Zthir-unsafeck` for unsafe function calls
Diffstat (limited to 'src/test/ui/threads-sendsync')
| -rw-r--r-- | src/test/ui/threads-sendsync/issue-43733.mir.stderr (renamed from src/test/ui/threads-sendsync/issue-43733.stderr) | 6 | ||||
| -rw-r--r-- | src/test/ui/threads-sendsync/issue-43733.rs | 19 | ||||
| -rw-r--r-- | src/test/ui/threads-sendsync/issue-43733.thir.stderr | 19 |
3 files changed, 32 insertions, 12 deletions
diff --git a/src/test/ui/threads-sendsync/issue-43733.stderr b/src/test/ui/threads-sendsync/issue-43733.mir.stderr index c7b12a395a2..0f4b5936dd0 100644 --- a/src/test/ui/threads-sendsync/issue-43733.stderr +++ b/src/test/ui/threads-sendsync/issue-43733.mir.stderr @@ -7,10 +7,10 @@ LL | __KEY.get(Default::default) = note: consult the function's documentation for information on how to avoid undefined behavior error[E0133]: call to unsafe function is unsafe and requires unsafe function or block - --> $DIR/issue-43733.rs:21:5 + --> $DIR/issue-43733.rs:20:42 | -LL | std::thread::LocalKey::new(__getit); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function +LL | static FOO: std::thread::LocalKey<Foo> = std::thread::LocalKey::new(__getit); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function | = note: consult the function's documentation for information on how to avoid undefined behavior diff --git a/src/test/ui/threads-sendsync/issue-43733.rs b/src/test/ui/threads-sendsync/issue-43733.rs index 4d81d0a5d20..5434140cd61 100644 --- a/src/test/ui/threads-sendsync/issue-43733.rs +++ b/src/test/ui/threads-sendsync/issue-43733.rs @@ -1,3 +1,6 @@ +// revisions: mir thir +// [thir]compile-flags: -Z thir-unsafeck + #![feature(thread_local)] #![feature(cfg_target_thread_local, thread_local_internals)] @@ -5,26 +8,24 @@ type Foo = std::cell::RefCell<String>; #[cfg(target_thread_local)] #[thread_local] -static __KEY: std::thread::__FastLocalKeyInner<Foo> = - std::thread::__FastLocalKeyInner::new(); +static __KEY: std::thread::__FastLocalKeyInner<Foo> = std::thread::__FastLocalKeyInner::new(); #[cfg(not(target_thread_local))] -static __KEY: std::thread::__OsLocalKeyInner<Foo> = - std::thread::__OsLocalKeyInner::new(); +static __KEY: std::thread::__OsLocalKeyInner<Foo> = std::thread::__OsLocalKeyInner::new(); -fn __getit() -> std::option::Option<&'static Foo> -{ +fn __getit() -> std::option::Option<&'static Foo> { __KEY.get(Default::default) //~ ERROR call to unsafe function is unsafe } -static FOO: std::thread::LocalKey<Foo> = - std::thread::LocalKey::new(__getit); +static FOO: std::thread::LocalKey<Foo> = std::thread::LocalKey::new(__getit); //~^ ERROR call to unsafe function is unsafe fn main() { FOO.with(|foo| println!("{}", foo.borrow())); std::thread::spawn(|| { FOO.with(|foo| *foo.borrow_mut() += "foo"); - }).join().unwrap(); + }) + .join() + .unwrap(); FOO.with(|foo| println!("{}", foo.borrow())); } diff --git a/src/test/ui/threads-sendsync/issue-43733.thir.stderr b/src/test/ui/threads-sendsync/issue-43733.thir.stderr new file mode 100644 index 00000000000..0f4b5936dd0 --- /dev/null +++ b/src/test/ui/threads-sendsync/issue-43733.thir.stderr @@ -0,0 +1,19 @@ +error[E0133]: call to unsafe function is unsafe and requires unsafe function or block + --> $DIR/issue-43733.rs:17:5 + | +LL | __KEY.get(Default::default) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function + | + = note: consult the function's documentation for information on how to avoid undefined behavior + +error[E0133]: call to unsafe function is unsafe and requires unsafe function or block + --> $DIR/issue-43733.rs:20:42 + | +LL | static FOO: std::thread::LocalKey<Foo> = std::thread::LocalKey::new(__getit); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function + | + = note: consult the function's documentation for information on how to avoid undefined behavior + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0133`. |
