diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-09-30 07:39:54 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-10-03 11:42:29 +1100 |
| commit | 9de9cf19d7da502e08b93c32d89aa9850e70a595 (patch) | |
| tree | cb3f1e7622ad812ea7a5713cca0b4e7a4afe8b41 /compiler/rustc_parse/src/parser/mod.rs | |
| parent | 40e4827fd2ad3b050bfaaf7450ed5e6a5407ff9d (diff) | |
| download | rust-9de9cf19d7da502e08b93c32d89aa9850e70a595.tar.gz rust-9de9cf19d7da502e08b93c32d89aa9850e70a595.zip | |
Add comments to `TokenCursor::desugar`.
It took me some time to work out what this code was doing.
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 2aebaf7c3af..b934e087608 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -302,7 +302,10 @@ impl TokenCursor { fn desugar(&mut self, attr_style: AttrStyle, data: Symbol, span: Span) -> (Token, Spacing) { // Searches for the occurrences of `"#*` and returns the minimum number of `#`s - // required to wrap the text. + // required to wrap the text. E.g. + // - `abc d` is wrapped as `r"abc d"` (num_of_hashes = 0) + // - `abc "d"` is wrapped as `r#"abc "d""#` (num_of_hashes = 1) + // - `abc "##d##"` is wrapped as `r###"abc "d""###` (num_of_hashes = 3) let mut num_of_hashes = 0; let mut count = 0; for ch in data.as_str().chars() { @@ -314,6 +317,7 @@ impl TokenCursor { num_of_hashes = cmp::max(num_of_hashes, count); } + // `/// foo` becomes `doc = r"foo". let delim_span = DelimSpan::from_single(span); let body = TokenTree::Delimited( delim_span, |
