]> git.lizzy.rs Git - rust.git/commitdiff
Added a help span which informs the user about the escaping of curly braces in a...
authorManuel Hoffmann <manuel@polythematik.de>
Mon, 13 Apr 2015 13:56:10 +0000 (15:56 +0200)
committerManuel Hoffmann <manuel@polythematik.de>
Mon, 13 Apr 2015 13:56:10 +0000 (15:56 +0200)
src/libsyntax/parse/lexer/mod.rs
src/test/parse-fail/wrong-escape-of-curly-braces.rs [new file with mode: 0644]

index 22b7d5c9f1d32301d8d32ceb7eb7fbeb3073d29e..f891318659a87e6a492ae6314da78ff1870f0904 100644 (file)
@@ -843,13 +843,19 @@ fn scan_char_or_byte(&mut self, start: BytePos, first_source_char: char,
                                     if ascii_only { "unknown byte escape" }
                                     else { "unknown character escape" },
                                     c);
+                                let sp = codemap::mk_sp(escaped_pos, last_pos);
                                 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")
                                 }
+                                if (e == '{' || e == '}') && !ascii_only {
+                                    self.span_diagnostic.span_help(
+                                        sp,
+                                        "if used in a formatting string, \
+                                        curly braces are escaped with `{{` and `}}`")
+                                }
                                 false
                             }
                         }
diff --git a/src/test/parse-fail/wrong-escape-of-curly-braces.rs b/src/test/parse-fail/wrong-escape-of-curly-braces.rs
new file mode 100644 (file)
index 0000000..d86bf72
--- /dev/null
@@ -0,0 +1,18 @@
+// Copyright 2015 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.
+
+fn f() {
+    let ok = "{{everything fine}}";
+    let bad = "\{it is wrong\}";
+    //~^  ERROR unknown character escape: {
+    //~^^  HELP if used in a formatting string, curly braces are escaped with `{{` and `}}`
+    //~^^^ ERROR unknown character escape: }
+    //~^^^^  HELP if used in a formatting string, curly braces are escaped with `{{` and `}}`
+}