about summary refs log tree commit diff
path: root/src/test/ui/parser
diff options
context:
space:
mode:
authorCaio <c410.f3r@gmail.com>2021-01-16 15:54:05 -0300
committerCaio <c410.f3r@gmail.com>2021-01-16 19:46:54 -0300
commitad35979c50366d6b0fbcda99215f1c4e926e5dab (patch)
tree8bc4fd6168831ee45cf114456cc70d4cf49266d8 /src/test/ui/parser
parent63a83c5f55801b17b77adf690db397d17c706c48 (diff)
downloadrust-ad35979c50366d6b0fbcda99215f1c4e926e5dab.tar.gz
rust-ad35979c50366d6b0fbcda99215f1c4e926e5dab.zip
Move some tests to more reasonable directories - 2
Address comments

Update limits
Diffstat (limited to 'src/test/ui/parser')
-rw-r--r--src/test/ui/parser/auxiliary/issue-21146-inc.rs3
-rw-r--r--src/test/ui/parser/can-begin-expr-check.rs20
-rw-r--r--src/test/ui/parser/can-begin-expr-check.stderr8
-rw-r--r--src/test/ui/parser/issue-20616-1.rs36
-rw-r--r--src/test/ui/parser/issue-20616-1.stderr8
-rw-r--r--src/test/ui/parser/issue-20616-2.rs36
-rw-r--r--src/test/ui/parser/issue-20616-2.stderr8
-rw-r--r--src/test/ui/parser/issue-21146.rs3
-rw-r--r--src/test/ui/parser/issue-21146.stderr8
-rw-r--r--src/test/ui/parser/issue-34222-1.rs3
-rw-r--r--src/test/ui/parser/issue-34222-1.stderr11
-rw-r--r--src/test/ui/parser/issue-43196.rs6
-rw-r--r--src/test/ui/parser/issue-43196.stderr16
-rw-r--r--src/test/ui/parser/issue-44021.rs6
-rw-r--r--src/test/ui/parser/issue-44021.stderr8
-rw-r--r--src/test/ui/parser/issue-45296.rs5
-rw-r--r--src/test/ui/parser/issue-45296.stderr10
-rw-r--r--src/test/ui/parser/issue-46186.fixed8
-rw-r--r--src/test/ui/parser/issue-46186.rs8
-rw-r--r--src/test/ui/parser/issue-46186.stderr10
-rw-r--r--src/test/ui/parser/issue-51602.rs6
-rw-r--r--src/test/ui/parser/issue-51602.stderr10
-rw-r--r--src/test/ui/parser/issue-52496.rs12
-rw-r--r--src/test/ui/parser/issue-52496.stderr37
-rw-r--r--src/test/ui/parser/issue-58856-2.rs14
-rw-r--r--src/test/ui/parser/issue-58856-2.stderr34
-rw-r--r--src/test/ui/parser/issue-60075.rs11
-rw-r--r--src/test/ui/parser/issue-60075.stderr29
-rw-r--r--src/test/ui/parser/issue-62554.rs6
-rw-r--r--src/test/ui/parser/issue-62554.stderr71
-rw-r--r--src/test/ui/parser/issue-66473.rsbin0 -> 127 bytes
-rw-r--r--src/test/ui/parser/issue-66473.stderrbin0 -> 2660 bytes
-rw-r--r--src/test/ui/parser/issue-72253.rs6
-rw-r--r--src/test/ui/parser/issue-72253.stderr10
-rw-r--r--src/test/ui/parser/issue-72373.rs9
-rw-r--r--src/test/ui/parser/issue-72373.stderr13
-rw-r--r--src/test/ui/parser/issue-75599.rs24
-rw-r--r--src/test/ui/parser/issue-76597.fixed11
-rw-r--r--src/test/ui/parser/issue-76597.rs11
-rw-r--r--src/test/ui/parser/issue-76597.stderr13
-rw-r--r--src/test/ui/parser/lifetime_starts_expressions.rs13
-rw-r--r--src/test/ui/parser/lifetime_starts_expressions.stderr23
42 files changed, 584 insertions, 0 deletions
diff --git a/src/test/ui/parser/auxiliary/issue-21146-inc.rs b/src/test/ui/parser/auxiliary/issue-21146-inc.rs
new file mode 100644
index 00000000000..32a3b9dcc35
--- /dev/null
+++ b/src/test/ui/parser/auxiliary/issue-21146-inc.rs
@@ -0,0 +1,3 @@
+// include file for issue-21146.rs
+
+parse_error
diff --git a/src/test/ui/parser/can-begin-expr-check.rs b/src/test/ui/parser/can-begin-expr-check.rs
new file mode 100644
index 00000000000..8974d9f48c1
--- /dev/null
+++ b/src/test/ui/parser/can-begin-expr-check.rs
@@ -0,0 +1,20 @@
+pub fn main() {
+
+    return;
+    return ();
+    return as ();
+    return return as ();
+    return return return;
+
+    return if true {
+        ()
+    } else {
+        ()
+    };
+
+    loop {
+        return break as ();
+    }
+
+    return enum; //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found keyword `enum`
+}
diff --git a/src/test/ui/parser/can-begin-expr-check.stderr b/src/test/ui/parser/can-begin-expr-check.stderr
new file mode 100644
index 00000000000..d674fc36bc2
--- /dev/null
+++ b/src/test/ui/parser/can-begin-expr-check.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found keyword `enum`
+  --> $DIR/can-begin-expr-check.rs:19:12
+   |
+LL |     return enum;
+   |            ^^^^ expected one of `.`, `;`, `?`, `}`, or an operator
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-20616-1.rs b/src/test/ui/parser/issue-20616-1.rs
new file mode 100644
index 00000000000..49e9cb310c1
--- /dev/null
+++ b/src/test/ui/parser/issue-20616-1.rs
@@ -0,0 +1,36 @@
+// We need all these 9 issue-20616-N.rs files
+// because we can only catch one parsing error at a time
+
+
+
+type Type_1_<'a, T> = &'a T;
+
+
+type Type_1<'a T> = &'a T; //~ error: expected one of `,`, `:`, or `>`, found `T`
+
+
+//type Type_2 = Type_1_<'static ()>; // error: expected `,` or `>` after lifetime name, found `(`
+
+
+//type Type_3<T> = Box<T,,>; // error: expected type, found `,`
+
+
+//type Type_4<T> = Type_1_<'static,, T>; // error: expected type, found `,`
+
+
+type Type_5_<'a> = Type_1_<'a, ()>;
+
+
+//type Type_5<'a> = Type_1_<'a, (),,>; // error: expected type, found `,`
+
+
+//type Type_6 = Type_5_<'a,,>; // error: expected type, found `,`
+
+
+//type Type_7 = Box<(),,>; // error: expected type, found `,`
+
+
+//type Type_8<'a,,> = &'a (); // error: expected ident, found `,`
+
+
+//type Type_9<T,,> = Box<T>; // error: expected ident, found `,`
diff --git a/src/test/ui/parser/issue-20616-1.stderr b/src/test/ui/parser/issue-20616-1.stderr
new file mode 100644
index 00000000000..81604623785
--- /dev/null
+++ b/src/test/ui/parser/issue-20616-1.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,`, `:`, or `>`, found `T`
+  --> $DIR/issue-20616-1.rs:9:16
+   |
+LL | type Type_1<'a T> = &'a T;
+   |                ^ expected one of `,`, `:`, or `>`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-20616-2.rs b/src/test/ui/parser/issue-20616-2.rs
new file mode 100644
index 00000000000..f108ae5de14
--- /dev/null
+++ b/src/test/ui/parser/issue-20616-2.rs
@@ -0,0 +1,36 @@
+// We need all these 9 issue-20616-N.rs files
+// because we can only catch one parsing error at a time
+
+
+
+type Type_1_<'a, T> = &'a T;
+
+
+//type Type_1<'a T> = &'a T; // error: expected `,` or `>` after lifetime name, found `T`
+
+
+type Type_2 = Type_1_<'static ()>; //~ error: expected one of `,`, `:`, `=`, or `>`, found `(`
+
+
+//type Type_3<T> = Box<T,,>; // error: expected type, found `,`
+
+
+//type Type_4<T> = Type_1_<'static,, T>; // error: expected type, found `,`
+
+
+type Type_5_<'a> = Type_1_<'a, ()>;
+
+
+//type Type_5<'a> = Type_1_<'a, (),,>; // error: expected type, found `,`
+
+
+//type Type_6 = Type_5_<'a,,>; // error: expected type, found `,`
+
+
+//type Type_7 = Box<(),,>; // error: expected type, found `,`
+
+
+//type Type_8<'a,,> = &'a (); // error: expected ident, found `,`
+
+
+//type Type_9<T,,> = Box<T>; // error: expected ident, found `,`
diff --git a/src/test/ui/parser/issue-20616-2.stderr b/src/test/ui/parser/issue-20616-2.stderr
new file mode 100644
index 00000000000..01e3d3dd7cc
--- /dev/null
+++ b/src/test/ui/parser/issue-20616-2.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,`, `:`, `=`, or `>`, found `(`
+  --> $DIR/issue-20616-2.rs:12:31
+   |
+LL | type Type_2 = Type_1_<'static ()>;
+   |                               ^ expected one of `,`, `:`, `=`, or `>`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-21146.rs b/src/test/ui/parser/issue-21146.rs
new file mode 100644
index 00000000000..19eaffc3edd
--- /dev/null
+++ b/src/test/ui/parser/issue-21146.rs
@@ -0,0 +1,3 @@
+// error-pattern: expected one of `!` or `::`, found `<eof>`
+include!("auxiliary/issue-21146-inc.rs");
+fn main() {}
diff --git a/src/test/ui/parser/issue-21146.stderr b/src/test/ui/parser/issue-21146.stderr
new file mode 100644
index 00000000000..c71fda3d63f
--- /dev/null
+++ b/src/test/ui/parser/issue-21146.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!` or `::`, found `<eof>`
+  --> $DIR/auxiliary/issue-21146-inc.rs:3:1
+   |
+LL | parse_error
+   | ^^^^^^^^^^^ expected one of `!` or `::`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-34222-1.rs b/src/test/ui/parser/issue-34222-1.rs
new file mode 100644
index 00000000000..d36dddc97bb
--- /dev/null
+++ b/src/test/ui/parser/issue-34222-1.rs
@@ -0,0 +1,3 @@
+fn main() {
+    /// comment //~ ERROR found a documentation comment that doesn't document anything
+}
diff --git a/src/test/ui/parser/issue-34222-1.stderr b/src/test/ui/parser/issue-34222-1.stderr
new file mode 100644
index 00000000000..0799656b06b
--- /dev/null
+++ b/src/test/ui/parser/issue-34222-1.stderr
@@ -0,0 +1,11 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/issue-34222-1.rs:2:5
+   |
+LL |     /// comment
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: doc comments must come before what they document, maybe a comment was intended with `//`?
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0585`.
diff --git a/src/test/ui/parser/issue-43196.rs b/src/test/ui/parser/issue-43196.rs
new file mode 100644
index 00000000000..0eefa01ce6d
--- /dev/null
+++ b/src/test/ui/parser/issue-43196.rs
@@ -0,0 +1,6 @@
+fn main() {
+    |
+}
+//~^ ERROR expected `|`, found `}`
+|
+//~^ ERROR expected item, found `|`
diff --git a/src/test/ui/parser/issue-43196.stderr b/src/test/ui/parser/issue-43196.stderr
new file mode 100644
index 00000000000..4f7ed5cc6fd
--- /dev/null
+++ b/src/test/ui/parser/issue-43196.stderr
@@ -0,0 +1,16 @@
+error: expected `|`, found `}`
+  --> $DIR/issue-43196.rs:3:1
+   |
+LL |     |
+   |      - expected `|`
+LL | }
+   | ^ unexpected token
+
+error: expected item, found `|`
+  --> $DIR/issue-43196.rs:5:1
+   |
+LL | |
+   | ^ expected item
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/ui/parser/issue-44021.rs b/src/test/ui/parser/issue-44021.rs
new file mode 100644
index 00000000000..0b9558cc91e
--- /dev/null
+++ b/src/test/ui/parser/issue-44021.rs
@@ -0,0 +1,6 @@
+struct MyStruct;
+impl MyStruct {
+    fn f() {|x, y} //~ ERROR expected one of `:`, `@`, or `|`, found `}`
+}
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-44021.stderr b/src/test/ui/parser/issue-44021.stderr
new file mode 100644
index 00000000000..b888cd989a6
--- /dev/null
+++ b/src/test/ui/parser/issue-44021.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `@`, or `|`, found `}`
+  --> $DIR/issue-44021.rs:3:18
+   |
+LL |     fn f() {|x, y}
+   |                  ^ expected one of `:`, `@`, or `|`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-45296.rs b/src/test/ui/parser/issue-45296.rs
new file mode 100644
index 00000000000..f242c1d2937
--- /dev/null
+++ b/src/test/ui/parser/issue-45296.rs
@@ -0,0 +1,5 @@
+fn main() {
+    let unused = ();
+
+    #![allow(unused_variables)] //~ ERROR not permitted in this context
+}
diff --git a/src/test/ui/parser/issue-45296.stderr b/src/test/ui/parser/issue-45296.stderr
new file mode 100644
index 00000000000..c0d4ce1243e
--- /dev/null
+++ b/src/test/ui/parser/issue-45296.stderr
@@ -0,0 +1,10 @@
+error: an inner attribute is not permitted in this context
+  --> $DIR/issue-45296.rs:4:5
+   |
+LL |     #![allow(unused_variables)]
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: inner attributes, like `#![no_std]`, annotate the item enclosing them, and are usually found at the beginning of source files. Outer attributes, like `#[test]`, annotate the item following them.
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-46186.fixed b/src/test/ui/parser/issue-46186.fixed
new file mode 100644
index 00000000000..2cb5a4996ee
--- /dev/null
+++ b/src/test/ui/parser/issue-46186.fixed
@@ -0,0 +1,8 @@
+// run-rustfix
+
+pub struct Struct {
+    pub a: usize,
+}
+//~^ ERROR expected item, found `;`
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-46186.rs b/src/test/ui/parser/issue-46186.rs
new file mode 100644
index 00000000000..84cad38c5ec
--- /dev/null
+++ b/src/test/ui/parser/issue-46186.rs
@@ -0,0 +1,8 @@
+// run-rustfix
+
+pub struct Struct {
+    pub a: usize,
+};
+//~^ ERROR expected item, found `;`
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-46186.stderr b/src/test/ui/parser/issue-46186.stderr
new file mode 100644
index 00000000000..0766c8a33df
--- /dev/null
+++ b/src/test/ui/parser/issue-46186.stderr
@@ -0,0 +1,10 @@
+error: expected item, found `;`
+  --> $DIR/issue-46186.rs:5:2
+   |
+LL | };
+   |  ^ help: remove this semicolon
+   |
+   = help: braced struct declarations are not followed by a semicolon
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-51602.rs b/src/test/ui/parser/issue-51602.rs
new file mode 100644
index 00000000000..0e96ca914a9
--- /dev/null
+++ b/src/test/ui/parser/issue-51602.rs
@@ -0,0 +1,6 @@
+fn main(){
+    if i in 1..10 {
+//~^ ERROR expected `{`, found keyword `in`
+        break;
+    }
+}
diff --git a/src/test/ui/parser/issue-51602.stderr b/src/test/ui/parser/issue-51602.stderr
new file mode 100644
index 00000000000..d800890bca3
--- /dev/null
+++ b/src/test/ui/parser/issue-51602.stderr
@@ -0,0 +1,10 @@
+error: expected `{`, found keyword `in`
+  --> $DIR/issue-51602.rs:2:10
+   |
+LL |     if i in 1..10 {
+   |     --   ^^ expected `{`
+   |     |
+   |     this `if` expression has a condition, but no block
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-52496.rs b/src/test/ui/parser/issue-52496.rs
new file mode 100644
index 00000000000..4e945365373
--- /dev/null
+++ b/src/test/ui/parser/issue-52496.rs
@@ -0,0 +1,12 @@
+struct Foo { bar: f64, baz: i64, bat: i64 }
+
+fn main() {
+    let _ = Foo { bar: .5, baz: 42 };
+    //~^ ERROR float literals must have an integer part
+    //~| ERROR missing field `bat` in initializer of `Foo`
+    let bar = 1.5f32;
+    let _ = Foo { bar.into(), bat: -1, . };
+    //~^ ERROR expected one of
+    //~| ERROR missing fields `bar`, `baz` in initializer of `Foo`
+    //~| ERROR expected identifier, found `.`
+}
diff --git a/src/test/ui/parser/issue-52496.stderr b/src/test/ui/parser/issue-52496.stderr
new file mode 100644
index 00000000000..10fcc46f344
--- /dev/null
+++ b/src/test/ui/parser/issue-52496.stderr
@@ -0,0 +1,37 @@
+error: float literals must have an integer part
+  --> $DIR/issue-52496.rs:4:24
+   |
+LL |     let _ = Foo { bar: .5, baz: 42 };
+   |                        ^^ help: must have an integer part: `0.5`
+
+error: expected one of `,` or `}`, found `.`
+  --> $DIR/issue-52496.rs:8:22
+   |
+LL |     let _ = Foo { bar.into(), bat: -1, . };
+   |             ---      ^ expected one of `,` or `}`
+   |             |
+   |             while parsing this struct
+
+error: expected identifier, found `.`
+  --> $DIR/issue-52496.rs:8:40
+   |
+LL |     let _ = Foo { bar.into(), bat: -1, . };
+   |             ---                        ^ expected identifier
+   |             |
+   |             while parsing this struct
+
+error[E0063]: missing field `bat` in initializer of `Foo`
+  --> $DIR/issue-52496.rs:4:13
+   |
+LL |     let _ = Foo { bar: .5, baz: 42 };
+   |             ^^^ missing `bat`
+
+error[E0063]: missing fields `bar`, `baz` in initializer of `Foo`
+  --> $DIR/issue-52496.rs:8:13
+   |
+LL |     let _ = Foo { bar.into(), bat: -1, . };
+   |             ^^^ missing `bar`, `baz`
+
+error: aborting due to 5 previous errors
+
+For more information about this error, try `rustc --explain E0063`.
diff --git a/src/test/ui/parser/issue-58856-2.rs b/src/test/ui/parser/issue-58856-2.rs
new file mode 100644
index 00000000000..9356d57b0e5
--- /dev/null
+++ b/src/test/ui/parser/issue-58856-2.rs
@@ -0,0 +1,14 @@
+struct Empty;
+
+trait Howness {}
+
+impl Howness for () {
+    fn how_are_you(&self -> Empty {
+    //~^ ERROR expected one of `)` or `,`, found `->`
+    //~| ERROR method `how_are_you` is not a member of trait `Howness`
+        Empty
+    }
+}
+//~^ ERROR non-item in item list
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-58856-2.stderr b/src/test/ui/parser/issue-58856-2.stderr
new file mode 100644
index 00000000000..303b5eacc32
--- /dev/null
+++ b/src/test/ui/parser/issue-58856-2.stderr
@@ -0,0 +1,34 @@
+error: expected one of `)` or `,`, found `->`
+  --> $DIR/issue-58856-2.rs:6:26
+   |
+LL |     fn how_are_you(&self -> Empty {
+   |                   -     -^^
+   |                   |     |
+   |                   |     help: `)` may belong here
+   |                   unclosed delimiter
+
+error: non-item in item list
+  --> $DIR/issue-58856-2.rs:11:1
+   |
+LL | impl Howness for () {
+   |                     - item list starts here
+...
+LL | }
+   | ^
+   | |
+   | non-item starts here
+   | item list ends here
+
+error[E0407]: method `how_are_you` is not a member of trait `Howness`
+  --> $DIR/issue-58856-2.rs:6:5
+   |
+LL | /     fn how_are_you(&self -> Empty {
+LL | |
+LL | |
+LL | |         Empty
+LL | |     }
+   | |_____^ not a member of trait `Howness`
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0407`.
diff --git a/src/test/ui/parser/issue-60075.rs b/src/test/ui/parser/issue-60075.rs
new file mode 100644
index 00000000000..e89d78ee8a6
--- /dev/null
+++ b/src/test/ui/parser/issue-60075.rs
@@ -0,0 +1,11 @@
+fn main() {}
+
+trait T {
+    fn qux() -> Option<usize> {
+        let _ = if true {
+        });
+//~^ ERROR non-item in item list
+//~| ERROR mismatched closing delimiter: `)`
+//~| ERROR expected one of `.`, `;`
+        Some(4)
+    }
diff --git a/src/test/ui/parser/issue-60075.stderr b/src/test/ui/parser/issue-60075.stderr
new file mode 100644
index 00000000000..e3b7f4ad420
--- /dev/null
+++ b/src/test/ui/parser/issue-60075.stderr
@@ -0,0 +1,29 @@
+error: expected one of `.`, `;`, `?`, `else`, or an operator, found `}`
+  --> $DIR/issue-60075.rs:6:10
+   |
+LL |         });
+   |          ^ expected one of `.`, `;`, `?`, `else`, or an operator
+
+error: non-item in item list
+  --> $DIR/issue-60075.rs:6:11
+   |
+LL | trait T {
+   |         - item list starts here
+...
+LL |         });
+   |           ^ non-item starts here
+...
+LL |     }
+   |     - item list ends here
+
+error: mismatched closing delimiter: `)`
+  --> $DIR/issue-60075.rs:6:10
+   |
+LL |     fn qux() -> Option<usize> {
+   |                               - unclosed delimiter
+LL |         let _ = if true {
+LL |         });
+   |          ^ mismatched closing delimiter
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/ui/parser/issue-62554.rs b/src/test/ui/parser/issue-62554.rs
new file mode 100644
index 00000000000..cfd02183cb4
--- /dev/null
+++ b/src/test/ui/parser/issue-62554.rs
@@ -0,0 +1,6 @@
+// error-pattern:this file contains an unclosed delimiter
+// error-pattern:xpected `{`, found `macro_rules`
+
+fn main() {}
+
+fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
diff --git a/src/test/ui/parser/issue-62554.stderr b/src/test/ui/parser/issue-62554.stderr
new file mode 100644
index 00000000000..935d3842cdf
--- /dev/null
+++ b/src/test/ui/parser/issue-62554.stderr
@@ -0,0 +1,71 @@
+error: this file contains an unclosed delimiter
+  --> $DIR/issue-62554.rs:6:89
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |               -                       -         -                  -                  - ^
+   |               |                       |         |                  |                  |
+   |               |                       |         |                  |                  unclosed delimiter
+   |               |                       |         |                  unclosed delimiter
+   |               |                       |         unclosed delimiter
+   |               unclosed delimiter      unclosed delimiter
+
+error: this file contains an unclosed delimiter
+  --> $DIR/issue-62554.rs:6:89
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |               -                       -         -                  -                  - ^
+   |               |                       |         |                  |                  |
+   |               |                       |         |                  |                  unclosed delimiter
+   |               |                       |         |                  unclosed delimiter
+   |               |                       |         unclosed delimiter
+   |               unclosed delimiter      unclosed delimiter
+
+error: this file contains an unclosed delimiter
+  --> $DIR/issue-62554.rs:6:89
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |               -                       -         -                  -                  - ^
+   |               |                       |         |                  |                  |
+   |               |                       |         |                  |                  unclosed delimiter
+   |               |                       |         |                  unclosed delimiter
+   |               |                       |         unclosed delimiter
+   |               unclosed delimiter      unclosed delimiter
+
+error: this file contains an unclosed delimiter
+  --> $DIR/issue-62554.rs:6:89
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |               -                       -         -                  -                  - ^
+   |               |                       |         |                  |                  |
+   |               |                       |         |                  |                  unclosed delimiter
+   |               |                       |         |                  unclosed delimiter
+   |               |                       |         unclosed delimiter
+   |               unclosed delimiter      unclosed delimiter
+
+error: this file contains an unclosed delimiter
+  --> $DIR/issue-62554.rs:6:89
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |               -                       -         -                  -                  - ^
+   |               |                       |         |                  |                  |
+   |               |                       |         |                  |                  unclosed delimiter
+   |               |                       |         |                  unclosed delimiter
+   |               |                       |         unclosed delimiter
+   |               unclosed delimiter      unclosed delimiter
+
+error: expected `{`, found `macro_rules`
+  --> $DIR/issue-62554.rs:6:23
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |                 --    ^^^^^^^^^^^ expected `{`
+   |                 |
+   |                 this `if` expression has a condition, but no block
+   |
+help: try placing this code inside a block
+   |
+LL | fn foo(u: u8) { if u8 { macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+LL |  }
+   |
+
+error: aborting due to 6 previous errors
+
diff --git a/src/test/ui/parser/issue-66473.rs b/src/test/ui/parser/issue-66473.rs
new file mode 100644
index 00000000000..9db4521bb42
--- /dev/null
+++ b/src/test/ui/parser/issue-66473.rs
Binary files differdiff --git a/src/test/ui/parser/issue-66473.stderr b/src/test/ui/parser/issue-66473.stderr
new file mode 100644
index 00000000000..b370b125cfe
--- /dev/null
+++ b/src/test/ui/parser/issue-66473.stderr
Binary files differdiff --git a/src/test/ui/parser/issue-72253.rs b/src/test/ui/parser/issue-72253.rs
new file mode 100644
index 00000000000..6f9af73b039
--- /dev/null
+++ b/src/test/ui/parser/issue-72253.rs
@@ -0,0 +1,6 @@
+fn main() {
+    let a = std::process::Command::new("echo")
+        .arg("1")
+        ,arg("2") //~ ERROR expected one of `.`, `;`, `?`, or an operator, found `,`
+        .output();
+}
diff --git a/src/test/ui/parser/issue-72253.stderr b/src/test/ui/parser/issue-72253.stderr
new file mode 100644
index 00000000000..3819fd92a9e
--- /dev/null
+++ b/src/test/ui/parser/issue-72253.stderr
@@ -0,0 +1,10 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `,`
+  --> $DIR/issue-72253.rs:4:9
+   |
+LL |         .arg("1")
+   |                  - expected one of `.`, `;`, `?`, or an operator
+LL |         ,arg("2")
+   |         ^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-72373.rs b/src/test/ui/parser/issue-72373.rs
new file mode 100644
index 00000000000..4da6061c27f
--- /dev/null
+++ b/src/test/ui/parser/issue-72373.rs
@@ -0,0 +1,9 @@
+fn foo(c: &[u32], n: u32) -> u32 {
+    match *c {
+        [h, ..] if h > n => 0,
+        [h, ..] if h == n => 1,
+        [h, ref ts..] => foo(c, n - h) + foo(ts, n),
+        //~^ ERROR expected one of `,`, `@`, `]`, or `|`, found `..`
+        [] => 0,
+    }
+}
diff --git a/src/test/ui/parser/issue-72373.stderr b/src/test/ui/parser/issue-72373.stderr
new file mode 100644
index 00000000000..dfde8624814
--- /dev/null
+++ b/src/test/ui/parser/issue-72373.stderr
@@ -0,0 +1,13 @@
+error: expected one of `,`, `@`, `]`, or `|`, found `..`
+  --> $DIR/issue-72373.rs:5:19
+   |
+LL |         [h, ref ts..] => foo(c, n - h) + foo(ts, n),
+   |                   ^^ expected one of `,`, `@`, `]`, or `|`
+   |
+help: if you meant to bind the contents of the rest of the array pattern into `ts`, use `@`
+   |
+LL |         [h, ref ts @ ..] => foo(c, n - h) + foo(ts, n),
+   |                    ^
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/issue-75599.rs b/src/test/ui/parser/issue-75599.rs
new file mode 100644
index 00000000000..0857676e4ed
--- /dev/null
+++ b/src/test/ui/parser/issue-75599.rs
@@ -0,0 +1,24 @@
+// check-pass
+#![allow(non_upper_case_globals)]
+
+const or: usize = 1;
+const and: usize = 2;
+
+mod or {
+    pub const X: usize = 3;
+}
+
+mod and {
+    pub const X: usize = 4;
+}
+
+fn main() {
+    match 0 {
+        0 => {}
+        or => {}
+        and => {}
+        or::X => {}
+        and::X => {}
+        _ => {}
+    }
+}
diff --git a/src/test/ui/parser/issue-76597.fixed b/src/test/ui/parser/issue-76597.fixed
new file mode 100644
index 00000000000..2d7a30b8361
--- /dev/null
+++ b/src/test/ui/parser/issue-76597.fixed
@@ -0,0 +1,11 @@
+// run-rustfix
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+fn f(
+                                     x: u8,
+                                     y: u8,
+) {}
+//~^^ ERROR: expected one of `!`, `(`, `)`, `+`, `,`, `::`, or `<`, found `y`
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-76597.rs b/src/test/ui/parser/issue-76597.rs
new file mode 100644
index 00000000000..521b9c64b1c
--- /dev/null
+++ b/src/test/ui/parser/issue-76597.rs
@@ -0,0 +1,11 @@
+// run-rustfix
+
+#![allow(dead_code)]
+#![allow(unused_variables)]
+fn f(
+                                     x: u8
+                                     y: u8,
+) {}
+//~^^ ERROR: expected one of `!`, `(`, `)`, `+`, `,`, `::`, or `<`, found `y`
+
+fn main() {}
diff --git a/src/test/ui/parser/issue-76597.stderr b/src/test/ui/parser/issue-76597.stderr
new file mode 100644
index 00000000000..50b23329f0c
--- /dev/null
+++ b/src/test/ui/parser/issue-76597.stderr
@@ -0,0 +1,13 @@
+error: expected one of `!`, `(`, `)`, `+`, `,`, `::`, or `<`, found `y`
+  --> $DIR/issue-76597.rs:7:38
+   |
+LL | ...                   x: u8
+   |                            -
+   |                            |
+   |                            expected one of 7 possible tokens
+   |                            help: missing `,`
+LL | ...                   y: u8,
+   |                       ^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/parser/lifetime_starts_expressions.rs b/src/test/ui/parser/lifetime_starts_expressions.rs
new file mode 100644
index 00000000000..e0098793e1f
--- /dev/null
+++ b/src/test/ui/parser/lifetime_starts_expressions.rs
@@ -0,0 +1,13 @@
+fn foo() -> u32 {
+    return 'label: loop { break 'label 42; };
+}
+
+fn bar() -> u32 {
+    loop { break 'label: loop { break 'label 42; }; }
+    //~^ ERROR expected identifier, found keyword `loop`
+    //~| ERROR expected type, found keyword `loop`
+}
+
+pub fn main() {
+    foo();
+}
diff --git a/src/test/ui/parser/lifetime_starts_expressions.stderr b/src/test/ui/parser/lifetime_starts_expressions.stderr
new file mode 100644
index 00000000000..7275841ebb8
--- /dev/null
+++ b/src/test/ui/parser/lifetime_starts_expressions.stderr
@@ -0,0 +1,23 @@
+error: expected identifier, found keyword `loop`
+  --> $DIR/lifetime_starts_expressions.rs:6:26
+   |
+LL |     loop { break 'label: loop { break 'label 42; }; }
+   |                          ^^^^ expected identifier, found keyword
+   |
+help: you can escape reserved keywords to use them as identifiers
+   |
+LL |     loop { break 'label: r#loop { break 'label 42; }; }
+   |                          ^^^^^^
+
+error: expected type, found keyword `loop`
+  --> $DIR/lifetime_starts_expressions.rs:6:26
+   |
+LL |     loop { break 'label: loop { break 'label 42; }; }
+   |                        - ^^^^ expected type
+   |                        |
+   |                        help: maybe write a path separator here: `::`
+   |
+   = note: `#![feature(type_ascription)]` lets you annotate an expression with a type: `<expr>: <type>`
+
+error: aborting due to 2 previous errors
+