1
1
// build-fail
2
- // compile-flags: -Zpolymorphize-errors
3
- #![ feature( const_generics) ]
2
+ #![ feature( const_generics, rustc_attrs) ]
4
3
//~^ WARN the feature `const_generics` is incomplete
5
4
6
5
// This test checks that the polymorphization analysis correctly detects unused const
7
6
// parameters in closures.
8
7
9
8
// Function doesn't have any generic parameters to be unused.
9
+ #[ rustc_polymorphize_error]
10
10
pub fn no_parameters ( ) {
11
11
let _ = || { } ;
12
12
}
13
13
14
14
// Function has an unused generic parameter in parent and closure.
15
+ #[ rustc_polymorphize_error]
15
16
pub fn unused < const T : usize > ( ) -> usize {
16
- //~^ ERROR item has unused generic parameters
17
+ //~^ ERROR item has unused generic parameters
17
18
let add_one = |x : usize | x + 1 ;
18
- //~^ ERROR item has unused generic parameters
19
+ //~^ ERROR item has unused generic parameters
19
20
add_one ( 3 )
20
21
}
21
22
22
23
// Function has an unused generic parameter in closure, but not in parent.
24
+ #[ rustc_polymorphize_error]
23
25
pub fn used_parent < const T : usize > ( ) -> usize {
24
26
let x: usize = T ;
25
27
let add_one = |x : usize | x + 1 ;
26
- //~^ ERROR item has unused generic parameters
28
+ //~^ ERROR item has unused generic parameters
27
29
x + add_one ( 3 )
28
30
}
29
31
30
32
// Function uses generic parameter in value of a binding in closure.
33
+ #[ rustc_polymorphize_error]
31
34
pub fn used_binding < const T : usize > ( ) -> usize {
32
35
let x = || {
33
36
let y: usize = T ;
@@ -38,14 +41,16 @@ pub fn used_binding<const T: usize>() -> usize {
38
41
}
39
42
40
43
// Closure uses a value as an upvar, which used the generic parameter.
44
+ #[ rustc_polymorphize_error]
41
45
pub fn unused_upvar < const T : usize > ( ) -> usize {
42
46
let x: usize = T ;
43
47
let y = || x;
44
- //~^ ERROR item has unused generic parameters
48
+ //~^ ERROR item has unused generic parameters
45
49
y ( )
46
50
}
47
51
48
52
// Closure uses generic parameter in substitutions to another function.
53
+ #[ rustc_polymorphize_error]
49
54
pub fn used_substs < const T : usize > ( ) -> usize {
50
55
let x = || unused :: < T > ( ) ;
51
56
x ( )
0 commit comments