From 647bf96b796a56e01557c14731719ab93f39063f Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 22 Jul 2019 12:59:18 +0300 Subject: [PATCH] fix lexing of comments with many \r closes #62863 --- src/libsyntax/parse/lexer/mod.rs | 2 +- ...several-carriage-returns-in-doc-comment.rs | 10 ++++++++++ ...ral-carriage-returns-in-doc-comment.stderr | 20 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/parser/several-carriage-returns-in-doc-comment.rs create mode 100644 src/test/ui/parser/several-carriage-returns-in-doc-comment.stderr 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 +