summaryrefslogtreecommitdiffstats
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 000000000..bdfc29a3d
--- /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 000000000..3a7e2a4b1
--- /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 000000000..b74907b72
--- /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 000000000..a76668e80
--- /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 000000000..1b859fee5
--- /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 000000000..a2f27d1ed
--- /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 000000000..a986980fa
--- /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 000000000..f7b6c894a
--- /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 000000000..a0c9e24c2
--- /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 000000000..2a40dfe20
--- /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 000000000..a9d9e13a9
--- /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 000000000..d7a364d85
--- /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 000000000..2f13893ce
--- /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 000000000..8a04f99a1
--- /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 000000000..462c2279f
--- /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 000000000..38537f8b3
--- /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 000000000..eac8c06c1
--- /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 000000000..fd3172955
--- /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 000000000..077f763f1
--- /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 000000000..067332d28
--- /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 000000000..8bbac9d7b
--- /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 000000000..84f07c4a9
--- /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 000000000..b2b853a89
--- /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`.