1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  | 
//! Checks trailing commas are accepted in various places:
//! - Generic parameters in function and struct definitions.
//! - Function and method arguments.
//! - Tuple and array literal expressions.
//! - Tuple and array destructuring patterns, including those with `..`.
//! - Enum variant declarations.
//! - Attributes.
//@ run-pass
fn f<T,>(_: T,) {}
struct Foo<T,>(#[allow(dead_code)] T);
struct Bar;
impl Bar {
    fn f(_: isize,) {}
    fn g(self, _: isize,) {}
    fn h(self,) {}
}
enum Baz {
    Qux(#[allow(dead_code)] isize,),
}
#[allow(unused,)]
pub fn main() {
    f::<isize,>(0,);
    let (_, _,) = (1, 1,);
    let [_, _,] = [1, 1,];
    let [_, _, .., _,] = [1, 1, 1, 1,];
    let [_, _, _, ..,] = [1, 1, 1, 1,];
    let x: Foo<isize,> = Foo::<isize,>(1);
    Bar::f(0,);
    Bar.g(0,);
    Bar.h();
    let x = Baz::Qux(1,);
}
 
  |