diff --git a/crates/parser/src/grammar/patterns.rs b/crates/parser/src/grammar/patterns.rs index fed5cca512..81e2051abb 100644 --- a/crates/parser/src/grammar/patterns.rs +++ b/crates/parser/src/grammar/patterns.rs @@ -17,7 +17,7 @@ pub(crate) fn pattern(p: &mut Parser) { pattern_r(p, PAT_RECOVERY_SET); } -/// Parses a pattern list separated by pipes `|` +/// Parses a pattern list separated by pipes `|`. pub(super) fn pattern_top(p: &mut Parser) { pattern_top_r(p, PAT_RECOVERY_SET) } @@ -27,14 +27,15 @@ pub(crate) fn pattern_single(p: &mut Parser) { } /// Parses a pattern list separated by pipes `|` -/// using the given `recovery_set` +/// using the given `recovery_set`. pub(super) fn pattern_top_r(p: &mut Parser, recovery_set: TokenSet) { p.eat(T![|]); pattern_r(p, recovery_set); } /// Parses a pattern list separated by pipes `|`, with no leading `|`,using the -/// given `recovery_set` +/// given `recovery_set`. + // test or_pattern // fn main() { // match () { diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs index d9226d0681..ae07190f86 100644 --- a/crates/sourcegen/src/lib.rs +++ b/crates/sourcegen/src/lib.rs @@ -71,25 +71,25 @@ impl CommentBlock { pub fn extract_untagged(text: &str) -> Vec { let mut res = Vec::new(); - let prefix = "// "; let lines = text.lines().map(str::trim_start); let dummy_block = CommentBlock { id: String::new(), line: 0, contents: Vec::new() }; let mut block = dummy_block.clone(); for (line_num, line) in lines.enumerate() { - if line == "//" { - block.contents.push(String::new()); - continue; - } - - let is_comment = line.starts_with(prefix); - if is_comment { - block.contents.push(line[prefix.len()..].to_string()); - } else { - if !block.contents.is_empty() { - res.push(mem::replace(&mut block, dummy_block.clone())); + match line.strip_prefix("//") { + Some(mut contents) => { + if let Some(' ') = contents.chars().next() { + contents = &contents[1..]; + } + block.contents.push(contents.to_string()); + } + None => { + if !block.contents.is_empty() { + let block = mem::replace(&mut block, dummy_block.clone()); + res.push(block); + } + block.line = line_num + 2; } - block.line = line_num + 2; } } if !block.contents.is_empty() {