about summary refs log tree commit diff
path: root/tests/ui/parser/raw
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/parser/raw')
-rw-r--r--tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs5
-rw-r--r--tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr9
-rw-r--r--tests/ui/parser/raw/raw-byte-string-eof.rs3
-rw-r--r--tests/ui/parser/raw/raw-byte-string-eof.stderr13
-rw-r--r--tests/ui/parser/raw/raw-byte-string-literals.rs7
-rw-r--r--tests/ui/parser/raw/raw-byte-string-literals.stderr20
-rw-r--r--tests/ui/parser/raw/raw-literal-keywords.rs25
-rw-r--r--tests/ui/parser/raw/raw-literal-keywords.stderr39
-rw-r--r--tests/ui/parser/raw/raw-literal-self.rs4
-rw-r--r--tests/ui/parser/raw/raw-literal-self.stderr8
-rw-r--r--tests/ui/parser/raw/raw-literal-underscore.rs4
-rw-r--r--tests/ui/parser/raw/raw-literal-underscore.stderr8
-rw-r--r--tests/ui/parser/raw/raw-str-delim.rs3
-rw-r--r--tests/ui/parser/raw/raw-str-delim.stderr8
-rw-r--r--tests/ui/parser/raw/raw-str-in-macro-call.rs14
-rw-r--r--tests/ui/parser/raw/raw-str-unbalanced.rs22
-rw-r--r--tests/ui/parser/raw/raw-str-unbalanced.stderr36
-rw-r--r--tests/ui/parser/raw/raw-str-unterminated.rs4
-rw-r--r--tests/ui/parser/raw/raw-str-unterminated.stderr11
-rw-r--r--tests/ui/parser/raw/raw-string-2.rs4
-rw-r--r--tests/ui/parser/raw/raw-string-2.stderr11
-rw-r--r--tests/ui/parser/raw/raw-string.rs4
-rw-r--r--tests/ui/parser/raw/raw-string.stderr13
23 files changed, 275 insertions, 0 deletions
diff --git a/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs b/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs
new file mode 100644
index 00000000000..bdfc29a3d57
--- /dev/null
+++ b/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.rs
@@ -0,0 +1,5 @@
+// This won't actually panic because of the error comment -- the `"` needs to be
+// the last byte in the file (including not having a trailing newline)
+// Prior to the fix you get the error: 'expected item, found `r" ...`'
+// because the string being unterminated wasn't properly detected.
+r" //~ unterminated raw string
diff --git a/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr b/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr
new file mode 100644
index 00000000000..3a7e2a4b14a
--- /dev/null
+++ b/tests/ui/parser/raw/issue-70677-panic-on-unterminated-raw-str-at-eof.stderr
@@ -0,0 +1,9 @@
+error[E0748]: unterminated raw string
+  --> $DIR/issue-70677-panic-on-unterminated-raw-str-at-eof.rs:5:1
+   |
+LL | r"
+   | ^ unterminated raw string
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0748`.
diff --git a/tests/ui/parser/raw/raw-byte-string-eof.rs b/tests/ui/parser/raw/raw-byte-string-eof.rs
new file mode 100644
index 00000000000..b74907b72b0
--- /dev/null
+++ b/tests/ui/parser/raw/raw-byte-string-eof.rs
@@ -0,0 +1,3 @@
+pub fn main() {
+    br##"a"#;  //~ unterminated raw string
+}
diff --git a/tests/ui/parser/raw/raw-byte-string-eof.stderr b/tests/ui/parser/raw/raw-byte-string-eof.stderr
new file mode 100644
index 00000000000..a76668e8051
--- /dev/null
+++ b/tests/ui/parser/raw/raw-byte-string-eof.stderr
@@ -0,0 +1,13 @@
+error[E0748]: unterminated raw string
+  --> $DIR/raw-byte-string-eof.rs:2:5
+   |
+LL |     br##"a"#;
+   |     ^      - help: consider terminating the string here: `##`
+   |     |
+   |     unterminated raw string
+   |
+   = note: this raw string should be terminated with `"##`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0748`.
diff --git a/tests/ui/parser/raw/raw-byte-string-literals.rs b/tests/ui/parser/raw/raw-byte-string-literals.rs
new file mode 100644
index 00000000000..1b859fee596
--- /dev/null
+++ b/tests/ui/parser/raw/raw-byte-string-literals.rs
@@ -0,0 +1,7 @@
+// ignore-tidy-cr
+
+pub fn main() {
+    br"a
"; //~ ERROR bare CR not allowed in raw string
+    br"é";  //~ ERROR non-ASCII character in raw byte string literal
+    br##~"a"~##;  //~ ERROR only `#` is allowed in raw string delimitation
+}
diff --git a/tests/ui/parser/raw/raw-byte-string-literals.stderr b/tests/ui/parser/raw/raw-byte-string-literals.stderr
new file mode 100644
index 00000000000..a2f27d1ed70
--- /dev/null
+++ b/tests/ui/parser/raw/raw-byte-string-literals.stderr
@@ -0,0 +1,20 @@
+error: bare CR not allowed in raw string
+  --> $DIR/raw-byte-string-literals.rs:4:9
+   |
+LL |     br"a
";
+   |         ^
+
+error: non-ASCII character in raw byte string literal
+  --> $DIR/raw-byte-string-literals.rs:5:8
+   |
+LL |     br"é";
+   |        ^ must be ASCII
+
+error: found invalid character; only `#` is allowed in raw string delimitation: ~
+  --> $DIR/raw-byte-string-literals.rs:6:5
+   |
+LL |     br##~"a"~##;
+   |     ^^^^^
+
+error: aborting due to 3 previous errors
+
diff --git a/tests/ui/parser/raw/raw-literal-keywords.rs b/tests/ui/parser/raw/raw-literal-keywords.rs
new file mode 100644
index 00000000000..a986980fab9
--- /dev/null
+++ b/tests/ui/parser/raw/raw-literal-keywords.rs
@@ -0,0 +1,25 @@
+fn test_if() {
+    r#if true { } //~ ERROR found keyword `true`
+}
+
+fn test_struct() {
+    r#struct Test; //~ ERROR found `Test`
+}
+
+fn test_union() {
+    r#union Test; //~ ERROR found `Test`
+}
+
+fn test_if_2() {
+    let _ = r#if; //~ ERROR cannot find value `r#if` in this scope
+}
+
+fn test_struct_2() {
+    let _ = r#struct; //~ ERROR cannot find value `r#struct` in this scope
+}
+
+fn test_union_2() {
+    let _ = r#union; //~ ERROR cannot find value `union` in this scope
+}
+
+fn main() {}
diff --git a/tests/ui/parser/raw/raw-literal-keywords.stderr b/tests/ui/parser/raw/raw-literal-keywords.stderr
new file mode 100644
index 00000000000..f7b6c894a90
--- /dev/null
+++ b/tests/ui/parser/raw/raw-literal-keywords.stderr
@@ -0,0 +1,39 @@
+error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found keyword `true`
+  --> $DIR/raw-literal-keywords.rs:2:10
+   |
+LL |     r#if true { }
+   |          ^^^^ expected one of 8 possible tokens
+
+error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `Test`
+  --> $DIR/raw-literal-keywords.rs:6:14
+   |
+LL |     r#struct Test;
+   |              ^^^^ expected one of 8 possible tokens
+
+error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `Test`
+  --> $DIR/raw-literal-keywords.rs:10:13
+   |
+LL |     r#union Test;
+   |             ^^^^ expected one of 8 possible tokens
+
+error[E0425]: cannot find value `r#if` in this scope
+  --> $DIR/raw-literal-keywords.rs:14:13
+   |
+LL |     let _ = r#if;
+   |             ^^^^ not found in this scope
+
+error[E0425]: cannot find value `r#struct` in this scope
+  --> $DIR/raw-literal-keywords.rs:18:13
+   |
+LL |     let _ = r#struct;
+   |             ^^^^^^^^ not found in this scope
+
+error[E0425]: cannot find value `union` in this scope
+  --> $DIR/raw-literal-keywords.rs:22:13
+   |
+LL |     let _ = r#union;
+   |             ^^^^^^^ not found in this scope
+
+error: aborting due to 6 previous errors
+
+For more information about this error, try `rustc --explain E0425`.
diff --git a/tests/ui/parser/raw/raw-literal-self.rs b/tests/ui/parser/raw/raw-literal-self.rs
new file mode 100644
index 00000000000..a0c9e24c235
--- /dev/null
+++ b/tests/ui/parser/raw/raw-literal-self.rs
@@ -0,0 +1,4 @@
+fn main() {
+    let r#self: ();
+    //~^ ERROR `self` cannot be a raw identifier
+}
diff --git a/tests/ui/parser/raw/raw-literal-self.stderr b/tests/ui/parser/raw/raw-literal-self.stderr
new file mode 100644
index 00000000000..2a40dfe200c
--- /dev/null
+++ b/tests/ui/parser/raw/raw-literal-self.stderr
@@ -0,0 +1,8 @@
+error: `self` cannot be a raw identifier
+  --> $DIR/raw-literal-self.rs:2:9
+   |
+LL |     let r#self: ();
+   |         ^^^^^^
+
+error: aborting due to previous error
+
diff --git a/tests/ui/parser/raw/raw-literal-underscore.rs b/tests/ui/parser/raw/raw-literal-underscore.rs
new file mode 100644
index 00000000000..a9d9e13a9d9
--- /dev/null
+++ b/tests/ui/parser/raw/raw-literal-underscore.rs
@@ -0,0 +1,4 @@
+fn main() {
+    let r#_: ();
+    //~^ ERROR `_` cannot be a raw identifier
+}
diff --git a/tests/ui/parser/raw/raw-literal-underscore.stderr b/tests/ui/parser/raw/raw-literal-underscore.stderr
new file mode 100644
index 00000000000..d7a364d8579
--- /dev/null
+++ b/tests/ui/parser/raw/raw-literal-underscore.stderr
@@ -0,0 +1,8 @@
+error: `_` cannot be a raw identifier
+  --> $DIR/raw-literal-underscore.rs:2:9
+   |
+LL |     let r#_: ();
+   |         ^^^
+
+error: aborting due to previous error
+
diff --git a/tests/ui/parser/raw/raw-str-delim.rs b/tests/ui/parser/raw/raw-str-delim.rs
new file mode 100644
index 00000000000..2f13893cecd
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-delim.rs
@@ -0,0 +1,3 @@
+static s: &'static str =
+    r#~"#"~# //~ ERROR found invalid character; only `#` is allowed in raw string delimitation
+;
diff --git a/tests/ui/parser/raw/raw-str-delim.stderr b/tests/ui/parser/raw/raw-str-delim.stderr
new file mode 100644
index 00000000000..8a04f99a126
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-delim.stderr
@@ -0,0 +1,8 @@
+error: found invalid character; only `#` is allowed in raw string delimitation: ~
+  --> $DIR/raw-str-delim.rs:2:5
+   |
+LL |     r#~"#"~#
+   |     ^^^
+
+error: aborting due to previous error
+
diff --git a/tests/ui/parser/raw/raw-str-in-macro-call.rs b/tests/ui/parser/raw/raw-str-in-macro-call.rs
new file mode 100644
index 00000000000..462c2279f5c
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-in-macro-call.rs
@@ -0,0 +1,14 @@
+// check-pass
+
+macro_rules! m1 {
+    ($tt:tt #) => ()
+}
+
+macro_rules! m2 {
+    ($tt:tt) => ()
+}
+
+fn main() {
+    m1!(r#"abc"##);
+    m2!(r#"abc"#);
+}
diff --git a/tests/ui/parser/raw/raw-str-unbalanced.rs b/tests/ui/parser/raw/raw-str-unbalanced.rs
new file mode 100644
index 00000000000..38537f8b31e
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-unbalanced.rs
@@ -0,0 +1,22 @@
+static s: &'static str =
+    r#""## //~ ERROR too many `#` when terminating raw string
+;
+
+static s2: &'static str =
+    r#"
+      "#### //~ ERROR too many `#` when terminating raw string
+;
+
+const A: &'static str = r"" //~ ERROR expected `;`, found `#`
+
+// Test
+#[test]
+fn test() {}
+
+const B: &'static str = r""## //~ ERROR too many `#` when terminating raw string
+
+// Test
+#[test]
+fn test2() {}
+
+fn main() {}
diff --git a/tests/ui/parser/raw/raw-str-unbalanced.stderr b/tests/ui/parser/raw/raw-str-unbalanced.stderr
new file mode 100644
index 00000000000..eac8c06c1df
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-unbalanced.stderr
@@ -0,0 +1,36 @@
+error: too many `#` when terminating raw string
+  --> $DIR/raw-str-unbalanced.rs:2:10
+   |
+LL |     r#""##
+   |     -----^ help: remove the extra `#`
+   |     |
+   |     this raw string started with 1 `#`
+
+error: too many `#` when terminating raw string
+  --> $DIR/raw-str-unbalanced.rs:7:9
+   |
+LL | /     r#"
+LL | |       "####
+   | |        -^^^ help: remove the extra `#`s
+   | |________|
+   |          this raw string started with 1 `#`
+
+error: expected `;`, found `#`
+  --> $DIR/raw-str-unbalanced.rs:10:28
+   |
+LL | const A: &'static str = r""
+   |                            ^ help: add `;` here
+...
+LL | #[test]
+   | - unexpected token
+
+error: too many `#` when terminating raw string
+  --> $DIR/raw-str-unbalanced.rs:16:28
+   |
+LL | const B: &'static str = r""##
+   |                         ---^^ help: remove the extra `#`s
+   |                         |
+   |                         this raw string started with 0 `#`s
+
+error: aborting due to 4 previous errors
+
diff --git a/tests/ui/parser/raw/raw-str-unterminated.rs b/tests/ui/parser/raw/raw-str-unterminated.rs
new file mode 100644
index 00000000000..fd317295561
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-unterminated.rs
@@ -0,0 +1,4 @@
+static s: &'static str =
+    r#" string literal goes on
+        and on
+    //~^^ ERROR unterminated raw string
diff --git a/tests/ui/parser/raw/raw-str-unterminated.stderr b/tests/ui/parser/raw/raw-str-unterminated.stderr
new file mode 100644
index 00000000000..077f763f154
--- /dev/null
+++ b/tests/ui/parser/raw/raw-str-unterminated.stderr
@@ -0,0 +1,11 @@
+error[E0748]: unterminated raw string
+  --> $DIR/raw-str-unterminated.rs:2:5
+   |
+LL |     r#" string literal goes on
+   |     ^ unterminated raw string
+   |
+   = note: this raw string should be terminated with `"#`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0748`.
diff --git a/tests/ui/parser/raw/raw-string-2.rs b/tests/ui/parser/raw/raw-string-2.rs
new file mode 100644
index 00000000000..067332d2819
--- /dev/null
+++ b/tests/ui/parser/raw/raw-string-2.rs
@@ -0,0 +1,4 @@
+fn main() {
+    let x = r###"here's a long string"# "# "##;
+    //~^ ERROR unterminated raw string
+}
diff --git a/tests/ui/parser/raw/raw-string-2.stderr b/tests/ui/parser/raw/raw-string-2.stderr
new file mode 100644
index 00000000000..8bbac9d7bd0
--- /dev/null
+++ b/tests/ui/parser/raw/raw-string-2.stderr
@@ -0,0 +1,11 @@
+error[E0748]: unterminated raw string
+  --> $DIR/raw-string-2.rs:2:13
+   |
+LL |     let x = r###"here's a long string"# "# "##;
+   |             ^ unterminated raw string       -- help: consider terminating the string here: `###`
+   |
+   = note: this raw string should be terminated with `"###`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0748`.
diff --git a/tests/ui/parser/raw/raw-string.rs b/tests/ui/parser/raw/raw-string.rs
new file mode 100644
index 00000000000..84f07c4a941
--- /dev/null
+++ b/tests/ui/parser/raw/raw-string.rs
@@ -0,0 +1,4 @@
+fn main() {
+    let x = r##"lol"#;
+    //~^ ERROR unterminated raw string
+}
diff --git a/tests/ui/parser/raw/raw-string.stderr b/tests/ui/parser/raw/raw-string.stderr
new file mode 100644
index 00000000000..b2b853a89e7
--- /dev/null
+++ b/tests/ui/parser/raw/raw-string.stderr
@@ -0,0 +1,13 @@
+error[E0748]: unterminated raw string
+  --> $DIR/raw-string.rs:2:13
+   |
+LL |     let x = r##"lol"#;
+   |             ^       - help: consider terminating the string here: `##`
+   |             |
+   |             unterminated raw string
+   |
+   = note: this raw string should be terminated with `"##`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0748`.