Skip to content

Commit c8da569

Browse files
committed
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.
1 parent 0762f58 commit c8da569

File tree

1 file changed

+24
-35
lines changed

1 file changed

+24
-35
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4769,43 +4769,32 @@ impl<'a> Parser<'a> {
47694769
generics: &mut ast::Generics)
47704770
-> PResult<Vec<StructField>> {
47714771
// This is the case where we find `struct Foo<T>(T) where T: Copy;`
4772-
if self.check(&token::OpenDelim(token::Paren)) {
4773-
let fields = try!(self.parse_unspanned_seq(
4774-
&token::OpenDelim(token::Paren),
4775-
&token::CloseDelim(token::Paren),
4776-
seq_sep_trailing_allowed(token::Comma),
4777-
|p| {
4778-
let attrs = p.parse_outer_attributes();
4779-
let lo = p.span.lo;
4780-
let struct_field_ = ast::StructField_ {
4781-
kind: UnnamedField(try!(p.parse_visibility())),
4782-
id: ast::DUMMY_NODE_ID,
4783-
ty: try!(p.parse_ty_sum()),
4784-
attrs: attrs,
4785-
};
4786-
Ok(spanned(lo, p.span.hi, struct_field_))
4787-
}));
4788-
4789-
if fields.is_empty() {
4790-
return Err(self.fatal(&format!("unit-like struct definition should be \
4791-
written as `struct {};`",
4792-
class_name)));
4793-
}
4772+
// Unit like structs are handled in parse_item_struct function
4773+
let fields = try!(self.parse_unspanned_seq(
4774+
&token::OpenDelim(token::Paren),
4775+
&token::CloseDelim(token::Paren),
4776+
seq_sep_trailing_allowed(token::Comma),
4777+
|p| {
4778+
let attrs = p.parse_outer_attributes();
4779+
let lo = p.span.lo;
4780+
let struct_field_ = ast::StructField_ {
4781+
kind: UnnamedField(try!(p.parse_visibility())),
4782+
id: ast::DUMMY_NODE_ID,
4783+
ty: try!(p.parse_ty_sum()),
4784+
attrs: attrs,
4785+
};
4786+
Ok(spanned(lo, p.span.hi, struct_field_))
4787+
}));
47944788

4795-
generics.where_clause = try!(self.parse_where_clause());
4796-
try!(self.expect(&token::Semi));
4797-
Ok(fields)
4798-
// This is the case where we just see struct Foo<T> where T: Copy;
4799-
} else if self.token.is_keyword(keywords::Where) {
4800-
generics.where_clause = try!(self.parse_where_clause());
4801-
try!(self.expect(&token::Semi));
4802-
Ok(Vec::new())
4803-
// This case is where we see: `struct Foo<T>;`
4804-
} else {
4805-
let token_str = self.this_token_to_string();
4806-
Err(self.fatal(&format!("expected `where`, `{}`, `(`, or `;` after struct \
4807-
name, found `{}`", "{", token_str)))
4789+
if fields.is_empty() {
4790+
return Err(self.fatal(&format!("unit-like struct definition should be \
4791+
written as `struct {};`",
4792+
class_name)));
48084793
}
4794+
4795+
generics.where_clause = try!(self.parse_where_clause());
4796+
try!(self.expect(&token::Semi));
4797+
Ok(fields)
48094798
}
48104799

48114800
/// Parse a structure field declaration

0 commit comments

Comments
 (0)