diff options
| author | Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> | 2022-10-26 21:09:28 +0200 |
|---|---|---|
| committer | Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> | 2022-10-26 21:09:28 +0200 |
| commit | 796114a5b0c66abbb2527257b8a38c4cda964a66 (patch) | |
| tree | 2707b1db03b050e4a14b63f095367d1af9f8c974 /compiler/rustc_parse/src/parser | |
| parent | ed142028641079918b95b539f0570e92469687fe (diff) | |
| download | rust-796114a5b0c66abbb2527257b8a38c4cda964a66.tar.gz rust-796114a5b0c66abbb2527257b8a38c4cda964a66.zip | |
Add documentation
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/mod.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 89f7ab930b1..4376e5832ef 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -158,7 +158,7 @@ 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>, - /// Whether the parser is allowed to recover and parse invalid code successfully (and emit a diagnostic as a side effect). + /// Whether the parser is allowed to do recovery. /// This is disabled when parsing macro arguments, see #103534 pub recovery: Recovery, } @@ -506,6 +506,13 @@ impl<'a> Parser<'a> { self } + /// Whether the parser is allowed to recover from broken code. + /// + /// If this returns false, recovering broken code into valid code (especially if this recovery does lookahead) + /// is not allowed. All recovery done by the parser must be gated behind this check. + /// + /// Technically, this only needs to restruct eager recovery by doing lookahead at more tokens. + /// But making the distinction is very subtle, and simply forbidding all recovery is a lot simpler to uphold. fn may_recover(&self) -> bool { matches!(self.recovery, Recovery::Allowed) } |
