]>
Commit | Line | Data |
---|---|---|
3dfed10e XL |
1 | // build-fail |
2 | // compile-flags:-Zpolymorphize=on | |
94222f64 XL |
3 | #![feature(generic_const_exprs, rustc_attrs)] |
4 | //~^ WARN the feature `generic_const_exprs` is incomplete | |
3dfed10e XL |
5 | |
6 | // This test checks that the polymorphization analysis correctly detects unused const | |
7 | // parameters in functions. | |
8 | ||
9 | // Function doesn't have any generic parameters to be unused. | |
10 | #[rustc_polymorphize_error] | |
11 | pub fn no_parameters() {} | |
12 | ||
13 | // Function has an unused generic parameter. | |
14 | #[rustc_polymorphize_error] | |
15 | pub fn unused<const T: usize>() { | |
16 | //~^ ERROR item has unused generic parameters | |
17 | } | |
18 | ||
19 | // Function uses generic parameter in value of a binding. | |
20 | #[rustc_polymorphize_error] | |
21 | pub fn used_binding<const T: usize>() -> usize { | |
22 | let x: usize = T; | |
23 | x | |
24 | } | |
25 | ||
26 | // Function uses generic parameter in substitutions to another function. | |
27 | #[rustc_polymorphize_error] | |
28 | pub fn used_substs<const T: usize>() { | |
29 | unused::<T>() | |
30 | } | |
31 | ||
32 | fn main() { | |
33 | no_parameters(); | |
34 | unused::<1>(); | |
35 | used_binding::<1>(); | |
36 | used_substs::<1>(); | |
37 | } |