diff options
Diffstat (limited to 'tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs')
-rw-r--r-- | tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs b/tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs new file mode 100644 index 000000000..ac1cfd62a --- /dev/null +++ b/tests/ui/unsafe/issue-45107-unnecessary-unsafe-in-closure.rs @@ -0,0 +1,28 @@ +// revisions: mir thir +// [thir]compile-flags: -Zthir-unsafeck + +#[deny(unused_unsafe)] +fn main() { + let mut v = Vec::<i32>::with_capacity(24); + + unsafe { + let f = |v: &mut Vec<_>| { + unsafe { //~ ERROR unnecessary `unsafe` + v.set_len(24); + |w: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe` + w.set_len(32); + } }; + } + |x: &mut Vec<u32>| { unsafe { //~ ERROR unnecessary `unsafe` + x.set_len(40); + } }; + }; + + v.set_len(0); + f(&mut v); + } + + |y: &mut Vec<u32>| { unsafe { + y.set_len(48); + } }; +} |