diff options
| author | Caio <c410.f3r@gmail.com> | 2022-06-25 08:08:38 -0300 |
|---|---|---|
| committer | Caio <c410.f3r@gmail.com> | 2022-06-25 08:08:38 -0300 |
| commit | 747586732b1bb21c1ef318428fe179a77db2d963 (patch) | |
| tree | 0ae478b8430db5bd2e5025e97e2e78427a5ec37f /compiler/rustc_parse/src/parser/mod.rs | |
| parent | e02d645110ae14f4a7f04d6bd5b05f2842488dda (diff) | |
| download | rust-747586732b1bb21c1ef318428fe179a77db2d963.tar.gz rust-747586732b1bb21c1ef318428fe179a77db2d963.zip | |
[rustc_parse] Forbid lets in certain places
Diffstat (limited to 'compiler/rustc_parse/src/parser/mod.rs')
| -rw-r--r-- | compiler/rustc_parse/src/parser/mod.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 6d6667717f0..acdf121522a 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -147,12 +147,15 @@ pub struct Parser<'a> { /// This allows us to recover when the user forget to add braces around /// multiple statements in the closure body. pub current_closure: Option<ClosureSpans>, + /// Used to track where `let`s are allowed. For example, `if true && let 1 = 1` is valid + /// but `[1, 2, 3][let _ = ()]` is not. + let_expr_allowed: bool, } // This type is used a lot, e.g. it's cloned when matching many declarative macro rules. Make sure // it doesn't unintentionally get bigger. #[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))] -rustc_data_structures::static_assert_size!(Parser<'_>, 328); +rustc_data_structures::static_assert_size!(Parser<'_>, 336); /// Stores span information about a closure. #[derive(Clone)] @@ -455,6 +458,7 @@ impl<'a> Parser<'a> { inner_attr_ranges: Default::default(), }, current_closure: None, + let_expr_allowed: false, }; // Make parser point to the first token. |
