File tree 4 files changed +79
-2
lines changed
4 files changed +79
-2
lines changed Original file line number Diff line number Diff line change @@ -2800,8 +2800,13 @@ impl Parser {
2800
2800
let mut etc = false ;
2801
2801
let mut first = true ;
2802
2802
while * self . token != token:: RBRACE {
2803
- if first { first = false ; }
2804
- else { self . expect ( & token:: COMMA ) ; }
2803
+ if first {
2804
+ first = false ;
2805
+ } else {
2806
+ self . expect ( & token:: COMMA ) ;
2807
+ // accept trailing commas
2808
+ if * self . token == token:: RBRACE { break }
2809
+ }
2805
2810
2806
2811
etc = * self . token == token:: UNDERSCORE || * self . token == token:: DOTDOT ;
2807
2812
if * self . token == token:: UNDERSCORE {
Original file line number Diff line number Diff line change
1
+ // Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ struct A { foo : int }
12
+
13
+ fn a ( ) -> A { fail ! ( ) }
14
+
15
+ fn main ( ) {
16
+ let A { .., } = a ( ) ; //~ ERROR: expected `}`
17
+ }
18
+
Original file line number Diff line number Diff line change
1
+ // Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ struct A { foo : int }
12
+
13
+ fn a ( ) -> A { fail ! ( ) }
14
+
15
+ fn main ( ) {
16
+ let A { , } = a ( ) ; //~ ERROR: expected ident
17
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ struct A { foo : int }
12
+ struct B { a : int , b : int , c : int }
13
+
14
+ fn mka ( ) -> A { fail ! ( ) }
15
+ fn mkb ( ) -> B { fail ! ( ) }
16
+
17
+ fn test ( ) {
18
+ let A { foo, } = mka ( ) ;
19
+ let A {
20
+ foo,
21
+ } = mka ( ) ;
22
+
23
+ let B { a, b, c, } = mkb ( ) ;
24
+
25
+ match mka ( ) {
26
+ A { foo : _foo, } => { }
27
+ }
28
+
29
+ match Some ( mka ( ) ) {
30
+ Some ( A { foo : _foo, } ) => { }
31
+ None => { }
32
+ }
33
+ }
34
+
35
+ pub fn main ( ) {
36
+ if false { test ( ) }
37
+ }
You can’t perform that action at this time.
0 commit comments