File tree Expand file tree Collapse file tree 4 files changed +79
-2
lines changed Expand file tree Collapse file tree 4 files changed +79
-2
lines changed Original file line number Diff line number Diff line change @@ -2800,8 +2800,13 @@ impl Parser {
28002800 let mut etc = false ;
28012801 let mut first = true ;
28022802 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+ }
28052810
28062811 etc = * self . token == token:: UNDERSCORE || * self . token == token:: DOTDOT ;
28072812 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