diff options
Diffstat (limited to 'tests/ui/parser/syntactic-trailing-commas.rs')
| -rw-r--r-- | tests/ui/parser/syntactic-trailing-commas.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/ui/parser/syntactic-trailing-commas.rs b/tests/ui/parser/syntactic-trailing-commas.rs new file mode 100644 index 00000000000..ba688dffb3c --- /dev/null +++ b/tests/ui/parser/syntactic-trailing-commas.rs @@ -0,0 +1,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,); +} |
