]> git.lizzy.rs Git - rust.git/blob - src/test/ui/polymorphization/unsized_cast.rs
Rollup merge of #99067 - est31:to_owned_link, r=Dylan-DPC
[rust.git] / src / test / ui / polymorphization / unsized_cast.rs
1 // build-fail
2 // compile-flags:-Zpolymorphize=on
3 #![feature(fn_traits, rustc_attrs, unboxed_closures)]
4
5 // This test checks that the polymorphization analysis considers a closure
6 // as using all generic parameters if it does an unsizing cast.
7
8 #[rustc_polymorphize_error]
9 fn foo<T: Default>() {
10     let _: T = Default::default();
11     (|| Box::new(|| {}) as Box<dyn Fn()>)();
12     //~^ ERROR item has unused generic parameters
13     //~^^ ERROR item has unused generic parameters
14 }
15
16 #[rustc_polymorphize_error]
17 fn foo2<T: Default>() {
18     let _: T = Default::default();
19     (|| {
20         //~^ ERROR item has unused generic parameters
21         let call: extern "rust-call" fn(_, _) = Fn::call;
22         call(&|| {}, ());
23         //~^ ERROR item has unused generic parameters
24     })();
25 }
26
27 fn main() {
28     foo::<u32>();
29     foo2::<u32>();
30 }