]>
git.proxmox.com Git - rustc.git/blob - src/test/ui/polymorphization/const_parameters/closures.rs
2 // compile-flags:-Zpolymorphize=on
3 #![feature(generic_const_exprs, rustc_attrs)]
4 //~^ WARN the feature `generic_const_exprs` is incomplete
6 // This test checks that the polymorphization analysis correctly detects unused const
7 // parameters in closures.
9 // Function doesn't have any generic parameters to be unused.
10 #[rustc_polymorphize_error]
11 pub fn no_parameters() {
15 // Function has an unused generic parameter in parent and closure.
16 #[rustc_polymorphize_error]
17 pub fn unused
<const T
: usize>() -> usize {
18 //~^ ERROR item has unused generic parameters
19 let add_one
= |x
: usize| x
+ 1;
20 //~^ ERROR item has unused generic parameters
24 // Function has an unused generic parameter in closure, but not in parent.
25 #[rustc_polymorphize_error]
26 pub fn used_parent
<const T
: usize>() -> usize {
28 let add_one
= |x
: usize| x
+ 1;
29 //~^ ERROR item has unused generic parameters
33 // Function uses generic parameter in value of a binding in closure.
34 #[rustc_polymorphize_error]
35 pub fn used_binding
<const T
: usize>() -> usize {
44 // Closure uses a value as an upvar, which used the generic parameter.
45 #[rustc_polymorphize_error]
46 pub fn unused_upvar
<const T
: usize>() -> usize {
49 //~^ ERROR item has unused generic parameters
53 // Closure uses generic parameter in substitutions to another function.
54 #[rustc_polymorphize_error]
55 pub fn used_substs
<const T
: usize>() -> usize {
56 let x
= || unused
::<T
>();
62 let _
= unused
::<1>();
63 let _
= used_parent
::<1>();
64 let _
= used_binding
::<1>();
65 let _
= unused_upvar
::<1>();
66 let _
= used_substs
::<1>();