diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-11-01 18:02:30 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-11-18 16:19:46 -0800 |
| commit | 35e6c0252422b178cc3b21f7f1510c80bcd064c8 (patch) | |
| tree | d4d861f5c53c260281728fdd11e6a8b6d6ed29bf /src/libsyntax/parse/parser.rs | |
| parent | 3d569df41de221ce5b0ffd385caaa9fd6d5fb2ff (diff) | |
| download | rust-35e6c0252422b178cc3b21f7f1510c80bcd064c8.tar.gz rust-35e6c0252422b178cc3b21f7f1510c80bcd064c8.zip | |
Use '..' as multi-field wildcard in enums and structs.
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index ad5da0b9289..ea861305d9f 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2755,7 +2755,12 @@ impl Parser { if first { first = false; } else { self.expect(&token::COMMA); } + etc = *self.token == token::UNDERSCORE || *self.token == token::DOTDOT; if *self.token == token::UNDERSCORE { + // FIXME #5830 activate after snapshot + // self.obsolete(*self.span, ObsoleteStructWildcard); + } + if etc { self.bump(); if *self.token != token::RBRACE { self.fatal( @@ -3016,9 +3021,19 @@ impl Parser { _ => false, } }; - if is_star { + let is_dotdot = do self.look_ahead(1) |t| { + match *t { + token::DOTDOT => true, + _ => false, + } + }; + if is_star | is_dotdot { // This is a "top constructor only" pat self.bump(); + if is_star { + // FIXME #5830 activate after snapshot + // self.obsolete(*self.span, ObsoleteEnumWildcard); + } self.bump(); self.expect(&token::RPAREN); pat = PatEnum(enum_path, None); |
