diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2014-11-10 21:54:42 +1100 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-11-13 13:43:00 +1100 |
| commit | e621e3216bfb074b03ddeb045dc467d9ec4641f8 (patch) | |
| tree | 06a041758876e30f0420f5e72992073c910d8d8f | |
| parent | ceff2ca1fc57d60fa3af2372d49a23055aa441bc (diff) | |
| download | rust-e621e3216bfb074b03ddeb045dc467d9ec4641f8.tar.gz rust-e621e3216bfb074b03ddeb045dc467d9ec4641f8.zip | |
Add error message specific to \<carriage return>.
This can crop-up with a misconfigured editor or an unexpected interaction between version control and certain operating systems. Closes #11669.
| -rw-r--r-- | src/libsyntax/parse/lexer/mod.rs | 7 | ||||
| -rw-r--r-- | src/test/compile-fail/.gitattributes | 1 | ||||
| -rw-r--r-- | src/test/compile-fail/trailing-carriage-return-in-string.rs | 23 |
3 files changed, 31 insertions, 0 deletions
diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index 35d56440b50..01a66243a96 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -806,6 +806,13 @@ impl<'a> StringReader<'a> { if ascii_only { "unknown byte escape" } else { "unknown character escape" }, c); + if e == '\r' { + let sp = codemap::mk_sp(escaped_pos, last_pos); + self.span_diagnostic.span_help( + sp, + "this is an isolated carriage return; consider checking \ + your editor and version control settings.") + } false } } diff --git a/src/test/compile-fail/.gitattributes b/src/test/compile-fail/.gitattributes new file mode 100644 index 00000000000..825f664bf9f --- /dev/null +++ b/src/test/compile-fail/.gitattributes @@ -0,0 +1 @@ +trailing-carriage-return-in-string.rs -text \ No newline at end of file diff --git a/src/test/compile-fail/trailing-carriage-return-in-string.rs b/src/test/compile-fail/trailing-carriage-return-in-string.rs new file mode 100644 index 00000000000..81098333261 --- /dev/null +++ b/src/test/compile-fail/trailing-carriage-return-in-string.rs @@ -0,0 +1,23 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-tidy-cr +// Issue #11669 + +fn main() { + // \r\n + let ok = "This is \ + a test"; + // \r only + let bad = "This is \ a test"; + //~^ ERROR unknown character escape: \r + //~^^ HELP this is an isolated carriage return + +} |
