diff options
| author | bors <bors@rust-lang.org> | 2022-10-12 17:48:31 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-10-12 17:48:31 +0000 |
| commit | c0983a9aac889d16722a12602ac678051e62c3fb (patch) | |
| tree | 69917ea3c0bba48597bde38e8736912d184be91a /compiler/rustc_parse/src | |
| parent | 538f118da1409759ba198acc0ff62070bc6d2dce (diff) | |
| parent | f2c48105ce6f0889c18648160f8f0f03b69bc4a4 (diff) | |
| download | rust-c0983a9aac889d16722a12602ac678051e62c3fb.tar.gz rust-c0983a9aac889d16722a12602ac678051e62c3fb.zip | |
Auto merge of #102975 - Dylan-DPC:rollup-vzuwsh2, r=Dylan-DPC
Rollup of 7 pull requests Successful merges: - #102623 (translation: eager translation) - #102719 (Enforce alphabetical sorting with tidy) - #102830 (Unify `tcx.constness` query and param env constness checks) - #102883 (Fix stabilization of `feature(half_open_range_patterns)`) - #102927 (Fix `let` keyword removal suggestion in structs) - #102936 (rustdoc: remove unused CSS `nav.sum`) - #102940 (Update books) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_parse/src')
| -rw-r--r-- | compiler/rustc_parse/src/parser/attr_wrapper.rs | 3 | ||||
| -rw-r--r-- | compiler/rustc_parse/src/parser/item.rs | 17 |
2 files changed, 13 insertions, 7 deletions
diff --git a/compiler/rustc_parse/src/parser/attr_wrapper.rs b/compiler/rustc_parse/src/parser/attr_wrapper.rs index 0dc05475ce9..81c051b8f35 100644 --- a/compiler/rustc_parse/src/parser/attr_wrapper.rs +++ b/compiler/rustc_parse/src/parser/attr_wrapper.rs @@ -459,7 +459,8 @@ fn make_token_stream( mod size_asserts { use super::*; use rustc_data_structures::static_assert_size; - // These are in alphabetical order, which is easy to maintain. + // tidy-alphabetical-start static_assert_size!(AttrWrapper, 16); static_assert_size!(LazyAttrTokenStreamImpl, 144); + // tidy-alphabetical-end } diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs index e82044a89c4..ebcbc75ba32 100644 --- a/compiler/rustc_parse/src/parser/item.rs +++ b/compiler/rustc_parse/src/parser/item.rs @@ -1789,20 +1789,25 @@ impl<'a> Parser<'a> { } } else { let mut err = self.expected_ident_found(); - if let Some((ident, _)) = self.token.ident() && ident.as_str() == "let" { - self.bump(); // `let` - let span = self.prev_token.span.until(self.token.span); + if self.eat_keyword_noexpect(kw::Let) + && let removal_span = self.prev_token.span.until(self.token.span) + && let Ok(ident) = self.parse_ident_common(false) + // Cancel this error, we don't need it. + .map_err(|err| err.cancel()) + && self.token.kind == TokenKind::Colon + { err.span_suggestion( - span, - "remove the let, the `let` keyword is not allowed in struct field definitions", + removal_span, + "remove this `let` keyword", String::new(), Applicability::MachineApplicable, ); err.note("the `let` keyword is not allowed in `struct` fields"); err.note("see <https://doc.rust-lang.org/book/ch05-01-defining-structs.html> for more information"); err.emit(); - self.bump(); return Ok(ident); + } else { + self.restore_snapshot(snapshot); } err }; |
