diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index 317c49c7d3543..bfefd9adbfe8f 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -226,7 +226,7 @@ impl<'a> StringReader<'a> { loop { idx = match string[idx..].find('\r') { None => break, - Some(it) => it + 1 + Some(it) => idx + it + 1 }; if string[idx..].chars().next() != Some('\n') { self.err_span_(start + BytePos(idx as u32 - 1), diff --git a/src/test/ui/parser/several-carriage-returns-in-doc-comment.rs b/src/test/ui/parser/several-carriage-returns-in-doc-comment.rs new file mode 100644 index 0000000000000..ee14c55d292a7 --- /dev/null +++ b/src/test/ui/parser/several-carriage-returns-in-doc-comment.rs @@ -0,0 +1,10 @@ +// Issue #62863 +// ignore-tidy-cr + +// Note: if you see ^M in this file, that's how your editor renders literal `\r` + +/// This do c comment contains three isolated `\r` symbols +//~^ ERROR bare CR not allowed in doc-comment +//~| ERROR bare CR not allowed in doc-comment +//~| ERROR bare CR not allowed in doc-comment +fn main() {} diff --git a/src/test/ui/parser/several-carriage-returns-in-doc-comment.stderr b/src/test/ui/parser/several-carriage-returns-in-doc-comment.stderr new file mode 100644 index 0000000000000..07066fc22e6cd --- /dev/null +++ b/src/test/ui/parser/several-carriage-returns-in-doc-comment.stderr @@ -0,0 +1,20 @@ +error: bare CR not allowed in doc-comment + --> $DIR/several-carriage-returns-in-doc-comment.rs:6:12 + | +LL | /// This do c comment contains three isolated `\r` symbols + | ^ + +error: bare CR not allowed in doc-comment + --> $DIR/several-carriage-returns-in-doc-comment.rs:6:32 + | +LL | /// This do c comment contains three isolated `\r` symbols + | ^ + +error: bare CR not allowed in doc-comment + --> $DIR/several-carriage-returns-in-doc-comment.rs:6:52 + | +LL | /// This do c comment contains three isolated `\r` symbols + | ^ + +error: aborting due to 3 previous errors +