Simplify search for bare `\r` in doc comments

Outer `if` is the fast path -- it calls into hyperoptimized memchr.

The inner loop is just the simplest code possible -- it doesn't
generated the tightest code, but that shouldn't matter if we are going
to error anyhow.
This commit is contained in:
Aleksey Kladov 2020-08-17 21:52:49 +02:00
parent 39197e673e
commit ccbe94bf77
1 changed files with 11 additions and 14 deletions

View File

@ -323,20 +323,17 @@ impl<'a> StringReader<'a> {
comment_kind: CommentKind,
doc_style: DocStyle,
) -> TokenKind {
let mut idx = 0;
loop {
idx = match content[idx..].find('\r') {
None => break,
Some(it) => idx + it + 1,
};
self.err_span_(
content_start + BytePos(idx as u32 - 1),
content_start + BytePos(idx as u32),
match comment_kind {
CommentKind::Line => "bare CR not allowed in doc-comment",
CommentKind::Block => "bare CR not allowed in block doc-comment",
},
);
if content.contains('\r') {
for (idx, _) in content.char_indices().filter(|&(_, c)| c == '\r') {
self.err_span_(
content_start + BytePos(idx as u32),
content_start + BytePos(idx as u32 + 1),
match comment_kind {
CommentKind::Line => "bare CR not allowed in doc-comment",
CommentKind::Block => "bare CR not allowed in block doc-comment",
},
);
}
}
let attr_style = match doc_style {