diff options
| author | bors <bors@rust-lang.org> | 2014-11-16 18:27:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-11-16 18:27:10 +0000 |
| commit | aad75471fd327c0138f80aba46c650a7f9839d17 (patch) | |
| tree | cb6838bf3e5501b8568ab66a02ff99088517c23f /src/libsyntax/parse/parser.rs | |
| parent | 321488b6751e33ac9bc2d48a7e5d5c2a5ca5b615 (diff) | |
| parent | 579c65da1babbcfa5f3fd1cb5a1062acbe5b61eb (diff) | |
| download | rust-aad75471fd327c0138f80aba46c650a7f9839d17.tar.gz rust-aad75471fd327c0138f80aba46c650a7f9839d17.zip | |
auto merge of #18994 : sfackler/rust/struct-variants-pt2, r=jakub-
Struct variant field visibility is now inherited. Remove `pub` keywords from declarations. Closes #18641 [breaking-change] r? @alexcrichton
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 4f487a10e98..50e3483fb15 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4612,7 +4612,7 @@ impl<'a> Parser<'a> { is_tuple_like = false; fields = Vec::new(); while self.token != token::CloseDelim(token::Brace) { - fields.push(self.parse_struct_decl_field()); + fields.push(self.parse_struct_decl_field(true)); } if fields.len() == 0 { self.fatal(format!("unit-like struct definition should be \ @@ -4689,12 +4689,16 @@ impl<'a> Parser<'a> { } /// Parse an element of a struct definition - fn parse_struct_decl_field(&mut self) -> StructField { + fn parse_struct_decl_field(&mut self, allow_pub: bool) -> StructField { let attrs = self.parse_outer_attributes(); if self.eat_keyword(keywords::Pub) { - return self.parse_single_struct_field(Public, attrs); + if !allow_pub { + let span = self.last_span; + self.span_err(span, "`pub` is not allowed here"); + } + return self.parse_single_struct_field(Public, attrs); } return self.parse_single_struct_field(Inherited, attrs); @@ -5142,7 +5146,7 @@ impl<'a> Parser<'a> { fn parse_struct_def(&mut self) -> P<StructDef> { let mut fields: Vec<StructField> = Vec::new(); while self.token != token::CloseDelim(token::Brace) { - fields.push(self.parse_struct_decl_field()); + fields.push(self.parse_struct_decl_field(false)); } self.bump(); |
