]> git.lizzy.rs Git - rust.git/blob - tests/ui/mir/ssa-analysis-regression-50041.rs
Rollup merge of #103418 - Aaron1011:macro-semicolon-future-incompat, r=davidtwco
[rust.git] / tests / ui / mir / ssa-analysis-regression-50041.rs
1 // build-pass
2 // compile-flags: -Z mir-opt-level=4
3
4 #![crate_type = "lib"]
5 #![feature(lang_items)]
6 #![no_std]
7
8 struct NonNull<T: ?Sized>(*const T);
9
10 struct Unique<T: ?Sized>(NonNull<T>);
11
12 #[lang = "owned_box"]
13 pub struct Box<T: ?Sized>(Unique<T>);
14
15 impl<T: ?Sized> Drop for Box<T> {
16     fn drop(&mut self) {}
17 }
18
19 #[lang = "box_free"]
20 #[inline(always)]
21 unsafe fn box_free<T: ?Sized>(ptr: Unique<T>) {
22     dealloc(ptr.0.0)
23 }
24
25 #[inline(never)]
26 fn dealloc<T: ?Sized>(_: *const T) {}
27
28 pub struct Foo<T>(T);
29
30 pub fn foo(a: Option<Box<Foo<usize>>>) -> usize {
31     let f = match a {
32         None => Foo(0),
33         Some(vec) => *vec,
34     };
35     f.0
36 }