diff options
| author | Aleksey Kladov <aleksey.kladov@gmail.com> | 2015-09-07 20:08:57 +0300 |
|---|---|---|
| committer | Aleksey Kladov <aleksey.kladov@gmail.com> | 2015-09-07 20:08:57 +0300 |
| commit | c8da5697e0721641856c8e38b666a9798e9f761d (patch) | |
| tree | 071db8b0772bc89f0a55083460bde5d59d193eea /src/libsyntax/parse | |
| parent | 0762f58c1143b4ff0ae5d0cdda9cdd8249512e77 (diff) | |
| download | rust-c8da5697e0721641856c8e38b666a9798e9f761d.tar.gz rust-c8da5697e0721641856c8e38b666a9798e9f761d.zip | |
libsyntax: remove dead code from parser.rs
Both `parse_tuple_struct_body` and `parse_item_struct` handled the case of unit like struct. The redundancy is removed, `parse_tuple_struct_body` now handles only real tuple structs.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 59 |
1 files changed, 24 insertions, 35 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 0772d124db8..b13522af82d 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4769,43 +4769,32 @@ impl<'a> Parser<'a> { generics: &mut ast::Generics) -> PResult<Vec<StructField>> { // This is the case where we find `struct Foo<T>(T) where T: Copy;` - if self.check(&token::OpenDelim(token::Paren)) { - let fields = try!(self.parse_unspanned_seq( - &token::OpenDelim(token::Paren), - &token::CloseDelim(token::Paren), - seq_sep_trailing_allowed(token::Comma), - |p| { - let attrs = p.parse_outer_attributes(); - let lo = p.span.lo; - let struct_field_ = ast::StructField_ { - kind: UnnamedField(try!(p.parse_visibility())), - id: ast::DUMMY_NODE_ID, - ty: try!(p.parse_ty_sum()), - attrs: attrs, - }; - Ok(spanned(lo, p.span.hi, struct_field_)) - })); - - if fields.is_empty() { - return Err(self.fatal(&format!("unit-like struct definition should be \ - written as `struct {};`", - class_name))); - } + // Unit like structs are handled in parse_item_struct function + let fields = try!(self.parse_unspanned_seq( + &token::OpenDelim(token::Paren), + &token::CloseDelim(token::Paren), + seq_sep_trailing_allowed(token::Comma), + |p| { + let attrs = p.parse_outer_attributes(); + let lo = p.span.lo; + let struct_field_ = ast::StructField_ { + kind: UnnamedField(try!(p.parse_visibility())), + id: ast::DUMMY_NODE_ID, + ty: try!(p.parse_ty_sum()), + attrs: attrs, + }; + Ok(spanned(lo, p.span.hi, struct_field_)) + })); - generics.where_clause = try!(self.parse_where_clause()); - try!(self.expect(&token::Semi)); - Ok(fields) - // This is the case where we just see struct Foo<T> where T: Copy; - } else if self.token.is_keyword(keywords::Where) { - generics.where_clause = try!(self.parse_where_clause()); - try!(self.expect(&token::Semi)); - Ok(Vec::new()) - // This case is where we see: `struct Foo<T>;` - } else { - let token_str = self.this_token_to_string(); - Err(self.fatal(&format!("expected `where`, `{}`, `(`, or `;` after struct \ - name, found `{}`", "{", token_str))) + if fields.is_empty() { + return Err(self.fatal(&format!("unit-like struct definition should be \ + written as `struct {};`", + class_name))); } + + generics.where_clause = try!(self.parse_where_clause()); + try!(self.expect(&token::Semi)); + Ok(fields) } /// Parse a structure field declaration |
