about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/parser/ascii-only-character-escape.rs (renamed from src/test/parse-fail/ascii-only-character-escape.rs)0
-rw-r--r--src/test/ui/parser/ascii-only-character-escape.stderr20
-rw-r--r--src/test/ui/parser/assoc-oddities-1.rs (renamed from src/test/parse-fail/assoc-oddities-1.rs)0
-rw-r--r--src/test/ui/parser/assoc-oddities-1.stderr8
-rw-r--r--src/test/ui/parser/assoc-oddities-2.rs (renamed from src/test/parse-fail/assoc-oddities-2.rs)0
-rw-r--r--src/test/ui/parser/assoc-oddities-2.stderr8
-rw-r--r--src/test/ui/parser/associated-types-project-from-hrtb-explicit.rs (renamed from src/test/parse-fail/associated-types-project-from-hrtb-explicit.rs)0
-rw-r--r--src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr14
-rw-r--r--src/test/ui/parser/attr-bad-meta-2.rs (renamed from src/test/parse-fail/attr-bad-meta-2.rs)0
-rw-r--r--src/test/ui/parser/attr-bad-meta-2.stderr8
-rw-r--r--src/test/ui/parser/attr-bad-meta-3.rs (renamed from src/test/parse-fail/attr-bad-meta-3.rs)0
-rw-r--r--src/test/ui/parser/attr-bad-meta-3.stderr8
-rw-r--r--src/test/ui/parser/attr-bad-meta.rs (renamed from src/test/parse-fail/attr-bad-meta.rs)0
-rw-r--r--src/test/ui/parser/attr-bad-meta.stderr8
-rw-r--r--src/test/ui/parser/attr-before-eof.rs (renamed from src/test/parse-fail/attr-before-eof.rs)0
-rw-r--r--src/test/ui/parser/attr-before-eof.stderr8
-rw-r--r--src/test/ui/parser/attr-dangling-in-fn.rs (renamed from src/test/parse-fail/attr-dangling-in-fn.rs)0
-rw-r--r--src/test/ui/parser/attr-dangling-in-fn.stderr8
-rw-r--r--src/test/ui/parser/attr-dangling-in-mod.rs (renamed from src/test/parse-fail/attr-dangling-in-mod.rs)0
-rw-r--r--src/test/ui/parser/attr-dangling-in-mod.stderr8
-rw-r--r--src/test/ui/parser/attr.rs (renamed from src/test/parse-fail/attr.rs)0
-rw-r--r--src/test/ui/parser/attr.stderr10
-rw-r--r--src/test/ui/parser/attrs-after-extern-mod.rs (renamed from src/test/parse-fail/attrs-after-extern-mod.rs)0
-rw-r--r--src/test/ui/parser/attrs-after-extern-mod.stderr8
-rw-r--r--src/test/ui/parser/bad-char-literals.rs (renamed from src/test/parse-fail/bad-char-literals.rs)0
-rw-r--r--src/test/ui/parser/bad-char-literals.stderr28
-rw-r--r--src/test/ui/parser/bad-lit-suffixes.rs (renamed from src/test/parse-fail/bad-lit-suffixes.rs)0
-rw-r--r--src/test/ui/parser/bad-lit-suffixes.stderr114
-rw-r--r--src/test/ui/parser/bad-match.rs (renamed from src/test/parse-fail/bad-match.rs)0
-rw-r--r--src/test/ui/parser/bad-match.stderr8
-rw-r--r--src/test/ui/parser/bad-name.rs (renamed from src/test/parse-fail/bad-name.rs)0
-rw-r--r--src/test/ui/parser/bad-name.stderr8
-rw-r--r--src/test/ui/parser/bad-pointer-type.rs (renamed from src/test/parse-fail/bad-pointer-type.rs)0
-rw-r--r--src/test/ui/parser/bad-pointer-type.stderr8
-rw-r--r--src/test/ui/parser/bad-value-ident-false.rs (renamed from src/test/parse-fail/bad-value-ident-false.rs)0
-rw-r--r--src/test/ui/parser/bad-value-ident-false.stderr8
-rw-r--r--src/test/ui/parser/bad-value-ident-true.rs (renamed from src/test/parse-fail/bad-value-ident-true.rs)0
-rw-r--r--src/test/ui/parser/bad-value-ident-true.stderr8
-rw-r--r--src/test/ui/parser/better-expected.rs (renamed from src/test/parse-fail/better-expected.rs)0
-rw-r--r--src/test/ui/parser/better-expected.stderr10
-rw-r--r--src/test/ui/parser/bind-struct-early-modifiers.rs (renamed from src/test/parse-fail/bind-struct-early-modifiers.rs)0
-rw-r--r--src/test/ui/parser/bind-struct-early-modifiers.stderr8
-rw-r--r--src/test/ui/parser/bound-single-question-mark.rs (renamed from src/test/parse-fail/bound-single-question-mark.rs)0
-rw-r--r--src/test/ui/parser/bound-single-question-mark.stderr8
-rw-r--r--src/test/ui/parser/bounds-lifetime-1.rs (renamed from src/test/parse-fail/bounds-lifetime-1.rs)0
-rw-r--r--src/test/ui/parser/bounds-lifetime-1.stderr8
-rw-r--r--src/test/ui/parser/bounds-lifetime-2.rs (renamed from src/test/parse-fail/bounds-lifetime-2.rs)0
-rw-r--r--src/test/ui/parser/bounds-lifetime-2.stderr8
-rw-r--r--src/test/ui/parser/bounds-lifetime-where-1.rs (renamed from src/test/parse-fail/bounds-lifetime-where-1.rs)0
-rw-r--r--src/test/ui/parser/bounds-lifetime-where-1.stderr8
-rw-r--r--src/test/ui/parser/bounds-lifetime-where.rs (renamed from src/test/parse-fail/bounds-lifetime-where.rs)0
-rw-r--r--src/test/ui/parser/bounds-lifetime-where.stderr8
-rw-r--r--src/test/ui/parser/bounds-lifetime.rs (renamed from src/test/parse-fail/bounds-lifetime.rs)0
-rw-r--r--src/test/ui/parser/bounds-lifetime.stderr8
-rw-r--r--src/test/ui/parser/bounds-type-where.rs (renamed from src/test/parse-fail/bounds-type-where.rs)0
-rw-r--r--src/test/ui/parser/bounds-type-where.stderr8
-rw-r--r--src/test/ui/parser/bounds-type.rs (renamed from src/test/parse-fail/bounds-type.rs)0
-rw-r--r--src/test/ui/parser/bounds-type.stderr8
-rw-r--r--src/test/ui/parser/brace-after-qualified-path-in-match.rs (renamed from src/test/parse-fail/brace-after-qualified-path-in-match.rs)0
-rw-r--r--src/test/ui/parser/brace-after-qualified-path-in-match.stderr8
-rw-r--r--src/test/ui/parser/byte-literals.rs (renamed from src/test/parse-fail/byte-literals.rs)0
-rw-r--r--src/test/ui/parser/byte-literals.stderr44
-rw-r--r--src/test/ui/parser/byte-string-literals.rs (renamed from src/test/parse-fail/byte-string-literals.rs)0
-rw-r--r--src/test/ui/parser/byte-string-literals.stderr34
-rw-r--r--src/test/ui/parser/circular_modules_hello.rs (renamed from src/test/parse-fail/circular_modules_hello.rs)0
-rw-r--r--src/test/ui/parser/circular_modules_main.rs (renamed from src/test/parse-fail/circular_modules_main.rs)0
-rw-r--r--src/test/ui/parser/circular_modules_main.stderr8
-rw-r--r--src/test/ui/parser/class-implements-bad-trait.rs (renamed from src/test/parse-fail/class-implements-bad-trait.rs)0
-rw-r--r--src/test/ui/parser/class-implements-bad-trait.stderr8
-rw-r--r--src/test/ui/parser/closure-return-syntax.rs (renamed from src/test/parse-fail/closure-return-syntax.rs)0
-rw-r--r--src/test/ui/parser/closure-return-syntax.stderr8
-rw-r--r--src/test/ui/parser/column-offset-1-based.rs (renamed from src/test/parse-fail/column-offset-1-based.rs)0
-rw-r--r--src/test/ui/parser/column-offset-1-based.stderr8
-rw-r--r--src/test/ui/parser/default.rs (renamed from src/test/parse-fail/default.rs)0
-rw-r--r--src/test/ui/parser/default.stderr8
-rw-r--r--src/test/ui/parser/do-catch-suggests-try.rs (renamed from src/test/parse-fail/do-catch-suggests-try.rs)0
-rw-r--r--src/test/ui/parser/do-catch-suggests-try.stderr10
-rw-r--r--src/test/ui/parser/doc-after-struct-field.rs (renamed from src/test/parse-fail/doc-after-struct-field.rs)0
-rw-r--r--src/test/ui/parser/doc-after-struct-field.stderr19
-rw-r--r--src/test/ui/parser/doc-before-attr.rs (renamed from src/test/parse-fail/doc-before-attr.rs)0
-rw-r--r--src/test/ui/parser/doc-before-attr.stderr8
-rw-r--r--src/test/ui/parser/doc-before-eof.rs (renamed from src/test/parse-fail/doc-before-eof.rs)0
-rw-r--r--src/test/ui/parser/doc-before-eof.stderr8
-rw-r--r--src/test/ui/parser/doc-before-extern-rbrace.rs (renamed from src/test/parse-fail/doc-before-extern-rbrace.rs)0
-rw-r--r--src/test/ui/parser/doc-before-extern-rbrace.stderr8
-rw-r--r--src/test/ui/parser/doc-before-fn-rbrace.rs (renamed from src/test/parse-fail/doc-before-fn-rbrace.rs)0
-rw-r--r--src/test/ui/parser/doc-before-fn-rbrace.stderr11
-rw-r--r--src/test/ui/parser/doc-before-identifier.rs (renamed from src/test/parse-fail/doc-before-identifier.rs)0
-rw-r--r--src/test/ui/parser/doc-before-identifier.stderr8
-rw-r--r--src/test/ui/parser/doc-before-mod-rbrace.rs (renamed from src/test/parse-fail/doc-before-mod-rbrace.rs)0
-rw-r--r--src/test/ui/parser/doc-before-mod-rbrace.stderr13
-rw-r--r--src/test/ui/parser/doc-before-rbrace.rs (renamed from src/test/parse-fail/doc-before-rbrace.rs)0
-rw-r--r--src/test/ui/parser/doc-before-rbrace.stderr11
-rw-r--r--src/test/ui/parser/doc-before-semi.rs (renamed from src/test/parse-fail/doc-before-semi.rs)0
-rw-r--r--src/test/ui/parser/doc-before-semi.stderr11
-rw-r--r--src/test/ui/parser/doc-before-struct-rbrace-1.rs (renamed from src/test/parse-fail/doc-before-struct-rbrace-1.rs)0
-rw-r--r--src/test/ui/parser/doc-before-struct-rbrace-1.stderr11
-rw-r--r--src/test/ui/parser/doc-before-struct-rbrace-2.rs (renamed from src/test/parse-fail/doc-before-struct-rbrace-2.rs)0
-rw-r--r--src/test/ui/parser/doc-before-struct-rbrace-2.stderr11
-rw-r--r--src/test/ui/parser/duplicate-visibility.rs (renamed from src/test/parse-fail/duplicate-visibility.rs)0
-rw-r--r--src/test/ui/parser/duplicate-visibility.stderr8
-rw-r--r--src/test/ui/parser/empty-impl-semicolon.rs (renamed from src/test/parse-fail/empty-impl-semicolon.rs)0
-rw-r--r--src/test/ui/parser/empty-impl-semicolon.stderr8
-rw-r--r--src/test/ui/parser/extern-crate-unexpected-token.rs (renamed from src/test/parse-fail/extern-crate-unexpected-token.rs)0
-rw-r--r--src/test/ui/parser/extern-crate-unexpected-token.stderr8
-rw-r--r--src/test/ui/parser/extern-expected-fn-or-brace.rs (renamed from src/test/parse-fail/extern-expected-fn-or-brace.rs)0
-rw-r--r--src/test/ui/parser/extern-expected-fn-or-brace.stderr8
-rw-r--r--src/test/ui/parser/extern-foreign-crate.rs (renamed from src/test/parse-fail/extern-foreign-crate.rs)0
-rw-r--r--src/test/ui/parser/extern-foreign-crate.stderr8
-rw-r--r--src/test/ui/parser/extern-no-fn.rs (renamed from src/test/parse-fail/extern-no-fn.rs)0
-rw-r--r--src/test/ui/parser/extern-no-fn.stderr10
-rw-r--r--src/test/ui/parser/impl-qpath.rs (renamed from src/test/parse-fail/impl-qpath.rs)0
-rw-r--r--src/test/ui/parser/impl-qpath.stderr8
-rw-r--r--src/test/ui/parser/import-from-path.rs (renamed from src/test/parse-fail/import-from-path.rs)0
-rw-r--r--src/test/ui/parser/import-from-path.stderr8
-rw-r--r--src/test/ui/parser/import-from-rename.rs (renamed from src/test/parse-fail/import-from-rename.rs)0
-rw-r--r--src/test/ui/parser/import-from-rename.stderr8
-rw-r--r--src/test/ui/parser/import-glob-path.rs (renamed from src/test/parse-fail/import-glob-path.rs)0
-rw-r--r--src/test/ui/parser/import-glob-path.stderr8
-rw-r--r--src/test/ui/parser/import-glob-rename.rs (renamed from src/test/parse-fail/import-glob-rename.rs)0
-rw-r--r--src/test/ui/parser/import-glob-rename.stderr8
-rw-r--r--src/test/ui/parser/inner-attr-after-doc-comment.rs (renamed from src/test/parse-fail/inner-attr-after-doc-comment.rs)0
-rw-r--r--src/test/ui/parser/inner-attr-after-doc-comment.stderr10
-rw-r--r--src/test/ui/parser/inner-attr.rs (renamed from src/test/parse-fail/inner-attr.rs)0
-rw-r--r--src/test/ui/parser/inner-attr.stderr10
-rw-r--r--src/test/ui/parser/int-literal-too-large-span.rs (renamed from src/test/parse-fail/int-literal-too-large-span.rs)0
-rw-r--r--src/test/ui/parser/int-literal-too-large-span.stderr8
-rw-r--r--src/test/ui/parser/issue-10392-2.rs (renamed from src/test/parse-fail/issue-10392-2.rs)0
-rw-r--r--src/test/ui/parser/issue-10392-2.stderr12
-rw-r--r--src/test/ui/parser/issue-10392.rs (renamed from src/test/parse-fail/issue-10392.rs)0
-rw-r--r--src/test/ui/parser/issue-10392.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-enum.rs (renamed from src/test/parse-fail/issue-14303-enum.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-enum.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-fn-def.rs (renamed from src/test/parse-fail/issue-14303-fn-def.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-fn-def.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-fncall.rs (renamed from src/test/parse-fail/issue-14303-fncall.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-fncall.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-impl.rs (renamed from src/test/parse-fail/issue-14303-impl.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-impl.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-path.rs (renamed from src/test/parse-fail/issue-14303-path.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-path.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-struct.rs (renamed from src/test/parse-fail/issue-14303-struct.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-struct.stderr8
-rw-r--r--src/test/ui/parser/issue-14303-trait.rs (renamed from src/test/parse-fail/issue-14303-trait.rs)0
-rw-r--r--src/test/ui/parser/issue-14303-trait.stderr8
-rw-r--r--src/test/ui/parser/issue-15914.rs (renamed from src/test/parse-fail/issue-15914.rs)0
-rw-r--r--src/test/ui/parser/issue-15914.stderr8
-rw-r--r--src/test/ui/parser/issue-1655.rs (renamed from src/test/parse-fail/issue-1655.rs)0
-rw-r--r--src/test/ui/parser/issue-1655.stderr8
-rw-r--r--src/test/ui/parser/issue-17383.rs (renamed from src/test/parse-fail/issue-17383.rs)0
-rw-r--r--src/test/ui/parser/issue-17383.stderr8
-rw-r--r--src/test/ui/parser/issue-17718-const-mut.rs (renamed from src/test/parse-fail/issue-17718-const-mut.rs)0
-rw-r--r--src/test/ui/parser/issue-17718-const-mut.stderr10
-rw-r--r--src/test/ui/parser/issue-17904-2.rs (renamed from src/test/parse-fail/issue-17904-2.rs)0
-rw-r--r--src/test/ui/parser/issue-17904-2.stderr8
-rw-r--r--src/test/ui/parser/issue-17904.rs (renamed from src/test/parse-fail/issue-17904.rs)0
-rw-r--r--src/test/ui/parser/issue-17904.stderr8
-rw-r--r--src/test/ui/parser/issue-1802-1.rs (renamed from src/test/parse-fail/issue-1802-1.rs)0
-rw-r--r--src/test/ui/parser/issue-1802-1.stderr8
-rw-r--r--src/test/ui/parser/issue-1802-2.rs (renamed from src/test/parse-fail/issue-1802-2.rs)0
-rw-r--r--src/test/ui/parser/issue-1802-2.stderr8
-rw-r--r--src/test/ui/parser/issue-19096.rs (renamed from src/test/parse-fail/issue-19096.rs)0
-rw-r--r--src/test/ui/parser/issue-19096.stderr8
-rw-r--r--src/test/ui/parser/issue-19398.rs (renamed from src/test/parse-fail/issue-19398.rs)0
-rw-r--r--src/test/ui/parser/issue-19398.stderr8
-rw-r--r--src/test/ui/parser/issue-20711-2.rs (renamed from src/test/parse-fail/issue-20711-2.rs)0
-rw-r--r--src/test/ui/parser/issue-20711-2.stderr10
-rw-r--r--src/test/ui/parser/issue-20711.rs (renamed from src/test/parse-fail/issue-20711.rs)0
-rw-r--r--src/test/ui/parser/issue-20711.stderr10
-rw-r--r--src/test/ui/parser/issue-21153.rs (renamed from src/test/parse-fail/issue-21153.rs)0
-rw-r--r--src/test/ui/parser/issue-21153.stderr10
-rw-r--r--src/test/ui/parser/issue-22647.rs (renamed from src/test/parse-fail/issue-22647.rs)0
-rw-r--r--src/test/ui/parser/issue-22647.stderr8
-rw-r--r--src/test/ui/parser/issue-22712.rs (renamed from src/test/parse-fail/issue-22712.rs)0
-rw-r--r--src/test/ui/parser/issue-22712.stderr8
-rw-r--r--src/test/ui/parser/issue-2354-1.rs (renamed from src/test/parse-fail/issue-2354-1.rs)0
-rw-r--r--src/test/ui/parser/issue-2354-1.stderr8
-rw-r--r--src/test/ui/parser/issue-23620-invalid-escapes.rs (renamed from src/test/parse-fail/issue-23620-invalid-escapes.rs)0
-rw-r--r--src/test/ui/parser/issue-23620-invalid-escapes.stderr122
-rw-r--r--src/test/ui/parser/issue-24197.rs (renamed from src/test/parse-fail/issue-24197.rs)0
-rw-r--r--src/test/ui/parser/issue-24197.stderr8
-rw-r--r--src/test/ui/parser/issue-24375.rs (renamed from src/test/parse-fail/issue-24375.rs)0
-rw-r--r--src/test/ui/parser/issue-24375.stderr8
-rw-r--r--src/test/ui/parser/issue-24780.rs (renamed from src/test/parse-fail/issue-24780.rs)0
-rw-r--r--src/test/ui/parser/issue-24780.stderr8
-rw-r--r--src/test/ui/parser/issue-27255.rs (renamed from src/test/parse-fail/issue-27255.rs)0
-rw-r--r--src/test/ui/parser/issue-27255.stderr8
-rw-r--r--src/test/ui/parser/issue-30318.rs (renamed from src/test/parse-fail/issue-30318.rs)0
-rw-r--r--src/test/ui/parser/issue-30318.stderr10
-rw-r--r--src/test/ui/parser/issue-3036.rs (renamed from src/test/parse-fail/issue-3036.rs)0
-rw-r--r--src/test/ui/parser/issue-3036.stderr10
-rw-r--r--src/test/ui/parser/issue-32214.rs (renamed from src/test/parse-fail/issue-32214.rs)0
-rw-r--r--src/test/ui/parser/issue-32214.stderr8
-rw-r--r--src/test/ui/parser/issue-32446.rs (renamed from src/test/parse-fail/issue-32446.rs)0
-rw-r--r--src/test/ui/parser/issue-32446.stderr8
-rw-r--r--src/test/ui/parser/issue-32501.rs (renamed from src/test/parse-fail/issue-32501.rs)0
-rw-r--r--src/test/ui/parser/issue-32501.stderr8
-rw-r--r--src/test/ui/parser/issue-32505.rs (renamed from src/test/parse-fail/issue-32505.rs)0
-rw-r--r--src/test/ui/parser/issue-32505.stderr8
-rw-r--r--src/test/ui/parser/issue-33262.rs (renamed from src/test/parse-fail/issue-33262.rs)0
-rw-r--r--src/test/ui/parser/issue-33262.stderr8
-rw-r--r--src/test/ui/parser/issue-33413.rs (renamed from src/test/parse-fail/issue-33413.rs)0
-rw-r--r--src/test/ui/parser/issue-33413.stderr8
-rw-r--r--src/test/ui/parser/issue-33455.rs (renamed from src/test/parse-fail/issue-33455.rs)0
-rw-r--r--src/test/ui/parser/issue-33455.stderr8
-rw-r--r--src/test/ui/parser/issue-33569.rs (renamed from src/test/parse-fail/issue-33569.rs)0
-rw-r--r--src/test/ui/parser/issue-33569.stderr20
-rw-r--r--src/test/ui/parser/issue-37113.rs (renamed from src/test/parse-fail/issue-37113.rs)0
-rw-r--r--src/test/ui/parser/issue-37113.stderr11
-rw-r--r--src/test/ui/parser/issue-37234.rs (renamed from src/test/parse-fail/issue-37234.rs)0
-rw-r--r--src/test/ui/parser/issue-37234.stderr11
-rw-r--r--src/test/ui/parser/issue-43692.rs (renamed from src/test/parse-fail/issue-43692.rs)0
-rw-r--r--src/test/ui/parser/issue-43692.stderr8
-rw-r--r--src/test/ui/parser/issue-5544-a.rs (renamed from src/test/parse-fail/issue-5544-a.rs)0
-rw-r--r--src/test/ui/parser/issue-5544-a.stderr8
-rw-r--r--src/test/ui/parser/issue-5544-b.rs (renamed from src/test/parse-fail/issue-5544-b.rs)0
-rw-r--r--src/test/ui/parser/issue-5544-b.stderr8
-rw-r--r--src/test/ui/parser/issue-5806.rs (renamed from src/test/parse-fail/issue-5806.rs)0
-rw-r--r--src/test/ui/parser/issue-6610.rs (renamed from src/test/parse-fail/issue-6610.rs)0
-rw-r--r--src/test/ui/parser/issue-6610.stderr8
-rw-r--r--src/test/ui/parser/issue-8537.rs (renamed from src/test/parse-fail/issue-8537.rs)0
-rw-r--r--src/test/ui/parser/issue-8537.stderr11
-rw-r--r--src/test/ui/parser/keyword-abstract.rs (renamed from src/test/parse-fail/keyword-abstract.rs)0
-rw-r--r--src/test/ui/parser/keyword-abstract.stderr8
-rw-r--r--src/test/ui/parser/keyword-as-as-identifier.rs (renamed from src/test/parse-fail/keyword-as-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-as-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-box-as-identifier.rs (renamed from src/test/parse-fail/keyword-box-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-box-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-break-as-identifier.rs (renamed from src/test/parse-fail/keyword-break-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-break-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-const-as-identifier.rs (renamed from src/test/parse-fail/keyword-const-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-const-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-continue-as-identifier.rs (renamed from src/test/parse-fail/keyword-continue-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-continue-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-else-as-identifier.rs (renamed from src/test/parse-fail/keyword-else-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-else-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-enum-as-identifier.rs (renamed from src/test/parse-fail/keyword-enum-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-enum-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-final.rs (renamed from src/test/parse-fail/keyword-final.rs)0
-rw-r--r--src/test/ui/parser/keyword-final.stderr8
-rw-r--r--src/test/ui/parser/keyword-fn-as-identifier.rs (renamed from src/test/parse-fail/keyword-fn-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-fn-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-for-as-identifier.rs (renamed from src/test/parse-fail/keyword-for-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-for-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-if-as-identifier.rs (renamed from src/test/parse-fail/keyword-if-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-if-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-impl-as-identifier.rs (renamed from src/test/parse-fail/keyword-impl-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-impl-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-in-as-identifier.rs (renamed from src/test/parse-fail/keyword-in-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-in-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-let-as-identifier.rs (renamed from src/test/parse-fail/keyword-let-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-let-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-loop-as-identifier.rs (renamed from src/test/parse-fail/keyword-loop-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-loop-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-match-as-identifier.rs (renamed from src/test/parse-fail/keyword-match-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-match-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-mod-as-identifier.rs (renamed from src/test/parse-fail/keyword-mod-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-mod-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-move-as-identifier.rs (renamed from src/test/parse-fail/keyword-move-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-move-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-mut-as-identifier.rs (renamed from src/test/parse-fail/keyword-mut-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-mut-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-override.rs (renamed from src/test/parse-fail/keyword-override.rs)0
-rw-r--r--src/test/ui/parser/keyword-override.stderr8
-rw-r--r--src/test/ui/parser/keyword-pub-as-identifier.rs (renamed from src/test/parse-fail/keyword-pub-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-pub-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-ref-as-identifier.rs (renamed from src/test/parse-fail/keyword-ref-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-ref-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-return-as-identifier.rs (renamed from src/test/parse-fail/keyword-return-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-return-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-static-as-identifier.rs (renamed from src/test/parse-fail/keyword-static-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-static-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-struct-as-identifier.rs (renamed from src/test/parse-fail/keyword-struct-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-struct-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-trait-as-identifier.rs (renamed from src/test/parse-fail/keyword-trait-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-trait-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-try-as-identifier-edition2018.rs (renamed from src/test/parse-fail/keyword-try-as-identifier-edition2018.rs)0
-rw-r--r--src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr8
-rw-r--r--src/test/ui/parser/keyword-type-as-identifier.rs (renamed from src/test/parse-fail/keyword-type-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-type-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-typeof.rs (renamed from src/test/parse-fail/keyword-typeof.rs)0
-rw-r--r--src/test/ui/parser/keyword-typeof.stderr8
-rw-r--r--src/test/ui/parser/keyword-unsafe-as-identifier.rs (renamed from src/test/parse-fail/keyword-unsafe-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-unsafe-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-use-as-identifier.rs (renamed from src/test/parse-fail/keyword-use-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-use-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-where-as-identifier.rs (renamed from src/test/parse-fail/keyword-where-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-where-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword-while-as-identifier.rs (renamed from src/test/parse-fail/keyword-while-as-identifier.rs)0
-rw-r--r--src/test/ui/parser/keyword-while-as-identifier.stderr8
-rw-r--r--src/test/ui/parser/keyword.rs (renamed from src/test/parse-fail/keyword.rs)0
-rw-r--r--src/test/ui/parser/keyword.stderr8
-rw-r--r--src/test/ui/parser/keywords-followed-by-double-colon.rs (renamed from src/test/parse-fail/keywords-followed-by-double-colon.rs)0
-rw-r--r--src/test/ui/parser/keywords-followed-by-double-colon.stderr14
-rw-r--r--src/test/ui/parser/lex-bad-binary-literal.rs (renamed from src/test/parse-fail/lex-bad-binary-literal.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-binary-literal.stderr56
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-1.rs (renamed from src/test/parse-fail/lex-bad-char-literals-1.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-1.stderr26
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-2.rs (renamed from src/test/parse-fail/lex-bad-char-literals-2.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-2.stderr8
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-3.rs (renamed from src/test/parse-fail/lex-bad-char-literals-3.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-3.stderr12
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-4.rs (renamed from src/test/parse-fail/lex-bad-char-literals-4.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-4.stderr8
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-5.rs (renamed from src/test/parse-fail/lex-bad-char-literals-5.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-char-literals-5.stderr12
-rw-r--r--src/test/ui/parser/lex-bad-numeric-literals.rs (renamed from src/test/parse-fail/lex-bad-numeric-literals.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-numeric-literals.stderr140
-rw-r--r--src/test/ui/parser/lex-bad-octal-literal.rs (renamed from src/test/parse-fail/lex-bad-octal-literal.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-octal-literal.stderr14
-rw-r--r--src/test/ui/parser/lex-bad-token.rs (renamed from src/test/parse-fail/lex-bad-token.rs)0
-rw-r--r--src/test/ui/parser/lex-bad-token.stderr8
-rw-r--r--src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.rs (renamed from src/test/parse-fail/lex-bare-cr-string-literal-doc-comment.rs)0
-rw-r--r--src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.stderr50
-rw-r--r--src/test/ui/parser/lex-stray-backslash.rs (renamed from src/test/parse-fail/lex-stray-backslash.rs)0
-rw-r--r--src/test/ui/parser/lex-stray-backslash.stderr8
-rw-r--r--src/test/ui/parser/lifetime-in-pattern.rs (renamed from src/test/parse-fail/lifetime-in-pattern.rs)0
-rw-r--r--src/test/ui/parser/lifetime-in-pattern.stderr8
-rw-r--r--src/test/ui/parser/lifetime-semicolon.rs (renamed from src/test/parse-fail/lifetime-semicolon.rs)0
-rw-r--r--src/test/ui/parser/lifetime-semicolon.stderr8
-rw-r--r--src/test/ui/parser/macro-bad-delimiter-ident.rs (renamed from src/test/parse-fail/macro-bad-delimiter-ident.rs)0
-rw-r--r--src/test/ui/parser/macro-bad-delimiter-ident.stderr8
-rw-r--r--src/test/ui/parser/macro-doc-comments-1.rs (renamed from src/test/parse-fail/macro-doc-comments-1.rs)0
-rw-r--r--src/test/ui/parser/macro-doc-comments-1.stderr8
-rw-r--r--src/test/ui/parser/macro-doc-comments-2.rs (renamed from src/test/parse-fail/macro-doc-comments-2.rs)0
-rw-r--r--src/test/ui/parser/macro-doc-comments-2.stderr8
-rw-r--r--src/test/ui/parser/macro-keyword.rs (renamed from src/test/parse-fail/macro-keyword.rs)0
-rw-r--r--src/test/ui/parser/macro-keyword.stderr8
-rw-r--r--src/test/ui/parser/macro-mismatched-delim-brace-paren.rs (renamed from src/test/parse-fail/macro-mismatched-delim-brace-paren.rs)0
-rw-r--r--src/test/ui/parser/macro-mismatched-delim-brace-paren.stderr11
-rw-r--r--src/test/ui/parser/macro-mismatched-delim-paren-brace.rs (renamed from src/test/parse-fail/macro-mismatched-delim-paren-brace.rs)0
-rw-r--r--src/test/ui/parser/macro-mismatched-delim-paren-brace.stderr17
-rw-r--r--src/test/ui/parser/macro-repeat.rs (renamed from src/test/parse-fail/macro-repeat.rs)0
-rw-r--r--src/test/ui/parser/macro-repeat.stderr8
-rw-r--r--src/test/ui/parser/macros-no-semicolon-items.rs (renamed from src/test/parse-fail/macros-no-semicolon-items.rs)0
-rw-r--r--src/test/ui/parser/macros-no-semicolon-items.stderr8
-rw-r--r--src/test/ui/parser/macros-no-semicolon.rs (renamed from src/test/parse-fail/macros-no-semicolon.rs)0
-rw-r--r--src/test/ui/parser/macros-no-semicolon.stderr10
-rw-r--r--src/test/ui/parser/match-arrows-block-then-binop.rs (renamed from src/test/parse-fail/match-arrows-block-then-binop.rs)0
-rw-r--r--src/test/ui/parser/match-arrows-block-then-binop.stderr8
-rw-r--r--src/test/ui/parser/match-vec-invalid.rs (renamed from src/test/parse-fail/match-vec-invalid.rs)0
-rw-r--r--src/test/ui/parser/match-vec-invalid.stderr8
-rw-r--r--src/test/ui/parser/mod_file_not_exist.rs (renamed from src/test/parse-fail/mod_file_not_exist.rs)0
-rw-r--r--src/test/ui/parser/mod_file_not_exist_windows.rs (renamed from src/test/parse-fail/mod_file_not_exist_windows.rs)0
-rw-r--r--src/test/ui/parser/mod_file_with_path_attr.rs (renamed from src/test/parse-fail/mod_file_with_path_attr.rs)0
-rw-r--r--src/test/ui/parser/mod_file_with_path_attr.stderr8
-rw-r--r--src/test/ui/parser/multiline-comment-line-tracking.rs (renamed from src/test/parse-fail/multiline-comment-line-tracking.rs)0
-rw-r--r--src/test/ui/parser/multiline-comment-line-tracking.stderr8
-rw-r--r--src/test/ui/parser/multitrait.rs (renamed from src/test/parse-fail/multitrait.rs)0
-rw-r--r--src/test/ui/parser/multitrait.stderr8
-rw-r--r--src/test/ui/parser/mut-patterns.rs (renamed from src/test/parse-fail/mut-patterns.rs)0
-rw-r--r--src/test/ui/parser/mut-patterns.stderr8
-rw-r--r--src/test/ui/parser/new-unicode-escapes-1.rs (renamed from src/test/parse-fail/new-unicode-escapes-1.rs)0
-rw-r--r--src/test/ui/parser/new-unicode-escapes-1.stderr8
-rw-r--r--src/test/ui/parser/new-unicode-escapes-2.rs (renamed from src/test/parse-fail/new-unicode-escapes-2.rs)0
-rw-r--r--src/test/ui/parser/new-unicode-escapes-2.stderr8
-rw-r--r--src/test/ui/parser/new-unicode-escapes-3.rs (renamed from src/test/parse-fail/new-unicode-escapes-3.rs)0
-rw-r--r--src/test/ui/parser/new-unicode-escapes-3.stderr18
-rw-r--r--src/test/ui/parser/new-unicode-escapes-4.rs (renamed from src/test/parse-fail/new-unicode-escapes-4.rs)0
-rw-r--r--src/test/ui/parser/new-unicode-escapes-4.stderr8
-rw-r--r--src/test/ui/parser/no-binary-float-literal.rs (renamed from src/test/parse-fail/no-binary-float-literal.rs)0
-rw-r--r--src/test/ui/parser/no-binary-float-literal.stderr8
-rw-r--r--src/test/ui/parser/no-hex-float-literal.rs (renamed from src/test/parse-fail/no-hex-float-literal.rs)0
-rw-r--r--src/test/ui/parser/no-hex-float-literal.stderr8
-rw-r--r--src/test/ui/parser/no-unsafe-self.rs (renamed from src/test/parse-fail/no-unsafe-self.rs)0
-rw-r--r--src/test/ui/parser/no-unsafe-self.stderr38
-rw-r--r--src/test/ui/parser/not-a-pred.rs (renamed from src/test/parse-fail/not-a-pred.rs)0
-rw-r--r--src/test/ui/parser/not-a-pred.stderr8
-rw-r--r--src/test/ui/parser/omitted-arg-in-item-fn.rs (renamed from src/test/parse-fail/omitted-arg-in-item-fn.rs)0
-rw-r--r--src/test/ui/parser/omitted-arg-in-item-fn.stderr8
-rw-r--r--src/test/ui/parser/paamayim-nekudotayim.rs (renamed from src/test/parse-fail/paamayim-nekudotayim.rs)0
-rw-r--r--src/test/ui/parser/paamayim-nekudotayim.stderr8
-rw-r--r--src/test/ui/parser/paren-after-qualified-path-in-match.rs (renamed from src/test/parse-fail/paren-after-qualified-path-in-match.rs)0
-rw-r--r--src/test/ui/parser/paren-after-qualified-path-in-match.stderr8
-rw-r--r--src/test/ui/parser/pat-lt-bracket-1.rs (renamed from src/test/parse-fail/pat-lt-bracket-1.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-1.stderr8
-rw-r--r--src/test/ui/parser/pat-lt-bracket-2.rs (renamed from src/test/parse-fail/pat-lt-bracket-2.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-2.stderr13
-rw-r--r--src/test/ui/parser/pat-lt-bracket-3.rs (renamed from src/test/parse-fail/pat-lt-bracket-3.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-3.stderr13
-rw-r--r--src/test/ui/parser/pat-lt-bracket-4.rs (renamed from src/test/parse-fail/pat-lt-bracket-4.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-4.stderr8
-rw-r--r--src/test/ui/parser/pat-lt-bracket-5.rs (renamed from src/test/parse-fail/pat-lt-bracket-5.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-5.stderr8
-rw-r--r--src/test/ui/parser/pat-lt-bracket-6.rs (renamed from src/test/parse-fail/pat-lt-bracket-6.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-6.stderr8
-rw-r--r--src/test/ui/parser/pat-lt-bracket-7.rs (renamed from src/test/parse-fail/pat-lt-bracket-7.rs)0
-rw-r--r--src/test/ui/parser/pat-lt-bracket-7.stderr8
-rw-r--r--src/test/ui/parser/pat-ranges-1.rs (renamed from src/test/parse-fail/pat-ranges-1.rs)0
-rw-r--r--src/test/ui/parser/pat-ranges-1.stderr8
-rw-r--r--src/test/ui/parser/pat-ranges-2.rs (renamed from src/test/parse-fail/pat-ranges-2.rs)0
-rw-r--r--src/test/ui/parser/pat-ranges-2.stderr8
-rw-r--r--src/test/ui/parser/pat-ranges-3.rs (renamed from src/test/parse-fail/pat-ranges-3.rs)0
-rw-r--r--src/test/ui/parser/pat-ranges-3.stderr8
-rw-r--r--src/test/ui/parser/pat-ranges-4.rs (renamed from src/test/parse-fail/pat-ranges-4.rs)0
-rw-r--r--src/test/ui/parser/pat-ranges-4.stderr8
-rw-r--r--src/test/ui/parser/pat-ref-enum.rs (renamed from src/test/parse-fail/pat-ref-enum.rs)0
-rw-r--r--src/test/ui/parser/pat-ref-enum.stderr8
-rw-r--r--src/test/ui/parser/pat-tuple-1.rs (renamed from src/test/parse-fail/pat-tuple-1.rs)0
-rw-r--r--src/test/ui/parser/pat-tuple-1.stderr8
-rw-r--r--src/test/ui/parser/pat-tuple-2.rs (renamed from src/test/parse-fail/pat-tuple-2.rs)0
-rw-r--r--src/test/ui/parser/pat-tuple-2.stderr8
-rw-r--r--src/test/ui/parser/pat-tuple-3.rs (renamed from src/test/parse-fail/pat-tuple-3.rs)0
-rw-r--r--src/test/ui/parser/pat-tuple-3.stderr8
-rw-r--r--src/test/ui/parser/pat-tuple-4.rs (renamed from src/test/parse-fail/pat-tuple-4.rs)0
-rw-r--r--src/test/ui/parser/pat-tuple-4.stderr8
-rw-r--r--src/test/ui/parser/pat-tuple-5.rs (renamed from src/test/parse-fail/pat-tuple-5.rs)0
-rw-r--r--src/test/ui/parser/pat-tuple-5.stderr8
-rw-r--r--src/test/ui/parser/pub-item-macro.rs (renamed from src/test/parse-fail/pub-item-macro.rs)0
-rw-r--r--src/test/ui/parser/pub-item-macro.stderr13
-rw-r--r--src/test/ui/parser/pub-method-macro.rs (renamed from src/test/parse-fail/pub-method-macro.rs)0
-rw-r--r--src/test/ui/parser/pub-method-macro.stderr10
-rw-r--r--src/test/ui/parser/range-3.rs (renamed from src/test/parse-fail/range-3.rs)0
-rw-r--r--src/test/ui/parser/range-3.stderr8
-rw-r--r--src/test/ui/parser/range-4.rs (renamed from src/test/parse-fail/range-4.rs)0
-rw-r--r--src/test/ui/parser/range-4.stderr8
-rw-r--r--src/test/ui/parser/range_inclusive.rs (renamed from src/test/parse-fail/range_inclusive.rs)0
-rw-r--r--src/test/ui/parser/range_inclusive.stderr11
-rw-r--r--src/test/ui/parser/range_inclusive_dotdotdot.rs (renamed from src/test/parse-fail/range_inclusive_dotdotdot.rs)0
-rw-r--r--src/test/ui/parser/range_inclusive_dotdotdot.stderr58
-rw-r--r--src/test/ui/parser/raw-byte-string-eof.rs (renamed from src/test/parse-fail/raw-byte-string-eof.rs)0
-rw-r--r--src/test/ui/parser/raw-byte-string-eof.stderr10
-rw-r--r--src/test/ui/parser/raw-byte-string-literals.rs (renamed from src/test/parse-fail/raw-byte-string-literals.rs)0
-rw-r--r--src/test/ui/parser/raw-byte-string-literals.stderr14
-rw-r--r--src/test/ui/parser/raw-str-delim.rs (renamed from src/test/parse-fail/raw-str-delim.rs)0
-rw-r--r--src/test/ui/parser/raw-str-delim.stderr8
-rw-r--r--src/test/ui/parser/raw-str-unbalanced.rs (renamed from src/test/parse-fail/raw-str-unbalanced.rs)0
-rw-r--r--src/test/ui/parser/raw-str-unbalanced.stderr8
-rw-r--r--src/test/ui/parser/raw-str-unterminated.rs (renamed from src/test/parse-fail/raw-str-unterminated.rs)0
-rw-r--r--src/test/ui/parser/raw-str-unterminated.stderr10
-rw-r--r--src/test/ui/parser/recover-enum.rs (renamed from src/test/parse-fail/recover-enum.rs)0
-rw-r--r--src/test/ui/parser/recover-enum.stderr10
-rw-r--r--src/test/ui/parser/recover-enum2.rs (renamed from src/test/parse-fail/recover-enum2.rs)0
-rw-r--r--src/test/ui/parser/recover-enum2.stderr26
-rw-r--r--src/test/ui/parser/recover-struct.rs (renamed from src/test/parse-fail/recover-struct.rs)0
-rw-r--r--src/test/ui/parser/recover-struct.stderr10
-rw-r--r--src/test/ui/parser/regions-out-of-scope-slice.rs (renamed from src/test/parse-fail/regions-out-of-scope-slice.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-closure-lifetime.rs (renamed from src/test/parse-fail/removed-syntax-closure-lifetime.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-closure-lifetime.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-enum-newtype.rs (renamed from src/test/parse-fail/removed-syntax-enum-newtype.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-enum-newtype.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-extern-const.rs (renamed from src/test/parse-fail/removed-syntax-extern-const.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-extern-const.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-field-let.rs (renamed from src/test/parse-fail/removed-syntax-field-let.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-field-let.stderr14
-rw-r--r--src/test/ui/parser/removed-syntax-field-semicolon.rs (renamed from src/test/parse-fail/removed-syntax-field-semicolon.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-field-semicolon.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-fixed-vec.rs (renamed from src/test/parse-fail/removed-syntax-fixed-vec.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-fixed-vec.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-fn-sigil.rs (renamed from src/test/parse-fail/removed-syntax-fn-sigil.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-fn-sigil.stderr10
-rw-r--r--src/test/ui/parser/removed-syntax-mode.rs (renamed from src/test/parse-fail/removed-syntax-mode.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-mode.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-mut-vec-expr.rs (renamed from src/test/parse-fail/removed-syntax-mut-vec-expr.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-mut-vec-expr.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-mut-vec-ty.rs (renamed from src/test/parse-fail/removed-syntax-mut-vec-ty.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-mut-vec-ty.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-ptr-lifetime.rs (renamed from src/test/parse-fail/removed-syntax-ptr-lifetime.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-ptr-lifetime.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-record.rs (renamed from src/test/parse-fail/removed-syntax-record.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-record.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-static-fn.rs (renamed from src/test/parse-fail/removed-syntax-static-fn.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-static-fn.stderr10
-rw-r--r--src/test/ui/parser/removed-syntax-uniq-mut-expr.rs (renamed from src/test/parse-fail/removed-syntax-uniq-mut-expr.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-uniq-mut-expr.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-uniq-mut-ty.rs (renamed from src/test/parse-fail/removed-syntax-uniq-mut-ty.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-uniq-mut-ty.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-with-1.rs (renamed from src/test/parse-fail/removed-syntax-with-1.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-with-1.stderr8
-rw-r--r--src/test/ui/parser/removed-syntax-with-2.rs (renamed from src/test/parse-fail/removed-syntax-with-2.rs)0
-rw-r--r--src/test/ui/parser/removed-syntax-with-2.stderr8
-rw-r--r--src/test/ui/parser/require-parens-for-chained-comparison.rs (renamed from src/test/parse-fail/require-parens-for-chained-comparison.rs)0
-rw-r--r--src/test/ui/parser/require-parens-for-chained-comparison.stderr23
-rw-r--r--src/test/ui/parser/struct-field-numeric-shorthand.rs (renamed from src/test/parse-fail/struct-field-numeric-shorthand.rs)0
-rw-r--r--src/test/ui/parser/struct-field-numeric-shorthand.stderr10
-rw-r--r--src/test/ui/parser/struct-literal-in-for.rs (renamed from src/test/parse-fail/struct-literal-in-for.rs)0
-rw-r--r--src/test/ui/parser/struct-literal-in-for.stderr14
-rw-r--r--src/test/ui/parser/struct-literal-in-if.rs (renamed from src/test/parse-fail/struct-literal-in-if.rs)0
-rw-r--r--src/test/ui/parser/struct-literal-in-if.stderr14
-rw-r--r--src/test/ui/parser/struct-literal-in-match-discriminant.rs (renamed from src/test/parse-fail/struct-literal-in-match-discriminant.rs)0
-rw-r--r--src/test/ui/parser/struct-literal-in-match-discriminant.stderr14
-rw-r--r--src/test/ui/parser/struct-literal-in-while.rs (renamed from src/test/parse-fail/struct-literal-in-while.rs)0
-rw-r--r--src/test/ui/parser/struct-literal-in-while.stderr14
-rw-r--r--src/test/ui/parser/struct-literal-restrictions-in-lamda.rs (renamed from src/test/parse-fail/struct-literal-restrictions-in-lamda.rs)0
-rw-r--r--src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr14
-rw-r--r--src/test/ui/parser/tag-variant-disr-non-nullary.rs (renamed from src/test/parse-fail/tag-variant-disr-non-nullary.rs)0
-rw-r--r--src/test/ui/parser/tag-variant-disr-non-nullary.stderr8
-rw-r--r--src/test/ui/parser/trailing-carriage-return-in-string.rs (renamed from src/test/parse-fail/trailing-carriage-return-in-string.rs)0
-rw-r--r--src/test/ui/parser/trailing-carriage-return-in-string.stderr14
-rw-r--r--src/test/ui/parser/trait-bounds-not-on-impl.rs (renamed from src/test/parse-fail/trait-bounds-not-on-impl.rs)0
-rw-r--r--src/test/ui/parser/trait-bounds-not-on-impl.stderr8
-rw-r--r--src/test/ui/parser/trait-non-item-macros.rs (renamed from src/test/parse-fail/trait-non-item-macros.rs)0
-rw-r--r--src/test/ui/parser/trait-non-item-macros.stderr11
-rw-r--r--src/test/ui/parser/trait-object-bad-parens.rs (renamed from src/test/parse-fail/trait-object-bad-parens.rs)0
-rw-r--r--src/test/ui/parser/trait-object-bad-parens.stderr27
-rw-r--r--src/test/ui/parser/trait-object-lifetime-parens.rs (renamed from src/test/parse-fail/trait-object-lifetime-parens.rs)0
-rw-r--r--src/test/ui/parser/trait-object-lifetime-parens.stderr22
-rw-r--r--src/test/ui/parser/trait-object-macro-matcher.rs (renamed from src/test/parse-fail/trait-object-macro-matcher.rs)0
-rw-r--r--src/test/ui/parser/trait-object-macro-matcher.stderr8
-rw-r--r--src/test/ui/parser/trait-object-polytrait-priority.rs (renamed from src/test/parse-fail/trait-object-polytrait-priority.rs)0
-rw-r--r--src/test/ui/parser/trait-object-polytrait-priority.stderr9
-rw-r--r--src/test/ui/parser/trait-object-trait-parens.rs (renamed from src/test/parse-fail/trait-object-trait-parens.rs)0
-rw-r--r--src/test/ui/parser/trait-object-trait-parens.stderr8
-rw-r--r--src/test/ui/parser/trait-plusequal-splitting.rs (renamed from src/test/parse-fail/trait-plusequal-splitting.rs)0
-rw-r--r--src/test/ui/parser/trait-plusequal-splitting.stderr8
-rw-r--r--src/test/ui/parser/trait-pub-assoc-const.rs (renamed from src/test/parse-fail/trait-pub-assoc-const.rs)0
-rw-r--r--src/test/ui/parser/trait-pub-assoc-const.stderr10
-rw-r--r--src/test/ui/parser/trait-pub-assoc-ty.rs (renamed from src/test/parse-fail/trait-pub-assoc-ty.rs)0
-rw-r--r--src/test/ui/parser/trait-pub-assoc-ty.stderr10
-rw-r--r--src/test/ui/parser/trait-pub-method.rs (renamed from src/test/parse-fail/trait-pub-method.rs)0
-rw-r--r--src/test/ui/parser/trait-pub-method.stderr10
-rw-r--r--src/test/ui/parser/type-parameters-in-field-exprs.rs (renamed from src/test/parse-fail/type-parameters-in-field-exprs.rs)0
-rw-r--r--src/test/ui/parser/type-parameters-in-field-exprs.stderr20
-rw-r--r--src/test/ui/parser/unbalanced-doublequote.rs (renamed from src/test/parse-fail/unbalanced-doublequote.rs)0
-rw-r--r--src/test/ui/parser/unbalanced-doublequote.stderr9
-rw-r--r--src/test/ui/parser/underscore-suffix-for-float.rs (renamed from src/test/parse-fail/underscore-suffix-for-float.rs)0
-rw-r--r--src/test/ui/parser/underscore-suffix-for-float.stderr15
-rw-r--r--src/test/ui/parser/underscore-suffix-for-string.rs (renamed from src/test/parse-fail/underscore-suffix-for-string.rs)0
-rw-r--r--src/test/ui/parser/underscore-suffix-for-string.stderr17
-rw-r--r--src/test/ui/parser/unicode-chars.rs (renamed from src/test/parse-fail/unicode-chars.rs)0
-rw-r--r--src/test/ui/parser/unicode-chars.stderr12
-rw-r--r--src/test/ui/parser/unsized.rs (renamed from src/test/parse-fail/unsized.rs)0
-rw-r--r--src/test/ui/parser/unsized.stderr8
-rw-r--r--src/test/ui/parser/unsized2.rs (renamed from src/test/parse-fail/unsized2.rs)0
-rw-r--r--src/test/ui/parser/unsized2.stderr8
-rw-r--r--src/test/ui/parser/use-as-where-use-ends-with-mod-sep.rs (renamed from src/test/parse-fail/use-as-where-use-ends-with-mod-sep.rs)0
-rw-r--r--src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr14
-rw-r--r--src/test/ui/parser/use-ends-with-mod-sep.rs (renamed from src/test/parse-fail/use-ends-with-mod-sep.rs)0
-rw-r--r--src/test/ui/parser/use-ends-with-mod-sep.stderr8
-rw-r--r--src/test/ui/parser/variadic-ffi-3.rs (renamed from src/test/parse-fail/variadic-ffi-3.rs)0
-rw-r--r--src/test/ui/parser/variadic-ffi-3.stderr8
-rw-r--r--src/test/ui/parser/variadic-ffi-4.rs (renamed from src/test/parse-fail/variadic-ffi-4.rs)0
-rw-r--r--src/test/ui/parser/variadic-ffi-4.stderr8
-rw-r--r--src/test/ui/parser/virtual-structs.rs (renamed from src/test/parse-fail/virtual-structs.rs)0
-rw-r--r--src/test/ui/parser/virtual-structs.stderr8
-rw-r--r--src/test/ui/parser/where-clauses-no-bounds-or-predicates.rs (renamed from src/test/parse-fail/where-clauses-no-bounds-or-predicates.rs)0
-rw-r--r--src/test/ui/parser/where-clauses-no-bounds-or-predicates.stderr8
-rw-r--r--src/test/ui/parser/where_with_bound.rs (renamed from src/test/parse-fail/where_with_bound.rs)0
-rw-r--r--src/test/ui/parser/where_with_bound.stderr8
-rw-r--r--src/test/ui/parser/wrong-escape-of-curly-braces.rs (renamed from src/test/parse-fail/wrong-escape-of-curly-braces.rs)0
-rw-r--r--src/test/ui/parser/wrong-escape-of-curly-braces.stderr31
541 files changed, 3128 insertions, 0 deletions
diff --git a/src/test/parse-fail/ascii-only-character-escape.rs b/src/test/ui/parser/ascii-only-character-escape.rs
index a8c40225c30..a8c40225c30 100644
--- a/src/test/parse-fail/ascii-only-character-escape.rs
+++ b/src/test/ui/parser/ascii-only-character-escape.rs
diff --git a/src/test/ui/parser/ascii-only-character-escape.stderr b/src/test/ui/parser/ascii-only-character-escape.stderr
new file mode 100644
index 00000000000..e09db780880
--- /dev/null
+++ b/src/test/ui/parser/ascii-only-character-escape.stderr
@@ -0,0 +1,20 @@
+error: this form of character escape may only be used with characters in the range [/x00-/x7f]
+  --> $DIR/ascii-only-character-escape.rs:14:16
+   |
+LL |     let x = "/x80"; //~ ERROR may only be used
+   |                ^^
+
+error: this form of character escape may only be used with characters in the range [/x00-/x7f]
+  --> $DIR/ascii-only-character-escape.rs:15:16
+   |
+LL |     let y = "/xff"; //~ ERROR may only be used
+   |                ^^
+
+error: this form of character escape may only be used with characters in the range [/x00-/x7f]
+  --> $DIR/ascii-only-character-escape.rs:16:16
+   |
+LL |     let z = "/xe2"; //~ ERROR may only be used
+   |                ^^
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/parse-fail/assoc-oddities-1.rs b/src/test/ui/parser/assoc-oddities-1.rs
index 63408b76b15..63408b76b15 100644
--- a/src/test/parse-fail/assoc-oddities-1.rs
+++ b/src/test/ui/parser/assoc-oddities-1.rs
diff --git a/src/test/ui/parser/assoc-oddities-1.stderr b/src/test/ui/parser/assoc-oddities-1.stderr
new file mode 100644
index 00000000000..2d39546dca8
--- /dev/null
+++ b/src/test/ui/parser/assoc-oddities-1.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, or `}`, found `[`
+  --> $DIR/assoc-oddities-1.rs:20:28
+   |
+LL |     ..if c { a } else { b }[n]; //~ ERROR expected one of
+   |                            ^ expected one of `.`, `;`, `?`, or `}` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/assoc-oddities-2.rs b/src/test/ui/parser/assoc-oddities-2.rs
index 5679328edc9..5679328edc9 100644
--- a/src/test/parse-fail/assoc-oddities-2.rs
+++ b/src/test/ui/parser/assoc-oddities-2.rs
diff --git a/src/test/ui/parser/assoc-oddities-2.stderr b/src/test/ui/parser/assoc-oddities-2.stderr
new file mode 100644
index 00000000000..878ef682747
--- /dev/null
+++ b/src/test/ui/parser/assoc-oddities-2.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, or `}`, found `[`
+  --> $DIR/assoc-oddities-2.rs:15:29
+   |
+LL |     x..if c { a } else { b }[n]; //~ ERROR expected one of
+   |                             ^ expected one of `.`, `;`, `?`, or `}` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/associated-types-project-from-hrtb-explicit.rs b/src/test/ui/parser/associated-types-project-from-hrtb-explicit.rs
index 70055a10181..70055a10181 100644
--- a/src/test/parse-fail/associated-types-project-from-hrtb-explicit.rs
+++ b/src/test/ui/parser/associated-types-project-from-hrtb-explicit.rs
diff --git a/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr b/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr
new file mode 100644
index 00000000000..59b378c2088
--- /dev/null
+++ b/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr
@@ -0,0 +1,14 @@
+error: expected identifier, found keyword `for`
+  --> $DIR/associated-types-project-from-hrtb-explicit.rs:22:21
+   |
+LL | fn foo2<I>(x: <I as for<'x> Foo<&'x isize>>::A)
+   |                     ^^^ expected identifier, found keyword
+
+error: expected one of `::` or `>`, found `Foo`
+  --> $DIR/associated-types-project-from-hrtb-explicit.rs:22:29
+   |
+LL | fn foo2<I>(x: <I as for<'x> Foo<&'x isize>>::A)
+   |                             ^^^ expected one of `::` or `>` here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/attr-bad-meta-2.rs b/src/test/ui/parser/attr-bad-meta-2.rs
index ce640a3f67c..ce640a3f67c 100644
--- a/src/test/parse-fail/attr-bad-meta-2.rs
+++ b/src/test/ui/parser/attr-bad-meta-2.rs
diff --git a/src/test/ui/parser/attr-bad-meta-2.stderr b/src/test/ui/parser/attr-bad-meta-2.stderr
new file mode 100644
index 00000000000..3366936530e
--- /dev/null
+++ b/src/test/ui/parser/attr-bad-meta-2.stderr
@@ -0,0 +1,8 @@
+error: unexpected token: `]`
+  --> $DIR/attr-bad-meta-2.rs:11:9
+   |
+LL | #[path =] //~ ERROR unexpected token: `]`
+   |         ^ unexpected token after this
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/attr-bad-meta-3.rs b/src/test/ui/parser/attr-bad-meta-3.rs
index 92e2a59d25d..92e2a59d25d 100644
--- a/src/test/parse-fail/attr-bad-meta-3.rs
+++ b/src/test/ui/parser/attr-bad-meta-3.rs
diff --git a/src/test/ui/parser/attr-bad-meta-3.stderr b/src/test/ui/parser/attr-bad-meta-3.stderr
new file mode 100644
index 00000000000..059e14871a7
--- /dev/null
+++ b/src/test/ui/parser/attr-bad-meta-3.stderr
@@ -0,0 +1,8 @@
+error: expected `]`, found `token`
+  --> $DIR/attr-bad-meta-3.rs:11:10
+   |
+LL | #[path() token] //~ ERROR expected `]`, found `token`
+   |          ^^^^^ expected `]`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/attr-bad-meta.rs b/src/test/ui/parser/attr-bad-meta.rs
index 6f9d794dc2d..6f9d794dc2d 100644
--- a/src/test/parse-fail/attr-bad-meta.rs
+++ b/src/test/ui/parser/attr-bad-meta.rs
diff --git a/src/test/ui/parser/attr-bad-meta.stderr b/src/test/ui/parser/attr-bad-meta.stderr
new file mode 100644
index 00000000000..c99d822f486
--- /dev/null
+++ b/src/test/ui/parser/attr-bad-meta.stderr
@@ -0,0 +1,8 @@
+error: expected one of `(`, `::`, `=`, `[`, `]`, or `{`, found `*`
+  --> $DIR/attr-bad-meta.rs:13:7
+   |
+LL | #[path*] //~ ERROR expected one of `(`, `::`, `=`, `[`, `]`, or `{`, found `*`
+   |       ^ expected one of `(`, `::`, `=`, `[`, `]`, or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/attr-before-eof.rs b/src/test/ui/parser/attr-before-eof.rs
index c75b0ac122a..c75b0ac122a 100644
--- a/src/test/parse-fail/attr-before-eof.rs
+++ b/src/test/ui/parser/attr-before-eof.rs
diff --git a/src/test/ui/parser/attr-before-eof.stderr b/src/test/ui/parser/attr-before-eof.stderr
new file mode 100644
index 00000000000..e96b9c4cc3d
--- /dev/null
+++ b/src/test/ui/parser/attr-before-eof.stderr
@@ -0,0 +1,8 @@
+error: expected item after attributes
+  --> $DIR/attr-before-eof.rs:13:16
+   |
+LL | #[derive(Debug)] //~ERROR expected item after attributes
+   |                ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/attr-dangling-in-fn.rs b/src/test/ui/parser/attr-dangling-in-fn.rs
index 7b731b6d6de..7b731b6d6de 100644
--- a/src/test/parse-fail/attr-dangling-in-fn.rs
+++ b/src/test/ui/parser/attr-dangling-in-fn.rs
diff --git a/src/test/ui/parser/attr-dangling-in-fn.stderr b/src/test/ui/parser/attr-dangling-in-fn.stderr
new file mode 100644
index 00000000000..0f530a2d402
--- /dev/null
+++ b/src/test/ui/parser/attr-dangling-in-fn.stderr
@@ -0,0 +1,8 @@
+error: expected statement after outer attribute
+  --> $DIR/attr-dangling-in-fn.rs:17:1
+   |
+LL | }
+   | ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/attr-dangling-in-mod.rs b/src/test/ui/parser/attr-dangling-in-mod.rs
index 79609935f9e..79609935f9e 100644
--- a/src/test/parse-fail/attr-dangling-in-mod.rs
+++ b/src/test/ui/parser/attr-dangling-in-mod.rs
diff --git a/src/test/ui/parser/attr-dangling-in-mod.stderr b/src/test/ui/parser/attr-dangling-in-mod.stderr
new file mode 100644
index 00000000000..1105e06f93c
--- /dev/null
+++ b/src/test/ui/parser/attr-dangling-in-mod.stderr
@@ -0,0 +1,8 @@
+error: expected item after attributes
+  --> $DIR/attr-dangling-in-mod.rs:18:14
+   |
+LL | #[foo = "bar"]
+   |              ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/attr.rs b/src/test/ui/parser/attr.rs
index 1f0a95826fc..1f0a95826fc 100644
--- a/src/test/parse-fail/attr.rs
+++ b/src/test/ui/parser/attr.rs
diff --git a/src/test/ui/parser/attr.stderr b/src/test/ui/parser/attr.stderr
new file mode 100644
index 00000000000..a977847679a
--- /dev/null
+++ b/src/test/ui/parser/attr.stderr
@@ -0,0 +1,10 @@
+error: an inner attribute is not permitted in this context
+  --> $DIR/attr.rs:17:3
+   |
+LL | #![lang(foo)] //~ ERROR an inner attribute is not permitted in this context
+   |   ^
+   |
+   = 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/parse-fail/attrs-after-extern-mod.rs b/src/test/ui/parser/attrs-after-extern-mod.rs
index 442eb14116e..442eb14116e 100644
--- a/src/test/parse-fail/attrs-after-extern-mod.rs
+++ b/src/test/ui/parser/attrs-after-extern-mod.rs
diff --git a/src/test/ui/parser/attrs-after-extern-mod.stderr b/src/test/ui/parser/attrs-after-extern-mod.stderr
new file mode 100644
index 00000000000..70a7afc9060
--- /dev/null
+++ b/src/test/ui/parser/attrs-after-extern-mod.stderr
@@ -0,0 +1,8 @@
+error: expected item after attributes
+  --> $DIR/attrs-after-extern-mod.rs:22:19
+   |
+LL |     #[cfg(stage37)] //~ ERROR expected item after attributes
+   |                   ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bad-char-literals.rs b/src/test/ui/parser/bad-char-literals.rs
index 821015ece77..821015ece77 100644
--- a/src/test/parse-fail/bad-char-literals.rs
+++ b/src/test/ui/parser/bad-char-literals.rs
diff --git a/src/test/ui/parser/bad-char-literals.stderr b/src/test/ui/parser/bad-char-literals.stderr
new file mode 100644
index 00000000000..40f96655170
--- /dev/null
+++ b/src/test/ui/parser/bad-char-literals.stderr
@@ -0,0 +1,28 @@
+error: character constant must be escaped: '
+  --> $DIR/bad-char-literals.rs:17:6
+   |
+LL |     ''';
+   |      ^
+
+error: character constant must be escaped: /n
+  --> $DIR/bad-char-literals.rs:21:6
+   |
+LL |       '
+   |  ______^
+LL | | ';
+   | |_
+
+error: character constant must be escaped: /r
+  --> $DIR/bad-char-literals.rs:26:6
+   |
+LL |     '
'; //~ ERROR: character constant must be escaped: /r
+   |      ^
+
+error: character constant must be escaped: /t
+  --> $DIR/bad-char-literals.rs:29:6
+   |
+LL |     '    ';
+   |      ^^^^
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/parse-fail/bad-lit-suffixes.rs b/src/test/ui/parser/bad-lit-suffixes.rs
index 0811a647024..0811a647024 100644
--- a/src/test/parse-fail/bad-lit-suffixes.rs
+++ b/src/test/ui/parser/bad-lit-suffixes.rs
diff --git a/src/test/ui/parser/bad-lit-suffixes.stderr b/src/test/ui/parser/bad-lit-suffixes.stderr
new file mode 100644
index 00000000000..bc15c329526
--- /dev/null
+++ b/src/test/ui/parser/bad-lit-suffixes.stderr
@@ -0,0 +1,114 @@
+error: ABI spec with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:15:5
+   |
+LL |     "C"suffix //~ ERROR ABI spec with a suffix is invalid
+   |     ^^^^^^^^^
+
+error: ABI spec with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:19:5
+   |
+LL |     "C"suffix //~ ERROR ABI spec with a suffix is invalid
+   |     ^^^^^^^^^
+
+error: string literal with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:23:5
+   |
+LL |     ""suffix; //~ ERROR string literal with a suffix is invalid
+   |     ^^^^^^^^
+
+error: byte string literal with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:24:5
+   |
+LL |     b""suffix; //~ ERROR byte string literal with a suffix is invalid
+   |     ^^^^^^^^^
+
+error: string literal with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:25:5
+   |
+LL |     r#""#suffix; //~ ERROR string literal with a suffix is invalid
+   |     ^^^^^^^^^^^
+
+error: byte string literal with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:26:5
+   |
+LL |     br#""#suffix; //~ ERROR byte string literal with a suffix is invalid
+   |     ^^^^^^^^^^^^
+
+error: char literal with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:27:5
+   |
+LL |     'a'suffix; //~ ERROR char literal with a suffix is invalid
+   |     ^^^^^^^^^
+
+error: byte literal with a suffix is invalid
+  --> $DIR/bad-lit-suffixes.rs:28:5
+   |
+LL |     b'a'suffix; //~ ERROR byte literal with a suffix is invalid
+   |     ^^^^^^^^^^
+
+error: invalid width `1024` for integer literal
+  --> $DIR/bad-lit-suffixes.rs:30:5
+   |
+LL |     1234u1024; //~ ERROR invalid width `1024` for integer literal
+   |     ^^^^^^^^^
+   |
+   = help: valid widths are 8, 16, 32, 64 and 128
+
+error: invalid width `1024` for integer literal
+  --> $DIR/bad-lit-suffixes.rs:31:5
+   |
+LL |     1234i1024; //~ ERROR invalid width `1024` for integer literal
+   |     ^^^^^^^^^
+   |
+   = help: valid widths are 8, 16, 32, 64 and 128
+
+error: invalid width `1024` for float literal
+  --> $DIR/bad-lit-suffixes.rs:32:5
+   |
+LL |     1234f1024; //~ ERROR invalid width `1024` for float literal
+   |     ^^^^^^^^^
+   |
+   = help: valid widths are 32 and 64
+
+error: invalid width `1024` for float literal
+  --> $DIR/bad-lit-suffixes.rs:33:5
+   |
+LL |     1234.5f1024; //~ ERROR invalid width `1024` for float literal
+   |     ^^^^^^^^^^^
+   |
+   = help: valid widths are 32 and 64
+
+error: invalid suffix `suffix` for numeric literal
+  --> $DIR/bad-lit-suffixes.rs:35:5
+   |
+LL |     1234suffix; //~ ERROR invalid suffix `suffix` for numeric literal
+   |     ^^^^^^^^^^
+   |
+   = help: the suffix must be one of the integral types (`u32`, `isize`, etc)
+
+error: invalid suffix `suffix` for numeric literal
+  --> $DIR/bad-lit-suffixes.rs:36:5
+   |
+LL |     0b101suffix; //~ ERROR invalid suffix `suffix` for numeric literal
+   |     ^^^^^^^^^^^
+   |
+   = help: the suffix must be one of the integral types (`u32`, `isize`, etc)
+
+error: invalid suffix `suffix` for float literal
+  --> $DIR/bad-lit-suffixes.rs:37:5
+   |
+LL |     1.0suffix; //~ ERROR invalid suffix `suffix` for float literal
+   |     ^^^^^^^^^
+   |
+   = help: valid suffixes are `f32` and `f64`
+
+error: invalid suffix `suffix` for float literal
+  --> $DIR/bad-lit-suffixes.rs:38:5
+   |
+LL |     1.0e10suffix; //~ ERROR invalid suffix `suffix` for float literal
+   |     ^^^^^^^^^^^^
+   |
+   = help: valid suffixes are `f32` and `f64`
+
+error: aborting due to 16 previous errors
+
diff --git a/src/test/parse-fail/bad-match.rs b/src/test/ui/parser/bad-match.rs
index b42c04f3ce2..b42c04f3ce2 100644
--- a/src/test/parse-fail/bad-match.rs
+++ b/src/test/ui/parser/bad-match.rs
diff --git a/src/test/ui/parser/bad-match.stderr b/src/test/ui/parser/bad-match.stderr
new file mode 100644
index 00000000000..7927a3d6138
--- /dev/null
+++ b/src/test/ui/parser/bad-match.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `x`
+  --> $DIR/bad-match.rs:16:13
+   |
+LL |   let isize x = 5;
+   |             ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bad-name.rs b/src/test/ui/parser/bad-name.rs
index 201e6ced2f9..201e6ced2f9 100644
--- a/src/test/parse-fail/bad-name.rs
+++ b/src/test/ui/parser/bad-name.rs
diff --git a/src/test/ui/parser/bad-name.stderr b/src/test/ui/parser/bad-name.stderr
new file mode 100644
index 00000000000..c4ab3e18c9b
--- /dev/null
+++ b/src/test/ui/parser/bad-name.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `.`
+  --> $DIR/bad-name.rs:16:8
+   |
+LL |   let x.y::<isize>.z foo;
+   |        ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bad-pointer-type.rs b/src/test/ui/parser/bad-pointer-type.rs
index cdb4d16fed2..cdb4d16fed2 100644
--- a/src/test/parse-fail/bad-pointer-type.rs
+++ b/src/test/ui/parser/bad-pointer-type.rs
diff --git a/src/test/ui/parser/bad-pointer-type.stderr b/src/test/ui/parser/bad-pointer-type.stderr
new file mode 100644
index 00000000000..d41bbb3475b
--- /dev/null
+++ b/src/test/ui/parser/bad-pointer-type.stderr
@@ -0,0 +1,8 @@
+error: expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)
+  --> $DIR/bad-pointer-type.rs:13:11
+   |
+LL | fn foo(_: *()) {
+   |           ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bad-value-ident-false.rs b/src/test/ui/parser/bad-value-ident-false.rs
index 96325a2abb4..96325a2abb4 100644
--- a/src/test/parse-fail/bad-value-ident-false.rs
+++ b/src/test/ui/parser/bad-value-ident-false.rs
diff --git a/src/test/ui/parser/bad-value-ident-false.stderr b/src/test/ui/parser/bad-value-ident-false.stderr
new file mode 100644
index 00000000000..ac5fe784a9a
--- /dev/null
+++ b/src/test/ui/parser/bad-value-ident-false.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found keyword `false`
+  --> $DIR/bad-value-ident-false.rs:13:4
+   |
+LL | fn false() { } //~ ERROR expected identifier, found keyword `false`
+   |    ^^^^^ expected identifier, found keyword
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bad-value-ident-true.rs b/src/test/ui/parser/bad-value-ident-true.rs
index 7ff16b80373..7ff16b80373 100644
--- a/src/test/parse-fail/bad-value-ident-true.rs
+++ b/src/test/ui/parser/bad-value-ident-true.rs
diff --git a/src/test/ui/parser/bad-value-ident-true.stderr b/src/test/ui/parser/bad-value-ident-true.stderr
new file mode 100644
index 00000000000..34d02374d57
--- /dev/null
+++ b/src/test/ui/parser/bad-value-ident-true.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found keyword `true`
+  --> $DIR/bad-value-ident-true.rs:13:4
+   |
+LL | fn true() { } //~ ERROR expected identifier, found keyword `true`
+   |    ^^^^ expected identifier, found keyword
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/better-expected.rs b/src/test/ui/parser/better-expected.rs
index b60201c251d..b60201c251d 100644
--- a/src/test/parse-fail/better-expected.rs
+++ b/src/test/ui/parser/better-expected.rs
diff --git a/src/test/ui/parser/better-expected.stderr b/src/test/ui/parser/better-expected.stderr
new file mode 100644
index 00000000000..028858c34e9
--- /dev/null
+++ b/src/test/ui/parser/better-expected.stderr
@@ -0,0 +1,10 @@
+error: expected one of `!`, `(`, `+`, `::`, `;`, `<`, or `]`, found `3`
+  --> $DIR/better-expected.rs:14:19
+   |
+LL |     let x: [isize 3]; //~ ERROR expected one of `!`, `(`, `+`, `::`, `;`, `<`, or `]`, found `3`
+   |         -         ^ expected one of 7 possible tokens here
+   |         |
+   |         while parsing the type for `x`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bind-struct-early-modifiers.rs b/src/test/ui/parser/bind-struct-early-modifiers.rs
index e9e76af11a5..e9e76af11a5 100644
--- a/src/test/parse-fail/bind-struct-early-modifiers.rs
+++ b/src/test/ui/parser/bind-struct-early-modifiers.rs
diff --git a/src/test/ui/parser/bind-struct-early-modifiers.stderr b/src/test/ui/parser/bind-struct-early-modifiers.stderr
new file mode 100644
index 00000000000..14ff1b73767
--- /dev/null
+++ b/src/test/ui/parser/bind-struct-early-modifiers.stderr
@@ -0,0 +1,8 @@
+error: expected `,`
+  --> $DIR/bind-struct-early-modifiers.rs:16:19
+   |
+LL |         Foo { ref x: ref x } => {}, //~ ERROR expected `,`
+   |                   ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bound-single-question-mark.rs b/src/test/ui/parser/bound-single-question-mark.rs
index 9dde5268c08..9dde5268c08 100644
--- a/src/test/parse-fail/bound-single-question-mark.rs
+++ b/src/test/ui/parser/bound-single-question-mark.rs
diff --git a/src/test/ui/parser/bound-single-question-mark.stderr b/src/test/ui/parser/bound-single-question-mark.stderr
new file mode 100644
index 00000000000..e3522cef8d4
--- /dev/null
+++ b/src/test/ui/parser/bound-single-question-mark.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `>`
+  --> $DIR/bound-single-question-mark.rs:13:10
+   |
+LL | fn f<T: ?>() {} //~ ERROR expected identifier, found `>`
+   |          ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-lifetime-1.rs b/src/test/ui/parser/bounds-lifetime-1.rs
index 824d243d5f8..824d243d5f8 100644
--- a/src/test/parse-fail/bounds-lifetime-1.rs
+++ b/src/test/ui/parser/bounds-lifetime-1.rs
diff --git a/src/test/ui/parser/bounds-lifetime-1.stderr b/src/test/ui/parser/bounds-lifetime-1.stderr
new file mode 100644
index 00000000000..910092fba40
--- /dev/null
+++ b/src/test/ui/parser/bounds-lifetime-1.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,`, `:`, or `>`, found `'b`
+  --> $DIR/bounds-lifetime-1.rs:13:17
+   |
+LL | type A = for<'a 'b> fn(); //~ ERROR expected one of `,`, `:`, or `>`, found `'b`
+   |                 ^^ expected one of `,`, `:`, or `>` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-lifetime-2.rs b/src/test/ui/parser/bounds-lifetime-2.rs
index 3c67dda70f5..3c67dda70f5 100644
--- a/src/test/parse-fail/bounds-lifetime-2.rs
+++ b/src/test/ui/parser/bounds-lifetime-2.rs
diff --git a/src/test/ui/parser/bounds-lifetime-2.stderr b/src/test/ui/parser/bounds-lifetime-2.stderr
new file mode 100644
index 00000000000..b84f5e6990a
--- /dev/null
+++ b/src/test/ui/parser/bounds-lifetime-2.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,`, `:`, or `>`, found `+`
+  --> $DIR/bounds-lifetime-2.rs:13:17
+   |
+LL | type A = for<'a + 'b> fn(); //~ ERROR expected one of `,`, `:`, or `>`, found `+`
+   |                 ^ expected one of `,`, `:`, or `>` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-lifetime-where-1.rs b/src/test/ui/parser/bounds-lifetime-where-1.rs
index aae9d729987..aae9d729987 100644
--- a/src/test/parse-fail/bounds-lifetime-where-1.rs
+++ b/src/test/ui/parser/bounds-lifetime-where-1.rs
diff --git a/src/test/ui/parser/bounds-lifetime-where-1.stderr b/src/test/ui/parser/bounds-lifetime-where-1.stderr
new file mode 100644
index 00000000000..5bcb8962e0f
--- /dev/null
+++ b/src/test/ui/parser/bounds-lifetime-where-1.stderr
@@ -0,0 +1,8 @@
+error: expected `:`, found `;`
+  --> $DIR/bounds-lifetime-where-1.rs:13:16
+   |
+LL | type A where 'a; //~ ERROR expected `:`, found `;`
+   |                ^ expected `:`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-lifetime-where.rs b/src/test/ui/parser/bounds-lifetime-where.rs
index 0a30818bc96..0a30818bc96 100644
--- a/src/test/parse-fail/bounds-lifetime-where.rs
+++ b/src/test/ui/parser/bounds-lifetime-where.rs
diff --git a/src/test/ui/parser/bounds-lifetime-where.stderr b/src/test/ui/parser/bounds-lifetime-where.stderr
new file mode 100644
index 00000000000..ef4ba9499c3
--- /dev/null
+++ b/src/test/ui/parser/bounds-lifetime-where.stderr
@@ -0,0 +1,8 @@
+error: expected one of `=`, lifetime, or type, found `,`
+  --> $DIR/bounds-lifetime-where.rs:20:14
+   |
+LL | type A where , = u8; //~ ERROR expected one of `=`, lifetime, or type, found `,`
+   |              ^ expected one of `=`, lifetime, or type here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-lifetime.rs b/src/test/ui/parser/bounds-lifetime.rs
index 88db205310c..88db205310c 100644
--- a/src/test/parse-fail/bounds-lifetime.rs
+++ b/src/test/ui/parser/bounds-lifetime.rs
diff --git a/src/test/ui/parser/bounds-lifetime.stderr b/src/test/ui/parser/bounds-lifetime.stderr
new file mode 100644
index 00000000000..2850af5193a
--- /dev/null
+++ b/src/test/ui/parser/bounds-lifetime.stderr
@@ -0,0 +1,8 @@
+error: expected one of `>`, identifier, or lifetime, found `,`
+  --> $DIR/bounds-lifetime.rs:21:14
+   |
+LL | type A = for<,> fn(); //~ ERROR expected one of `>`, identifier, or lifetime, found `,`
+   |              ^ expected one of `>`, identifier, or lifetime here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-type-where.rs b/src/test/ui/parser/bounds-type-where.rs
index 9dc5d827744..9dc5d827744 100644
--- a/src/test/parse-fail/bounds-type-where.rs
+++ b/src/test/ui/parser/bounds-type-where.rs
diff --git a/src/test/ui/parser/bounds-type-where.stderr b/src/test/ui/parser/bounds-type-where.stderr
new file mode 100644
index 00000000000..b6a184f54fc
--- /dev/null
+++ b/src/test/ui/parser/bounds-type-where.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `+`, `::`, `:`, `<`, `==`, or `=`, found `,`
+  --> $DIR/bounds-type-where.rs:20:15
+   |
+LL | type A where T, = u8;
+   |               ^ expected one of 8 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/bounds-type.rs b/src/test/ui/parser/bounds-type.rs
index 0ebe7fde0a6..0ebe7fde0a6 100644
--- a/src/test/parse-fail/bounds-type.rs
+++ b/src/test/ui/parser/bounds-type.rs
diff --git a/src/test/ui/parser/bounds-type.stderr b/src/test/ui/parser/bounds-type.stderr
new file mode 100644
index 00000000000..c4c3d2ae065
--- /dev/null
+++ b/src/test/ui/parser/bounds-type.stderr
@@ -0,0 +1,8 @@
+error: `?` may only modify trait bounds, not lifetime bounds
+  --> $DIR/bounds-type.rs:20:8
+   |
+LL |     T: ?'a, //~ ERROR `?` may only modify trait bounds, not lifetime bounds
+   |        ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/brace-after-qualified-path-in-match.rs b/src/test/ui/parser/brace-after-qualified-path-in-match.rs
index ff434d87e1f..ff434d87e1f 100644
--- a/src/test/parse-fail/brace-after-qualified-path-in-match.rs
+++ b/src/test/ui/parser/brace-after-qualified-path-in-match.rs
diff --git a/src/test/ui/parser/brace-after-qualified-path-in-match.stderr b/src/test/ui/parser/brace-after-qualified-path-in-match.stderr
new file mode 100644
index 00000000000..c66b3ed75e8
--- /dev/null
+++ b/src/test/ui/parser/brace-after-qualified-path-in-match.stderr
@@ -0,0 +1,8 @@
+error: unexpected `{` after qualified path
+  --> $DIR/brace-after-qualified-path-in-match.rs:15:27
+   |
+LL |         <T as Trait>::Type{key: value} => (),
+   |                           ^ unexpected `{` after qualified path
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/byte-literals.rs b/src/test/ui/parser/byte-literals.rs
index 3ecd7780afd..3ecd7780afd 100644
--- a/src/test/parse-fail/byte-literals.rs
+++ b/src/test/ui/parser/byte-literals.rs
diff --git a/src/test/ui/parser/byte-literals.stderr b/src/test/ui/parser/byte-literals.stderr
new file mode 100644
index 00000000000..7b4f22134c4
--- /dev/null
+++ b/src/test/ui/parser/byte-literals.stderr
@@ -0,0 +1,44 @@
+error: unknown byte escape: f
+  --> $DIR/byte-literals.rs:16:21
+   |
+LL | static FOO: u8 = b'/f';  //~ ERROR unknown byte escape
+   |                     ^
+
+error: unknown byte escape: f
+  --> $DIR/byte-literals.rs:19:8
+   |
+LL |     b'/f';  //~ ERROR unknown byte escape
+   |        ^
+
+error: invalid character in numeric character escape: Z
+  --> $DIR/byte-literals.rs:20:10
+   |
+LL |     b'/x0Z';  //~ ERROR invalid character in numeric character escape: Z
+   |          ^
+
+error: byte constant must be escaped: /t
+  --> $DIR/byte-literals.rs:21:7
+   |
+LL |     b'    ';  //~ ERROR byte constant must be escaped
+   |       ^^^^
+
+error: byte constant must be escaped: '
+  --> $DIR/byte-literals.rs:22:7
+   |
+LL |     b''';  //~ ERROR byte constant must be escaped
+   |       ^
+
+error: byte constant must be ASCII. Use a /xHH escape for a non-ASCII byte
+  --> $DIR/byte-literals.rs:23:7
+   |
+LL |     b'é';  //~ ERROR byte constant must be ASCII
+   |       ^
+
+error: unterminated byte constant: b'a
+  --> $DIR/byte-literals.rs:24:5
+   |
+LL |     b'a  //~ ERROR unterminated byte constant
+   |     ^^^
+
+error: aborting due to 7 previous errors
+
diff --git a/src/test/parse-fail/byte-string-literals.rs b/src/test/ui/parser/byte-string-literals.rs
index 4eba9e91ca5..4eba9e91ca5 100644
--- a/src/test/parse-fail/byte-string-literals.rs
+++ b/src/test/ui/parser/byte-string-literals.rs
diff --git a/src/test/ui/parser/byte-string-literals.stderr b/src/test/ui/parser/byte-string-literals.stderr
new file mode 100644
index 00000000000..856d1956c05
--- /dev/null
+++ b/src/test/ui/parser/byte-string-literals.stderr
@@ -0,0 +1,34 @@
+error: unknown byte escape: f
+  --> $DIR/byte-string-literals.rs:16:32
+   |
+LL | static FOO: &'static [u8] = b"/f";  //~ ERROR unknown byte escape
+   |                                ^
+
+error: unknown byte escape: f
+  --> $DIR/byte-string-literals.rs:19:8
+   |
+LL |     b"/f";  //~ ERROR unknown byte escape
+   |        ^
+
+error: invalid character in numeric character escape: Z
+  --> $DIR/byte-string-literals.rs:20:10
+   |
+LL |     b"/x0Z";  //~ ERROR invalid character in numeric character escape: Z
+   |          ^
+
+error: byte constant must be ASCII. Use a /xHH escape for a non-ASCII byte
+  --> $DIR/byte-string-literals.rs:21:7
+   |
+LL |     b"é";  //~ ERROR byte constant must be ASCII
+   |       ^
+
+error: unterminated double quote byte string
+  --> $DIR/byte-string-literals.rs:22:7
+   |
+LL |       b"a  //~ ERROR unterminated double quote byte string
+   |  _______^
+LL | | }
+   | |__^
+
+error: aborting due to 5 previous errors
+
diff --git a/src/test/parse-fail/circular_modules_hello.rs b/src/test/ui/parser/circular_modules_hello.rs
index 94770aa875b..94770aa875b 100644
--- a/src/test/parse-fail/circular_modules_hello.rs
+++ b/src/test/ui/parser/circular_modules_hello.rs
diff --git a/src/test/parse-fail/circular_modules_main.rs b/src/test/ui/parser/circular_modules_main.rs
index 861d4cd12ab..861d4cd12ab 100644
--- a/src/test/parse-fail/circular_modules_main.rs
+++ b/src/test/ui/parser/circular_modules_main.rs
diff --git a/src/test/ui/parser/circular_modules_main.stderr b/src/test/ui/parser/circular_modules_main.stderr
new file mode 100644
index 00000000000..48cb3976c6d
--- /dev/null
+++ b/src/test/ui/parser/circular_modules_main.stderr
@@ -0,0 +1,8 @@
+error: circular modules: $DIR/circular_modules_hello.rs -> $DIR/circular_modules_main.rs -> $DIR/circular_modules_hello.rs
+  --> $DIR/circular_modules_main.rs:14:5
+   |
+LL | mod circular_modules_hello; //~ ERROR: circular modules
+   |     ^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/class-implements-bad-trait.rs b/src/test/ui/parser/class-implements-bad-trait.rs
index ea263d938d4..ea263d938d4 100644
--- a/src/test/parse-fail/class-implements-bad-trait.rs
+++ b/src/test/ui/parser/class-implements-bad-trait.rs
diff --git a/src/test/ui/parser/class-implements-bad-trait.stderr b/src/test/ui/parser/class-implements-bad-trait.stderr
new file mode 100644
index 00000000000..d28750d188a
--- /dev/null
+++ b/src/test/ui/parser/class-implements-bad-trait.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!` or `::`, found `cat`
+  --> $DIR/class-implements-bad-trait.rs:14:7
+   |
+LL | class cat : nonexistent {
+   |       ^^^ expected one of `!` or `::` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/closure-return-syntax.rs b/src/test/ui/parser/closure-return-syntax.rs
index 4c77edec56f..4c77edec56f 100644
--- a/src/test/parse-fail/closure-return-syntax.rs
+++ b/src/test/ui/parser/closure-return-syntax.rs
diff --git a/src/test/ui/parser/closure-return-syntax.stderr b/src/test/ui/parser/closure-return-syntax.stderr
new file mode 100644
index 00000000000..2b375d6ec01
--- /dev/null
+++ b/src/test/ui/parser/closure-return-syntax.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `+`, `::`, `<`, or `{`, found `22`
+  --> $DIR/closure-return-syntax.rs:15:23
+   |
+LL |     let x = || -> i32 22;
+   |                       ^^ expected one of `!`, `(`, `+`, `::`, `<`, or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/column-offset-1-based.rs b/src/test/ui/parser/column-offset-1-based.rs
index 8caf2e0c0a4..8caf2e0c0a4 100644
--- a/src/test/parse-fail/column-offset-1-based.rs
+++ b/src/test/ui/parser/column-offset-1-based.rs
diff --git a/src/test/ui/parser/column-offset-1-based.stderr b/src/test/ui/parser/column-offset-1-based.stderr
new file mode 100644
index 00000000000..452e65603c9
--- /dev/null
+++ b/src/test/ui/parser/column-offset-1-based.stderr
@@ -0,0 +1,8 @@
+error: expected `[`, found `<eof>`
+  --> $DIR/column-offset-1-based.rs:13:1
+   |
+LL | # //~ ERROR 13:1: 13:2: expected `[`, found `<eof>`
+   | ^ expected `[`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/default.rs b/src/test/ui/parser/default.rs
index 6c3bc45d34a..6c3bc45d34a 100644
--- a/src/test/parse-fail/default.rs
+++ b/src/test/ui/parser/default.rs
diff --git a/src/test/ui/parser/default.stderr b/src/test/ui/parser/default.stderr
new file mode 100644
index 00000000000..0a5c6e80df5
--- /dev/null
+++ b/src/test/ui/parser/default.stderr
@@ -0,0 +1,8 @@
+error: expected one of `async`, `const`, `existential`, `extern`, `fn`, `type`, or `unsafe`, found `pub`
+  --> $DIR/default.rs:32:13
+   |
+LL |     default pub fn foo<T: Default>() -> T { T::default() } //~ ERROR expected one of
+   |             ^^^ expected one of 7 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/do-catch-suggests-try.rs b/src/test/ui/parser/do-catch-suggests-try.rs
index 449135e69c3..449135e69c3 100644
--- a/src/test/parse-fail/do-catch-suggests-try.rs
+++ b/src/test/ui/parser/do-catch-suggests-try.rs
diff --git a/src/test/ui/parser/do-catch-suggests-try.stderr b/src/test/ui/parser/do-catch-suggests-try.stderr
new file mode 100644
index 00000000000..c1ea802b8be
--- /dev/null
+++ b/src/test/ui/parser/do-catch-suggests-try.stderr
@@ -0,0 +1,10 @@
+error: found removed `do catch` syntax
+  --> $DIR/do-catch-suggests-try.rs:14:25
+   |
+LL |     let _: Option<()> = do catch {};
+   |                         ^^
+   |
+   = help: Following RFC #2388, the new non-placeholder syntax is `try`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/doc-after-struct-field.rs b/src/test/ui/parser/doc-after-struct-field.rs
index a2c60151ac7..a2c60151ac7 100644
--- a/src/test/parse-fail/doc-after-struct-field.rs
+++ b/src/test/ui/parser/doc-after-struct-field.rs
diff --git a/src/test/ui/parser/doc-after-struct-field.stderr b/src/test/ui/parser/doc-after-struct-field.stderr
new file mode 100644
index 00000000000..17250004292
--- /dev/null
+++ b/src/test/ui/parser/doc-after-struct-field.stderr
@@ -0,0 +1,19 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-after-struct-field.rs:14:11
+   |
+LL |     a: u8 /** document a */,
+   |           ^^^^^^^^^^^^^^^^^
+   |
+   = help: doc comments must come before what they document, maybe a comment was intended with `//`?
+
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-after-struct-field.rs:20:11
+   |
+LL |     a: u8 /// document a
+   |           ^^^^^^^^^^^^^^
+   |
+   = help: doc comments must come before what they document, maybe a comment was intended with `//`?
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0585`.
diff --git a/src/test/parse-fail/doc-before-attr.rs b/src/test/ui/parser/doc-before-attr.rs
index 4548cebd0a8..4548cebd0a8 100644
--- a/src/test/parse-fail/doc-before-attr.rs
+++ b/src/test/ui/parser/doc-before-attr.rs
diff --git a/src/test/ui/parser/doc-before-attr.stderr b/src/test/ui/parser/doc-before-attr.stderr
new file mode 100644
index 00000000000..f52bf60b263
--- /dev/null
+++ b/src/test/ui/parser/doc-before-attr.stderr
@@ -0,0 +1,8 @@
+error: expected item after attributes
+  --> $DIR/doc-before-attr.rs:14:16
+   |
+LL | #[derive(Debug)] //~ERROR expected item after attributes
+   |                ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/doc-before-eof.rs b/src/test/ui/parser/doc-before-eof.rs
index 728972eca62..728972eca62 100644
--- a/src/test/parse-fail/doc-before-eof.rs
+++ b/src/test/ui/parser/doc-before-eof.rs
diff --git a/src/test/ui/parser/doc-before-eof.stderr b/src/test/ui/parser/doc-before-eof.stderr
new file mode 100644
index 00000000000..9fd3db73577
--- /dev/null
+++ b/src/test/ui/parser/doc-before-eof.stderr
@@ -0,0 +1,8 @@
+error: expected item after doc comment
+  --> $DIR/doc-before-eof.rs:13:1
+   |
+LL | /// hi //~ERROR expected item after doc comment
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/doc-before-extern-rbrace.rs b/src/test/ui/parser/doc-before-extern-rbrace.rs
index 70da47ba9b4..70da47ba9b4 100644
--- a/src/test/parse-fail/doc-before-extern-rbrace.rs
+++ b/src/test/ui/parser/doc-before-extern-rbrace.rs
diff --git a/src/test/ui/parser/doc-before-extern-rbrace.stderr b/src/test/ui/parser/doc-before-extern-rbrace.stderr
new file mode 100644
index 00000000000..3936412cf98
--- /dev/null
+++ b/src/test/ui/parser/doc-before-extern-rbrace.stderr
@@ -0,0 +1,8 @@
+error: expected item after doc comment
+  --> $DIR/doc-before-extern-rbrace.rs:14:5
+   |
+LL |     /// hi
+   |     ^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/doc-before-fn-rbrace.rs b/src/test/ui/parser/doc-before-fn-rbrace.rs
index bcf32612c8f..bcf32612c8f 100644
--- a/src/test/parse-fail/doc-before-fn-rbrace.rs
+++ b/src/test/ui/parser/doc-before-fn-rbrace.rs
diff --git a/src/test/ui/parser/doc-before-fn-rbrace.stderr b/src/test/ui/parser/doc-before-fn-rbrace.stderr
new file mode 100644
index 00000000000..c6b22a9caa5
--- /dev/null
+++ b/src/test/ui/parser/doc-before-fn-rbrace.stderr
@@ -0,0 +1,11 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-before-fn-rbrace.rs:13:5
+   |
+LL |     /// document
+   |     ^^^^^^^^^^^^
+   |
+   = 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/parse-fail/doc-before-identifier.rs b/src/test/ui/parser/doc-before-identifier.rs
index 8f1fad91b1f..8f1fad91b1f 100644
--- a/src/test/parse-fail/doc-before-identifier.rs
+++ b/src/test/ui/parser/doc-before-identifier.rs
diff --git a/src/test/ui/parser/doc-before-identifier.stderr b/src/test/ui/parser/doc-before-identifier.stderr
new file mode 100644
index 00000000000..b153bbab99c
--- /dev/null
+++ b/src/test/ui/parser/doc-before-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `/// document`
+  --> $DIR/doc-before-identifier.rs:12:4
+   |
+LL | fn /// document
+   |    ^^^^^^^^^^^^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/doc-before-mod-rbrace.rs b/src/test/ui/parser/doc-before-mod-rbrace.rs
index d38d1876384..d38d1876384 100644
--- a/src/test/parse-fail/doc-before-mod-rbrace.rs
+++ b/src/test/ui/parser/doc-before-mod-rbrace.rs
diff --git a/src/test/ui/parser/doc-before-mod-rbrace.stderr b/src/test/ui/parser/doc-before-mod-rbrace.stderr
new file mode 100644
index 00000000000..cc7765707f2
--- /dev/null
+++ b/src/test/ui/parser/doc-before-mod-rbrace.stderr
@@ -0,0 +1,13 @@
+error: expected item after doc comment
+  --> $DIR/doc-before-mod-rbrace.rs:13:5
+   |
+LL |     /// document
+   |     ^^^^^^^^^^^^
+
+error[E0601]: `main` function not found in crate `doc_before_mod_rbrace`
+   |
+   = note: consider adding a `main` function to `$DIR/doc-before-mod-rbrace.rs`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0601`.
diff --git a/src/test/parse-fail/doc-before-rbrace.rs b/src/test/ui/parser/doc-before-rbrace.rs
index 48ea2b5aea1..48ea2b5aea1 100644
--- a/src/test/parse-fail/doc-before-rbrace.rs
+++ b/src/test/ui/parser/doc-before-rbrace.rs
diff --git a/src/test/ui/parser/doc-before-rbrace.stderr b/src/test/ui/parser/doc-before-rbrace.stderr
new file mode 100644
index 00000000000..15e9c3dfd62
--- /dev/null
+++ b/src/test/ui/parser/doc-before-rbrace.stderr
@@ -0,0 +1,11 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-before-rbrace.rs:14:21
+   |
+LL |     println!("Hi"); /// hi
+   |                     ^^^^^^
+   |
+   = 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/parse-fail/doc-before-semi.rs b/src/test/ui/parser/doc-before-semi.rs
index 71104b8caae..71104b8caae 100644
--- a/src/test/parse-fail/doc-before-semi.rs
+++ b/src/test/ui/parser/doc-before-semi.rs
diff --git a/src/test/ui/parser/doc-before-semi.stderr b/src/test/ui/parser/doc-before-semi.stderr
new file mode 100644
index 00000000000..a174d6f7053
--- /dev/null
+++ b/src/test/ui/parser/doc-before-semi.stderr
@@ -0,0 +1,11 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-before-semi.rs:14:5
+   |
+LL |     /// hi
+   |     ^^^^^^
+   |
+   = 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/parse-fail/doc-before-struct-rbrace-1.rs b/src/test/ui/parser/doc-before-struct-rbrace-1.rs
index 6d9b4b05ad9..6d9b4b05ad9 100644
--- a/src/test/parse-fail/doc-before-struct-rbrace-1.rs
+++ b/src/test/ui/parser/doc-before-struct-rbrace-1.rs
diff --git a/src/test/ui/parser/doc-before-struct-rbrace-1.stderr b/src/test/ui/parser/doc-before-struct-rbrace-1.stderr
new file mode 100644
index 00000000000..5abf8ffe4ad
--- /dev/null
+++ b/src/test/ui/parser/doc-before-struct-rbrace-1.stderr
@@ -0,0 +1,11 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-before-struct-rbrace-1.rs:14:5
+   |
+LL |     /// document
+   |     ^^^^^^^^^^^^
+   |
+   = 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/parse-fail/doc-before-struct-rbrace-2.rs b/src/test/ui/parser/doc-before-struct-rbrace-2.rs
index 63b2f963799..63b2f963799 100644
--- a/src/test/parse-fail/doc-before-struct-rbrace-2.rs
+++ b/src/test/ui/parser/doc-before-struct-rbrace-2.rs
diff --git a/src/test/ui/parser/doc-before-struct-rbrace-2.stderr b/src/test/ui/parser/doc-before-struct-rbrace-2.stderr
new file mode 100644
index 00000000000..76e8746235f
--- /dev/null
+++ b/src/test/ui/parser/doc-before-struct-rbrace-2.stderr
@@ -0,0 +1,11 @@
+error[E0585]: found a documentation comment that doesn't document anything
+  --> $DIR/doc-before-struct-rbrace-2.rs:13:11
+   |
+LL |     a: u8 /// document
+   |           ^^^^^^^^^^^^
+   |
+   = 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/parse-fail/duplicate-visibility.rs b/src/test/ui/parser/duplicate-visibility.rs
index cc3286fe705..cc3286fe705 100644
--- a/src/test/parse-fail/duplicate-visibility.rs
+++ b/src/test/ui/parser/duplicate-visibility.rs
diff --git a/src/test/ui/parser/duplicate-visibility.stderr b/src/test/ui/parser/duplicate-visibility.stderr
new file mode 100644
index 00000000000..a0a5b66215e
--- /dev/null
+++ b/src/test/ui/parser/duplicate-visibility.stderr
@@ -0,0 +1,8 @@
+error: expected one of `(`, `fn`, `static`, or `type`, found `pub`
+  --> $DIR/duplicate-visibility.rs:15:9
+   |
+LL |     pub pub fn foo();
+   |         ^^^ expected one of `(`, `fn`, `static`, or `type` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/empty-impl-semicolon.rs b/src/test/ui/parser/empty-impl-semicolon.rs
index 9939f1e36ea..9939f1e36ea 100644
--- a/src/test/parse-fail/empty-impl-semicolon.rs
+++ b/src/test/ui/parser/empty-impl-semicolon.rs
diff --git a/src/test/ui/parser/empty-impl-semicolon.stderr b/src/test/ui/parser/empty-impl-semicolon.stderr
new file mode 100644
index 00000000000..fef4b882355
--- /dev/null
+++ b/src/test/ui/parser/empty-impl-semicolon.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `+`, `::`, `<`, `for`, `where`, or `{`, found `;`
+  --> $DIR/empty-impl-semicolon.rs:13:9
+   |
+LL | impl Foo; //~ ERROR expected one of `!`, `(`, `+`, `::`, `<`, `for`, `where`, or `{`, found `;`
+   |         ^ expected one of 8 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/extern-crate-unexpected-token.rs b/src/test/ui/parser/extern-crate-unexpected-token.rs
index 2518686575e..2518686575e 100644
--- a/src/test/parse-fail/extern-crate-unexpected-token.rs
+++ b/src/test/ui/parser/extern-crate-unexpected-token.rs
diff --git a/src/test/ui/parser/extern-crate-unexpected-token.stderr b/src/test/ui/parser/extern-crate-unexpected-token.stderr
new file mode 100644
index 00000000000..04c46e4e3a0
--- /dev/null
+++ b/src/test/ui/parser/extern-crate-unexpected-token.stderr
@@ -0,0 +1,8 @@
+error: expected one of `crate`, `fn`, or `{`, found `crte`
+  --> $DIR/extern-crate-unexpected-token.rs:11:8
+   |
+LL | extern crte foo; //~ ERROR expected one of `crate`, `fn`, or `{`, found `crte`
+   |        ^^^^ expected one of `crate`, `fn`, or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/extern-expected-fn-or-brace.rs b/src/test/ui/parser/extern-expected-fn-or-brace.rs
index 21cca129658..21cca129658 100644
--- a/src/test/parse-fail/extern-expected-fn-or-brace.rs
+++ b/src/test/ui/parser/extern-expected-fn-or-brace.rs
diff --git a/src/test/ui/parser/extern-expected-fn-or-brace.stderr b/src/test/ui/parser/extern-expected-fn-or-brace.stderr
new file mode 100644
index 00000000000..54ab5b87d49
--- /dev/null
+++ b/src/test/ui/parser/extern-expected-fn-or-brace.stderr
@@ -0,0 +1,8 @@
+error: expected one of `fn` or `{`, found `mod`
+  --> $DIR/extern-expected-fn-or-brace.rs:16:12
+   |
+LL | extern "C" mod foo; //~ERROR expected one of `fn` or `{`, found `mod`
+   |            ^^^ expected one of `fn` or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/extern-foreign-crate.rs b/src/test/ui/parser/extern-foreign-crate.rs
index 9adbd871409..9adbd871409 100644
--- a/src/test/parse-fail/extern-foreign-crate.rs
+++ b/src/test/ui/parser/extern-foreign-crate.rs
diff --git a/src/test/ui/parser/extern-foreign-crate.stderr b/src/test/ui/parser/extern-foreign-crate.stderr
new file mode 100644
index 00000000000..93eb9fd8de3
--- /dev/null
+++ b/src/test/ui/parser/extern-foreign-crate.stderr
@@ -0,0 +1,8 @@
+error: expected one of `;` or `as`, found `{`
+  --> $DIR/extern-foreign-crate.rs:16:18
+   |
+LL | extern crate foo {} //~ERROR expected one of `;` or `as`, found `{`
+   |                  ^ expected one of `;` or `as` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/extern-no-fn.rs b/src/test/ui/parser/extern-no-fn.rs
index aa0dbd4d4fc..aa0dbd4d4fc 100644
--- a/src/test/parse-fail/extern-no-fn.rs
+++ b/src/test/ui/parser/extern-no-fn.rs
diff --git a/src/test/ui/parser/extern-no-fn.stderr b/src/test/ui/parser/extern-no-fn.stderr
new file mode 100644
index 00000000000..29a7691f82b
--- /dev/null
+++ b/src/test/ui/parser/extern-no-fn.stderr
@@ -0,0 +1,10 @@
+error: missing `fn`, `type`, or `static` for extern-item declaration
+  --> $DIR/extern-no-fn.rs:13:9
+   |
+LL |   extern { //~ ERROR missing `fn`, `type`, or `static` for extern-item declaration
+   |  _________^
+LL | |     f();
+   | |____^ missing `fn`, `type`, or `static`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/impl-qpath.rs b/src/test/ui/parser/impl-qpath.rs
index 48dd888b2e5..48dd888b2e5 100644
--- a/src/test/parse-fail/impl-qpath.rs
+++ b/src/test/ui/parser/impl-qpath.rs
diff --git a/src/test/ui/parser/impl-qpath.stderr b/src/test/ui/parser/impl-qpath.stderr
new file mode 100644
index 00000000000..38a28f9001d
--- /dev/null
+++ b/src/test/ui/parser/impl-qpath.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!` or `::`, found `<eof>`
+  --> $DIR/impl-qpath.rs:18:1
+   |
+LL | FAIL //~ ERROR
+   | ^^^^ expected one of `!` or `::` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/import-from-path.rs b/src/test/ui/parser/import-from-path.rs
index fbd59d200a0..fbd59d200a0 100644
--- a/src/test/parse-fail/import-from-path.rs
+++ b/src/test/ui/parser/import-from-path.rs
diff --git a/src/test/ui/parser/import-from-path.stderr b/src/test/ui/parser/import-from-path.stderr
new file mode 100644
index 00000000000..1628c120945
--- /dev/null
+++ b/src/test/ui/parser/import-from-path.stderr
@@ -0,0 +1,8 @@
+error: expected `;`, found `::`
+  --> $DIR/import-from-path.rs:14:15
+   |
+LL | use foo::{bar}::baz
+   |               ^^ expected `;`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/import-from-rename.rs b/src/test/ui/parser/import-from-rename.rs
index c4d8ba2086d..c4d8ba2086d 100644
--- a/src/test/parse-fail/import-from-rename.rs
+++ b/src/test/ui/parser/import-from-rename.rs
diff --git a/src/test/ui/parser/import-from-rename.stderr b/src/test/ui/parser/import-from-rename.stderr
new file mode 100644
index 00000000000..6fdc7972a88
--- /dev/null
+++ b/src/test/ui/parser/import-from-rename.stderr
@@ -0,0 +1,8 @@
+error: expected `;`, found `as`
+  --> $DIR/import-from-rename.rs:15:16
+   |
+LL | use foo::{bar} as baz;
+   |                ^^ expected `;`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/import-glob-path.rs b/src/test/ui/parser/import-glob-path.rs
index 2faf833d4f1..2faf833d4f1 100644
--- a/src/test/parse-fail/import-glob-path.rs
+++ b/src/test/ui/parser/import-glob-path.rs
diff --git a/src/test/ui/parser/import-glob-path.stderr b/src/test/ui/parser/import-glob-path.stderr
new file mode 100644
index 00000000000..af7d0ee0c02
--- /dev/null
+++ b/src/test/ui/parser/import-glob-path.stderr
@@ -0,0 +1,8 @@
+error: expected `;`, found `::`
+  --> $DIR/import-glob-path.rs:14:11
+   |
+LL | use foo::*::bar
+   |           ^^ expected `;`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/import-glob-rename.rs b/src/test/ui/parser/import-glob-rename.rs
index 7e17e1f1d6c..7e17e1f1d6c 100644
--- a/src/test/parse-fail/import-glob-rename.rs
+++ b/src/test/ui/parser/import-glob-rename.rs
diff --git a/src/test/ui/parser/import-glob-rename.stderr b/src/test/ui/parser/import-glob-rename.stderr
new file mode 100644
index 00000000000..c36a946fd63
--- /dev/null
+++ b/src/test/ui/parser/import-glob-rename.stderr
@@ -0,0 +1,8 @@
+error: expected `;`, found `as`
+  --> $DIR/import-glob-rename.rs:15:12
+   |
+LL | use foo::* as baz;
+   |            ^^ expected `;`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/inner-attr-after-doc-comment.rs b/src/test/ui/parser/inner-attr-after-doc-comment.rs
index ed8342d9f5a..ed8342d9f5a 100644
--- a/src/test/parse-fail/inner-attr-after-doc-comment.rs
+++ b/src/test/ui/parser/inner-attr-after-doc-comment.rs
diff --git a/src/test/ui/parser/inner-attr-after-doc-comment.stderr b/src/test/ui/parser/inner-attr-after-doc-comment.stderr
new file mode 100644
index 00000000000..af050e662a2
--- /dev/null
+++ b/src/test/ui/parser/inner-attr-after-doc-comment.stderr
@@ -0,0 +1,10 @@
+error: an inner attribute is not permitted following an outer doc comment
+  --> $DIR/inner-attr-after-doc-comment.rs:18:3
+   |
+LL | #![recursion_limit="100"]
+   |   ^
+   |
+   = 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/parse-fail/inner-attr.rs b/src/test/ui/parser/inner-attr.rs
index 8cebda66445..8cebda66445 100644
--- a/src/test/parse-fail/inner-attr.rs
+++ b/src/test/ui/parser/inner-attr.rs
diff --git a/src/test/ui/parser/inner-attr.stderr b/src/test/ui/parser/inner-attr.stderr
new file mode 100644
index 00000000000..89fb5cfad5e
--- /dev/null
+++ b/src/test/ui/parser/inner-attr.stderr
@@ -0,0 +1,10 @@
+error: an inner attribute is not permitted following an outer attribute
+  --> $DIR/inner-attr.rs:15:3
+   |
+LL | #![recursion_limit="100"] //~ ERROR an inner attribute is not permitted following an outer attribute
+   |   ^
+   |
+   = 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/parse-fail/int-literal-too-large-span.rs b/src/test/ui/parser/int-literal-too-large-span.rs
index 1af8df7d2f6..1af8df7d2f6 100644
--- a/src/test/parse-fail/int-literal-too-large-span.rs
+++ b/src/test/ui/parser/int-literal-too-large-span.rs
diff --git a/src/test/ui/parser/int-literal-too-large-span.stderr b/src/test/ui/parser/int-literal-too-large-span.stderr
new file mode 100644
index 00000000000..391cb52fd40
--- /dev/null
+++ b/src/test/ui/parser/int-literal-too-large-span.stderr
@@ -0,0 +1,8 @@
+error: int literal is too large
+  --> $DIR/int-literal-too-large-span.rs:16:5
+   |
+LL |     9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-10392-2.rs b/src/test/ui/parser/issue-10392-2.rs
index 2817912666e..2817912666e 100644
--- a/src/test/parse-fail/issue-10392-2.rs
+++ b/src/test/ui/parser/issue-10392-2.rs
diff --git a/src/test/ui/parser/issue-10392-2.stderr b/src/test/ui/parser/issue-10392-2.stderr
new file mode 100644
index 00000000000..41548ed4a2f
--- /dev/null
+++ b/src/test/ui/parser/issue-10392-2.stderr
@@ -0,0 +1,12 @@
+error: expected `}`, found `,`
+  --> $DIR/issue-10392-2.rs:18:15
+   |
+LL |     let A { .., } = a(); //~ ERROR: expected `}`
+   |             --^
+   |             | |
+   |             | expected `}`
+   |             | help: remove this comma
+   |             `..` must be at the end and cannot have a trailing comma
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-10392.rs b/src/test/ui/parser/issue-10392.rs
index 9c67575bcc1..9c67575bcc1 100644
--- a/src/test/parse-fail/issue-10392.rs
+++ b/src/test/ui/parser/issue-10392.rs
diff --git a/src/test/ui/parser/issue-10392.stderr b/src/test/ui/parser/issue-10392.stderr
new file mode 100644
index 00000000000..0401fe05cf8
--- /dev/null
+++ b/src/test/ui/parser/issue-10392.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `,`
+  --> $DIR/issue-10392.rs:18:13
+   |
+LL |     let A { , } = a(); //~ ERROR: expected ident
+   |             ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-enum.rs b/src/test/ui/parser/issue-14303-enum.rs
index 6bcf588b516..6bcf588b516 100644
--- a/src/test/parse-fail/issue-14303-enum.rs
+++ b/src/test/ui/parser/issue-14303-enum.rs
diff --git a/src/test/ui/parser/issue-14303-enum.stderr b/src/test/ui/parser/issue-14303-enum.stderr
new file mode 100644
index 00000000000..7d546cb2180
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-enum.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-enum.rs:13:15
+   |
+LL | enum X<'a, T, 'b> {
+   |               ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-fn-def.rs b/src/test/ui/parser/issue-14303-fn-def.rs
index ae8e38c0377..ae8e38c0377 100644
--- a/src/test/parse-fail/issue-14303-fn-def.rs
+++ b/src/test/ui/parser/issue-14303-fn-def.rs
diff --git a/src/test/ui/parser/issue-14303-fn-def.stderr b/src/test/ui/parser/issue-14303-fn-def.stderr
new file mode 100644
index 00000000000..c7b57f36376
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-fn-def.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-fn-def.rs:13:15
+   |
+LL | fn foo<'a, T, 'b>(x: &'a T) {}
+   |               ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-fncall.rs b/src/test/ui/parser/issue-14303-fncall.rs
index 80a9b3d7c0d..80a9b3d7c0d 100644
--- a/src/test/parse-fail/issue-14303-fncall.rs
+++ b/src/test/ui/parser/issue-14303-fncall.rs
diff --git a/src/test/ui/parser/issue-14303-fncall.stderr b/src/test/ui/parser/issue-14303-fncall.stderr
new file mode 100644
index 00000000000..cca23c70279
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-fncall.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-fncall.rs:16:31
+   |
+LL |     .collect::<Vec<'a, usize, 'b>>()
+   |                               ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-impl.rs b/src/test/ui/parser/issue-14303-impl.rs
index f06d5f29e9e..f06d5f29e9e 100644
--- a/src/test/parse-fail/issue-14303-impl.rs
+++ b/src/test/ui/parser/issue-14303-impl.rs
diff --git a/src/test/ui/parser/issue-14303-impl.stderr b/src/test/ui/parser/issue-14303-impl.stderr
new file mode 100644
index 00000000000..0b7016eb7f7
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-impl.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-impl.rs:15:13
+   |
+LL | impl<'a, T, 'b> X {}
+   |             ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-path.rs b/src/test/ui/parser/issue-14303-path.rs
index f0d1feffec8..f0d1feffec8 100644
--- a/src/test/parse-fail/issue-14303-path.rs
+++ b/src/test/ui/parser/issue-14303-path.rs
diff --git a/src/test/ui/parser/issue-14303-path.stderr b/src/test/ui/parser/issue-14303-path.stderr
new file mode 100644
index 00000000000..f0a45998d17
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-path.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-path.rs:13:37
+   |
+LL | fn bar<'a, T>(x: mymodule::X<'a, T, 'b, 'c>) {}
+   |                                     ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-struct.rs b/src/test/ui/parser/issue-14303-struct.rs
index 5673e4f2a4c..5673e4f2a4c 100644
--- a/src/test/parse-fail/issue-14303-struct.rs
+++ b/src/test/ui/parser/issue-14303-struct.rs
diff --git a/src/test/ui/parser/issue-14303-struct.stderr b/src/test/ui/parser/issue-14303-struct.stderr
new file mode 100644
index 00000000000..4a4b6789194
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-struct.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-struct.rs:13:17
+   |
+LL | struct X<'a, T, 'b> {
+   |                 ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-14303-trait.rs b/src/test/ui/parser/issue-14303-trait.rs
index 8af5af9e933..8af5af9e933 100644
--- a/src/test/parse-fail/issue-14303-trait.rs
+++ b/src/test/ui/parser/issue-14303-trait.rs
diff --git a/src/test/ui/parser/issue-14303-trait.stderr b/src/test/ui/parser/issue-14303-trait.stderr
new file mode 100644
index 00000000000..ab5cc5655bb
--- /dev/null
+++ b/src/test/ui/parser/issue-14303-trait.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to type parameters
+  --> $DIR/issue-14303-trait.rs:13:18
+   |
+LL | trait Foo<'a, T, 'b> {}
+   |                  ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-15914.rs b/src/test/ui/parser/issue-15914.rs
index 0b8f0ac221a..0b8f0ac221a 100644
--- a/src/test/parse-fail/issue-15914.rs
+++ b/src/test/ui/parser/issue-15914.rs
diff --git a/src/test/ui/parser/issue-15914.stderr b/src/test/ui/parser/issue-15914.stderr
new file mode 100644
index 00000000000..fbf0ea13c73
--- /dev/null
+++ b/src/test/ui/parser/issue-15914.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `(`
+  --> $DIR/issue-15914.rs:15:9
+   |
+LL |         (); //~ ERROR expected identifier, found `(`
+   |         ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-1655.rs b/src/test/ui/parser/issue-1655.rs
index a044dff261d..a044dff261d 100644
--- a/src/test/parse-fail/issue-1655.rs
+++ b/src/test/ui/parser/issue-1655.rs
diff --git a/src/test/ui/parser/issue-1655.stderr b/src/test/ui/parser/issue-1655.stderr
new file mode 100644
index 00000000000..890400acccf
--- /dev/null
+++ b/src/test/ui/parser/issue-1655.stderr
@@ -0,0 +1,8 @@
+error: expected `[`, found `vec`
+  --> $DIR/issue-1655.rs:15:6
+   |
+LL |     #vec[doc(
+   |      ^^^ expected `[`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-17383.rs b/src/test/ui/parser/issue-17383.rs
index 48f629fd828..48f629fd828 100644
--- a/src/test/parse-fail/issue-17383.rs
+++ b/src/test/ui/parser/issue-17383.rs
diff --git a/src/test/ui/parser/issue-17383.stderr b/src/test/ui/parser/issue-17383.stderr
new file mode 100644
index 00000000000..321989e5fab
--- /dev/null
+++ b/src/test/ui/parser/issue-17383.stderr
@@ -0,0 +1,8 @@
+error: discriminator values can only be used with a field-less enum
+  --> $DIR/issue-17383.rs:15:9
+   |
+LL |         b'a' //~ ERROR discriminator values can only be used with a field-less enum
+   |         ^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-17718-const-mut.rs b/src/test/ui/parser/issue-17718-const-mut.rs
index b450cb25e6b..b450cb25e6b 100644
--- a/src/test/parse-fail/issue-17718-const-mut.rs
+++ b/src/test/ui/parser/issue-17718-const-mut.rs
diff --git a/src/test/ui/parser/issue-17718-const-mut.stderr b/src/test/ui/parser/issue-17718-const-mut.stderr
new file mode 100644
index 00000000000..b294a8572fb
--- /dev/null
+++ b/src/test/ui/parser/issue-17718-const-mut.stderr
@@ -0,0 +1,10 @@
+error: const globals cannot be mutable
+  --> $DIR/issue-17718-const-mut.rs:14:1
+   |
+LL | mut //~ ERROR: const globals cannot be mutable
+   | ^^^
+   |
+   = help: did you mean to declare a static?
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-17904-2.rs b/src/test/ui/parser/issue-17904-2.rs
index 3f41c0edd2e..3f41c0edd2e 100644
--- a/src/test/parse-fail/issue-17904-2.rs
+++ b/src/test/ui/parser/issue-17904-2.rs
diff --git a/src/test/ui/parser/issue-17904-2.stderr b/src/test/ui/parser/issue-17904-2.stderr
new file mode 100644
index 00000000000..65ddadb011d
--- /dev/null
+++ b/src/test/ui/parser/issue-17904-2.stderr
@@ -0,0 +1,8 @@
+error: expected item, found `where`
+  --> $DIR/issue-17904-2.rs:13:24
+   |
+LL | struct Bar<T> { x: T } where T: Copy //~ ERROR expected item, found `where`
+   |                        ^^^^^ expected item
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-17904.rs b/src/test/ui/parser/issue-17904.rs
index a54d89f48c3..a54d89f48c3 100644
--- a/src/test/parse-fail/issue-17904.rs
+++ b/src/test/ui/parser/issue-17904.rs
diff --git a/src/test/ui/parser/issue-17904.stderr b/src/test/ui/parser/issue-17904.stderr
new file mode 100644
index 00000000000..c783d97478c
--- /dev/null
+++ b/src/test/ui/parser/issue-17904.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `==`, or `=`, found `;`
+  --> $DIR/issue-17904.rs:16:33
+   |
+LL | struct Foo<T> where T: Copy, (T); //~ ERROR expected one of `:`, `==`, or `=`, found `;`
+   |                                 ^ expected one of `:`, `==`, or `=` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-1802-1.rs b/src/test/ui/parser/issue-1802-1.rs
index fc3d071729f..fc3d071729f 100644
--- a/src/test/parse-fail/issue-1802-1.rs
+++ b/src/test/ui/parser/issue-1802-1.rs
diff --git a/src/test/ui/parser/issue-1802-1.stderr b/src/test/ui/parser/issue-1802-1.stderr
new file mode 100644
index 00000000000..b4ce85e784c
--- /dev/null
+++ b/src/test/ui/parser/issue-1802-1.stderr
@@ -0,0 +1,8 @@
+error: no valid digits found for number
+  --> $DIR/issue-1802-1.rs:15:16
+   |
+LL |     log(error, 0b);
+   |                ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-1802-2.rs b/src/test/ui/parser/issue-1802-2.rs
index 05c5a4bcb02..05c5a4bcb02 100644
--- a/src/test/parse-fail/issue-1802-2.rs
+++ b/src/test/ui/parser/issue-1802-2.rs
diff --git a/src/test/ui/parser/issue-1802-2.stderr b/src/test/ui/parser/issue-1802-2.stderr
new file mode 100644
index 00000000000..d8e68529a6d
--- /dev/null
+++ b/src/test/ui/parser/issue-1802-2.stderr
@@ -0,0 +1,8 @@
+error: no valid digits found for number
+  --> $DIR/issue-1802-2.rs:15:16
+   |
+LL |     log(error, 0b_usize);
+   |                ^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-19096.rs b/src/test/ui/parser/issue-19096.rs
index 6ba0fb5f15b..6ba0fb5f15b 100644
--- a/src/test/parse-fail/issue-19096.rs
+++ b/src/test/ui/parser/issue-19096.rs
diff --git a/src/test/ui/parser/issue-19096.stderr b/src/test/ui/parser/issue-19096.stderr
new file mode 100644
index 00000000000..0e99f4e125c
--- /dev/null
+++ b/src/test/ui/parser/issue-19096.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `::`
+  --> $DIR/issue-19096.rs:15:8
+   |
+LL |     t.0::<isize>; //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `::`
+   |        ^^ expected one of `.`, `;`, `?`, `}`, or an operator here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-19398.rs b/src/test/ui/parser/issue-19398.rs
index a91d513b83d..a91d513b83d 100644
--- a/src/test/parse-fail/issue-19398.rs
+++ b/src/test/ui/parser/issue-19398.rs
diff --git a/src/test/ui/parser/issue-19398.stderr b/src/test/ui/parser/issue-19398.stderr
new file mode 100644
index 00000000000..08957f2d383
--- /dev/null
+++ b/src/test/ui/parser/issue-19398.stderr
@@ -0,0 +1,8 @@
+error: expected `fn`, found `unsafe`
+  --> $DIR/issue-19398.rs:14:19
+   |
+LL |     extern "Rust" unsafe fn foo(); //~ ERROR expected `fn`, found `unsafe`
+   |                   ^^^^^^ expected `fn` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-20711-2.rs b/src/test/ui/parser/issue-20711-2.rs
index d0836d4af97..d0836d4af97 100644
--- a/src/test/parse-fail/issue-20711-2.rs
+++ b/src/test/ui/parser/issue-20711-2.rs
diff --git a/src/test/ui/parser/issue-20711-2.stderr b/src/test/ui/parser/issue-20711-2.stderr
new file mode 100644
index 00000000000..ce6d6cbdc06
--- /dev/null
+++ b/src/test/ui/parser/issue-20711-2.stderr
@@ -0,0 +1,10 @@
+error: expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, or `unsafe`, found `}`
+  --> $DIR/issue-20711-2.rs:20:1
+   |
+LL |     #[stable(feature = "rust1", since = "1.0.0")]
+   |                                                  - expected one of 10 possible tokens here
+LL | } //~ ERROR expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, or
+   | ^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-20711.rs b/src/test/ui/parser/issue-20711.rs
index d9442247988..d9442247988 100644
--- a/src/test/parse-fail/issue-20711.rs
+++ b/src/test/ui/parser/issue-20711.rs
diff --git a/src/test/ui/parser/issue-20711.stderr b/src/test/ui/parser/issue-20711.stderr
new file mode 100644
index 00000000000..b5b56361577
--- /dev/null
+++ b/src/test/ui/parser/issue-20711.stderr
@@ -0,0 +1,10 @@
+error: expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, or `unsafe`, found `}`
+  --> $DIR/issue-20711.rs:18:1
+   |
+LL |     #[stable(feature = "rust1", since = "1.0.0")]
+   |                                                  - expected one of 10 possible tokens here
+LL | } //~ ERROR expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, or
+   | ^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-21153.rs b/src/test/ui/parser/issue-21153.rs
index b6d95ffb911..b6d95ffb911 100644
--- a/src/test/parse-fail/issue-21153.rs
+++ b/src/test/ui/parser/issue-21153.rs
diff --git a/src/test/ui/parser/issue-21153.stderr b/src/test/ui/parser/issue-21153.stderr
new file mode 100644
index 00000000000..47e05f1b360
--- /dev/null
+++ b/src/test/ui/parser/issue-21153.stderr
@@ -0,0 +1,10 @@
+error: missing `fn`, `type`, or `const` for trait-item declaration
+  --> $DIR/issue-21153.rs:13:29
+   |
+LL |   trait MyTrait<T>: Iterator { //~ ERROR missing `fn`, `type`, or `const`
+   |  _____________________________^
+LL | |     Item = T;
+   | |____^ missing `fn`, `type`, or `const`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-22647.rs b/src/test/ui/parser/issue-22647.rs
index 1ace57edba3..1ace57edba3 100644
--- a/src/test/parse-fail/issue-22647.rs
+++ b/src/test/ui/parser/issue-22647.rs
diff --git a/src/test/ui/parser/issue-22647.stderr b/src/test/ui/parser/issue-22647.stderr
new file mode 100644
index 00000000000..8f28d8b1288
--- /dev/null
+++ b/src/test/ui/parser/issue-22647.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `<`
+  --> $DIR/issue-22647.rs:12:15
+   |
+LL |     let caller<F> = |f: F|  //~ ERROR expected one of `:`, `;`, `=`, or `@`, found `<`
+   |               ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-22712.rs b/src/test/ui/parser/issue-22712.rs
index ed936cdd9a9..ed936cdd9a9 100644
--- a/src/test/parse-fail/issue-22712.rs
+++ b/src/test/ui/parser/issue-22712.rs
diff --git a/src/test/ui/parser/issue-22712.stderr b/src/test/ui/parser/issue-22712.stderr
new file mode 100644
index 00000000000..21b67c75321
--- /dev/null
+++ b/src/test/ui/parser/issue-22712.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `<`
+  --> $DIR/issue-22712.rs:16:12
+   |
+LL |     let Foo<Vec<u8>>  //~ ERROR expected one of `:`, `;`, `=`, or `@`, found `<`
+   |            ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-2354-1.rs b/src/test/ui/parser/issue-2354-1.rs
index f24c5440735..f24c5440735 100644
--- a/src/test/parse-fail/issue-2354-1.rs
+++ b/src/test/ui/parser/issue-2354-1.rs
diff --git a/src/test/ui/parser/issue-2354-1.stderr b/src/test/ui/parser/issue-2354-1.stderr
new file mode 100644
index 00000000000..bcec78a3d9b
--- /dev/null
+++ b/src/test/ui/parser/issue-2354-1.stderr
@@ -0,0 +1,8 @@
+error: unexpected close delimiter: `}`
+  --> $DIR/issue-2354-1.rs:13:24
+   |
+LL | static foo: isize = 2; } //~ ERROR unexpected close delimiter:
+   |                        ^ unexpected close delimiter
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-23620-invalid-escapes.rs b/src/test/ui/parser/issue-23620-invalid-escapes.rs
index dfeaae49002..dfeaae49002 100644
--- a/src/test/parse-fail/issue-23620-invalid-escapes.rs
+++ b/src/test/ui/parser/issue-23620-invalid-escapes.rs
diff --git a/src/test/ui/parser/issue-23620-invalid-escapes.stderr b/src/test/ui/parser/issue-23620-invalid-escapes.stderr
new file mode 100644
index 00000000000..a46bcb07200
--- /dev/null
+++ b/src/test/ui/parser/issue-23620-invalid-escapes.stderr
@@ -0,0 +1,122 @@
+error: unicode escape sequences cannot be used as a byte or in a byte string
+  --> $DIR/issue-23620-invalid-escapes.rs:14:15
+   |
+LL |     let _ = b"/u{a66e}";
+   |               ^^^^^^^^
+
+error: unicode escape sequences cannot be used as a byte or in a byte string
+  --> $DIR/issue-23620-invalid-escapes.rs:17:15
+   |
+LL |     let _ = b'/u{a66e}';
+   |               ^^^^^^^^
+
+error: incorrect unicode escape sequence
+  --> $DIR/issue-23620-invalid-escapes.rs:20:15
+   |
+LL |     let _ = b'/u';
+   |               ^^
+   |
+help: format of unicode escape sequences is `/u{…}`
+  --> $DIR/issue-23620-invalid-escapes.rs:20:15
+   |
+LL |     let _ = b'/u';
+   |               ^^
+
+error: unicode escape sequences cannot be used as a byte or in a byte string
+  --> $DIR/issue-23620-invalid-escapes.rs:20:15
+   |
+LL |     let _ = b'/u';
+   |               ^^
+
+error: numeric character escape is too short
+  --> $DIR/issue-23620-invalid-escapes.rs:24:17
+   |
+LL |     let _ = b'/x5';
+   |                 ^
+
+error: invalid character in numeric character escape: x
+  --> $DIR/issue-23620-invalid-escapes.rs:27:17
+   |
+LL |     let _ = b'/xxy';
+   |                 ^
+
+error: invalid character in numeric character escape: y
+  --> $DIR/issue-23620-invalid-escapes.rs:27:18
+   |
+LL |     let _ = b'/xxy';
+   |                  ^
+
+error: numeric character escape is too short
+  --> $DIR/issue-23620-invalid-escapes.rs:31:16
+   |
+LL |     let _ = '/x5';
+   |                ^
+
+error: invalid character in numeric character escape: x
+  --> $DIR/issue-23620-invalid-escapes.rs:34:16
+   |
+LL |     let _ = '/xxy';
+   |                ^
+
+error: invalid character in numeric character escape: y
+  --> $DIR/issue-23620-invalid-escapes.rs:34:17
+   |
+LL |     let _ = '/xxy';
+   |                 ^
+
+error: unicode escape sequences cannot be used as a byte or in a byte string
+  --> $DIR/issue-23620-invalid-escapes.rs:38:15
+   |
+LL |     let _ = b"/u{a4a4} /xf /u";
+   |               ^^^^^^^^
+
+error: invalid character in numeric character escape:  
+  --> $DIR/issue-23620-invalid-escapes.rs:38:27
+   |
+LL |     let _ = b"/u{a4a4} /xf /u";
+   |                           ^
+
+error: incorrect unicode escape sequence
+  --> $DIR/issue-23620-invalid-escapes.rs:38:28
+   |
+LL |     let _ = b"/u{a4a4} /xf /u";
+   |                            ^^
+   |
+help: format of unicode escape sequences is `/u{…}`
+  --> $DIR/issue-23620-invalid-escapes.rs:38:28
+   |
+LL |     let _ = b"/u{a4a4} /xf /u";
+   |                            ^^
+
+error: unicode escape sequences cannot be used as a byte or in a byte string
+  --> $DIR/issue-23620-invalid-escapes.rs:38:28
+   |
+LL |     let _ = b"/u{a4a4} /xf /u";
+   |                            ^^
+
+error: invalid character in numeric character escape:  
+  --> $DIR/issue-23620-invalid-escapes.rs:44:17
+   |
+LL |     let _ = "/xf /u";
+   |                 ^
+
+error: this form of character escape may only be used with characters in the range [/x00-/x7f]
+  --> $DIR/issue-23620-invalid-escapes.rs:44:16
+   |
+LL |     let _ = "/xf /u";
+   |                ^^
+
+error: incorrect unicode escape sequence
+  --> $DIR/issue-23620-invalid-escapes.rs:44:18
+   |
+LL |     let _ = "/xf /u";
+   |                  ^^
+   |
+help: format of unicode escape sequences is `/u{…}`
+  --> $DIR/issue-23620-invalid-escapes.rs:44:18
+   |
+LL |     let _ = "/xf /u";
+   |                  ^^
+
+error: aborting due to 17 previous errors
+
diff --git a/src/test/parse-fail/issue-24197.rs b/src/test/ui/parser/issue-24197.rs
index 37d62182612..37d62182612 100644
--- a/src/test/parse-fail/issue-24197.rs
+++ b/src/test/ui/parser/issue-24197.rs
diff --git a/src/test/ui/parser/issue-24197.stderr b/src/test/ui/parser/issue-24197.stderr
new file mode 100644
index 00000000000..af382a20ac6
--- /dev/null
+++ b/src/test/ui/parser/issue-24197.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `[`
+  --> $DIR/issue-24197.rs:12:12
+   |
+LL |     let buf[0] = 0; //~ ERROR expected one of `:`, `;`, `=`, or `@`, found `[`
+   |            ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-24375.rs b/src/test/ui/parser/issue-24375.rs
index 8723423325c..8723423325c 100644
--- a/src/test/parse-fail/issue-24375.rs
+++ b/src/test/ui/parser/issue-24375.rs
diff --git a/src/test/ui/parser/issue-24375.stderr b/src/test/ui/parser/issue-24375.stderr
new file mode 100644
index 00000000000..7d82e13626a
--- /dev/null
+++ b/src/test/ui/parser/issue-24375.stderr
@@ -0,0 +1,8 @@
+error: expected one of `=>`, `@`, `if`, or `|`, found `[`
+  --> $DIR/issue-24375.rs:16:12
+   |
+LL |         tmp[0] => {} //~ ERROR expected one of `=>`, `@`, `if`, or `|`, found `[`
+   |            ^ expected one of `=>`, `@`, `if`, or `|` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-24780.rs b/src/test/ui/parser/issue-24780.rs
index 6fd4ee38a4d..6fd4ee38a4d 100644
--- a/src/test/parse-fail/issue-24780.rs
+++ b/src/test/ui/parser/issue-24780.rs
diff --git a/src/test/ui/parser/issue-24780.stderr b/src/test/ui/parser/issue-24780.stderr
new file mode 100644
index 00000000000..01f110e3d24
--- /dev/null
+++ b/src/test/ui/parser/issue-24780.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `+`, `::`, `where`, or `{`, found `>`
+  --> $DIR/issue-24780.rs:17:23
+   |
+LL | fn foo() -> Vec<usize>> {
+   |                       ^ expected one of `!`, `+`, `::`, `where`, or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-27255.rs b/src/test/ui/parser/issue-27255.rs
index a751c4af494..a751c4af494 100644
--- a/src/test/parse-fail/issue-27255.rs
+++ b/src/test/ui/parser/issue-27255.rs
diff --git a/src/test/ui/parser/issue-27255.stderr b/src/test/ui/parser/issue-27255.stderr
new file mode 100644
index 00000000000..9caa6087420
--- /dev/null
+++ b/src/test/ui/parser/issue-27255.stderr
@@ -0,0 +1,8 @@
+error: missing `for` in a trait impl
+  --> $DIR/issue-27255.rs:13:7
+   |
+LL | impl A .. {} //~ ERROR
+   |       ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-30318.rs b/src/test/ui/parser/issue-30318.rs
index 9ea0bb78283..9ea0bb78283 100644
--- a/src/test/parse-fail/issue-30318.rs
+++ b/src/test/ui/parser/issue-30318.rs
diff --git a/src/test/ui/parser/issue-30318.stderr b/src/test/ui/parser/issue-30318.stderr
new file mode 100644
index 00000000000..778a58463f7
--- /dev/null
+++ b/src/test/ui/parser/issue-30318.stderr
@@ -0,0 +1,10 @@
+error: expected outer doc comment
+  --> $DIR/issue-30318.rs:15:1
+   |
+LL | //! Misplaced comment...
+   | ^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: inner doc comments like this (starting with `//!` or `/*!`) can only appear before items
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-3036.rs b/src/test/ui/parser/issue-3036.rs
index 229b12136fc..229b12136fc 100644
--- a/src/test/parse-fail/issue-3036.rs
+++ b/src/test/ui/parser/issue-3036.rs
diff --git a/src/test/ui/parser/issue-3036.stderr b/src/test/ui/parser/issue-3036.stderr
new file mode 100644
index 00000000000..e0e398381b7
--- /dev/null
+++ b/src/test/ui/parser/issue-3036.stderr
@@ -0,0 +1,10 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `}`
+  --> $DIR/issue-3036.rs:18:1
+   |
+LL |     let x = 3
+   |              - expected one of `.`, `;`, `?`, or an operator here
+LL | } //~ ERROR: expected one of `.`, `;`, `?`, or an operator, found `}`
+   | ^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-32214.rs b/src/test/ui/parser/issue-32214.rs
index 9e200094093..9e200094093 100644
--- a/src/test/parse-fail/issue-32214.rs
+++ b/src/test/ui/parser/issue-32214.rs
diff --git a/src/test/ui/parser/issue-32214.stderr b/src/test/ui/parser/issue-32214.stderr
new file mode 100644
index 00000000000..cce6cf6ede2
--- /dev/null
+++ b/src/test/ui/parser/issue-32214.stderr
@@ -0,0 +1,8 @@
+error: type parameters must be declared prior to associated type bindings
+  --> $DIR/issue-32214.rs:13:37
+   |
+LL | pub fn test<W, I: Iterator<Item=(), W> >() {}
+   |                                     ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-32446.rs b/src/test/ui/parser/issue-32446.rs
index 90b9a4aae8b..90b9a4aae8b 100644
--- a/src/test/parse-fail/issue-32446.rs
+++ b/src/test/ui/parser/issue-32446.rs
diff --git a/src/test/ui/parser/issue-32446.stderr b/src/test/ui/parser/issue-32446.stderr
new file mode 100644
index 00000000000..608a9a6e6e0
--- /dev/null
+++ b/src/test/ui/parser/issue-32446.stderr
@@ -0,0 +1,8 @@
+error: expected one of `async`, `const`, `extern`, `fn`, `type`, `unsafe`, or `}`, found `...`
+  --> $DIR/issue-32446.rs:16:11
+   |
+LL | trait T { ... } //~ ERROR
+   |           ^^^ expected one of 7 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-32501.rs b/src/test/ui/parser/issue-32501.rs
index 21db2f50517..21db2f50517 100644
--- a/src/test/parse-fail/issue-32501.rs
+++ b/src/test/ui/parser/issue-32501.rs
diff --git a/src/test/ui/parser/issue-32501.stderr b/src/test/ui/parser/issue-32501.stderr
new file mode 100644
index 00000000000..6836509ebba
--- /dev/null
+++ b/src/test/ui/parser/issue-32501.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found reserved identifier `_`
+  --> $DIR/issue-32501.rs:19:13
+   |
+LL |     let mut _ = 0; //~ ERROR expected identifier, found reserved identifier `_`
+   |             ^ expected identifier, found reserved identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-32505.rs b/src/test/ui/parser/issue-32505.rs
index 246941ff259..246941ff259 100644
--- a/src/test/parse-fail/issue-32505.rs
+++ b/src/test/ui/parser/issue-32505.rs
diff --git a/src/test/ui/parser/issue-32505.stderr b/src/test/ui/parser/issue-32505.stderr
new file mode 100644
index 00000000000..e89c907a3b7
--- /dev/null
+++ b/src/test/ui/parser/issue-32505.stderr
@@ -0,0 +1,8 @@
+error: expected expression, found `)`
+  --> $DIR/issue-32505.rs:14:12
+   |
+LL |     foo(|_|) //~ ERROR expected expression, found `)`
+   |            ^ expected expression
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-33262.rs b/src/test/ui/parser/issue-33262.rs
index d6bbfdc59f5..d6bbfdc59f5 100644
--- a/src/test/parse-fail/issue-33262.rs
+++ b/src/test/ui/parser/issue-33262.rs
diff --git a/src/test/ui/parser/issue-33262.stderr b/src/test/ui/parser/issue-33262.stderr
new file mode 100644
index 00000000000..184dacdaca4
--- /dev/null
+++ b/src/test/ui/parser/issue-33262.stderr
@@ -0,0 +1,8 @@
+error: expected type, found `{`
+  --> $DIR/issue-33262.rs:16:22
+   |
+LL |     for i in 0..a as { }
+   |                      ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-33413.rs b/src/test/ui/parser/issue-33413.rs
index 25ae7b4c55a..25ae7b4c55a 100644
--- a/src/test/parse-fail/issue-33413.rs
+++ b/src/test/ui/parser/issue-33413.rs
diff --git a/src/test/ui/parser/issue-33413.stderr b/src/test/ui/parser/issue-33413.stderr
new file mode 100644
index 00000000000..189ace74b9c
--- /dev/null
+++ b/src/test/ui/parser/issue-33413.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found `*`
+  --> $DIR/issue-33413.rs:14:10
+   |
+LL |     fn f(*, a: u8) -> u8 {} //~ ERROR expected pattern, found `*`
+   |          ^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-33455.rs b/src/test/ui/parser/issue-33455.rs
index 96070332f06..96070332f06 100644
--- a/src/test/parse-fail/issue-33455.rs
+++ b/src/test/ui/parser/issue-33455.rs
diff --git a/src/test/ui/parser/issue-33455.stderr b/src/test/ui/parser/issue-33455.stderr
new file mode 100644
index 00000000000..7f85464510f
--- /dev/null
+++ b/src/test/ui/parser/issue-33455.stderr
@@ -0,0 +1,8 @@
+error: expected one of `::`, `;`, or `as`, found `.`
+  --> $DIR/issue-33455.rs:11:8
+   |
+LL | use foo.bar; //~ ERROR expected one of `::`, `;`, or `as`, found `.`
+   |        ^ expected one of `::`, `;`, or `as` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-33569.rs b/src/test/ui/parser/issue-33569.rs
index 15d491719a6..15d491719a6 100644
--- a/src/test/parse-fail/issue-33569.rs
+++ b/src/test/ui/parser/issue-33569.rs
diff --git a/src/test/ui/parser/issue-33569.stderr b/src/test/ui/parser/issue-33569.stderr
new file mode 100644
index 00000000000..1bcd3f55a70
--- /dev/null
+++ b/src/test/ui/parser/issue-33569.stderr
@@ -0,0 +1,20 @@
+error: expected identifier, found `+`
+  --> $DIR/issue-33569.rs:14:8
+   |
+LL |     { $+ } => { //~ ERROR expected identifier, found `+`
+   |        ^
+
+error: expected `*` or `+`
+  --> $DIR/issue-33569.rs:16:13
+   |
+LL |         $(x)(y) //~ ERROR expected `*` or `+`
+   |             ^^^
+
+error: missing fragment specifier
+  --> $DIR/issue-33569.rs:14:8
+   |
+LL |     { $+ } => { //~ ERROR expected identifier, found `+`
+   |        ^
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/parse-fail/issue-37113.rs b/src/test/ui/parser/issue-37113.rs
index 14c6f3944bb..14c6f3944bb 100644
--- a/src/test/parse-fail/issue-37113.rs
+++ b/src/test/ui/parser/issue-37113.rs
diff --git a/src/test/ui/parser/issue-37113.stderr b/src/test/ui/parser/issue-37113.stderr
new file mode 100644
index 00000000000..1e8f017e1db
--- /dev/null
+++ b/src/test/ui/parser/issue-37113.stderr
@@ -0,0 +1,11 @@
+error: expected identifier, found `String`
+  --> $DIR/issue-37113.rs:14:16
+   |
+LL |             $( $t, )* //~ ERROR expected identifier, found `String`
+   |                ^^ expected identifier
+...
+LL |     test_macro!(String,);
+   |     --------------------- in this macro invocation
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-37234.rs b/src/test/ui/parser/issue-37234.rs
index 93a1468bf7b..93a1468bf7b 100644
--- a/src/test/parse-fail/issue-37234.rs
+++ b/src/test/ui/parser/issue-37234.rs
diff --git a/src/test/ui/parser/issue-37234.stderr b/src/test/ui/parser/issue-37234.stderr
new file mode 100644
index 00000000000..28dd71316aa
--- /dev/null
+++ b/src/test/ui/parser/issue-37234.stderr
@@ -0,0 +1,11 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `""`
+  --> $DIR/issue-37234.rs:13:19
+   |
+LL |         let x = 5 ""; //~ ERROR found `""`
+   |                   ^^ expected one of `.`, `;`, `?`, or an operator here
+...
+LL |     failed!();
+   |     ---------- in this macro invocation
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-43692.rs b/src/test/ui/parser/issue-43692.rs
index eb5d050e102..eb5d050e102 100644
--- a/src/test/parse-fail/issue-43692.rs
+++ b/src/test/ui/parser/issue-43692.rs
diff --git a/src/test/ui/parser/issue-43692.stderr b/src/test/ui/parser/issue-43692.stderr
new file mode 100644
index 00000000000..c5ea50be487
--- /dev/null
+++ b/src/test/ui/parser/issue-43692.stderr
@@ -0,0 +1,8 @@
+error: invalid start of unicode escape
+  --> $DIR/issue-43692.rs:14:9
+   |
+LL |     '/u{_10FFFF}'; //~ ERROR invalid start of unicode escape
+   |         ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-5544-a.rs b/src/test/ui/parser/issue-5544-a.rs
index cf1500e34d8..cf1500e34d8 100644
--- a/src/test/parse-fail/issue-5544-a.rs
+++ b/src/test/ui/parser/issue-5544-a.rs
diff --git a/src/test/ui/parser/issue-5544-a.stderr b/src/test/ui/parser/issue-5544-a.stderr
new file mode 100644
index 00000000000..7fd3bc9d6ea
--- /dev/null
+++ b/src/test/ui/parser/issue-5544-a.stderr
@@ -0,0 +1,8 @@
+error: int literal is too large
+  --> $DIR/issue-5544-a.rs:14:19
+   |
+LL |     let __isize = 340282366920938463463374607431768211456; // 2^128
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-5544-b.rs b/src/test/ui/parser/issue-5544-b.rs
index 8c0b6741cb8..8c0b6741cb8 100644
--- a/src/test/parse-fail/issue-5544-b.rs
+++ b/src/test/ui/parser/issue-5544-b.rs
diff --git a/src/test/ui/parser/issue-5544-b.stderr b/src/test/ui/parser/issue-5544-b.stderr
new file mode 100644
index 00000000000..338b39b85b1
--- /dev/null
+++ b/src/test/ui/parser/issue-5544-b.stderr
@@ -0,0 +1,8 @@
+error: int literal is too large
+  --> $DIR/issue-5544-b.rs:14:19
+   |
+LL |     let __isize = 0xffff_ffff_ffff_ffff_ffff_ffff_ffff_ffff_ff;
+   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-5806.rs b/src/test/ui/parser/issue-5806.rs
index f6606a58eca..f6606a58eca 100644
--- a/src/test/parse-fail/issue-5806.rs
+++ b/src/test/ui/parser/issue-5806.rs
diff --git a/src/test/parse-fail/issue-6610.rs b/src/test/ui/parser/issue-6610.rs
index f5113efad1c..f5113efad1c 100644
--- a/src/test/parse-fail/issue-6610.rs
+++ b/src/test/ui/parser/issue-6610.rs
diff --git a/src/test/ui/parser/issue-6610.stderr b/src/test/ui/parser/issue-6610.stderr
new file mode 100644
index 00000000000..d6013b32c96
--- /dev/null
+++ b/src/test/ui/parser/issue-6610.stderr
@@ -0,0 +1,8 @@
+error: expected `;` or `{`, found `}`
+  --> $DIR/issue-6610.rs:13:20
+   |
+LL | trait Foo { fn a() } //~ ERROR expected `;` or `{`, found `}`
+   |                    ^ expected `;` or `{`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/issue-8537.rs b/src/test/ui/parser/issue-8537.rs
index e152a369290..e152a369290 100644
--- a/src/test/parse-fail/issue-8537.rs
+++ b/src/test/ui/parser/issue-8537.rs
diff --git a/src/test/ui/parser/issue-8537.stderr b/src/test/ui/parser/issue-8537.stderr
new file mode 100644
index 00000000000..0013f972220
--- /dev/null
+++ b/src/test/ui/parser/issue-8537.stderr
@@ -0,0 +1,11 @@
+error[E0703]: invalid ABI: found `invalid-ab_isize`
+  --> $DIR/issue-8537.rs:14:3
+   |
+LL |   "invalid-ab_isize" //~ ERROR invalid ABI
+   |   ^^^^^^^^^^^^^^^^^^ invalid ABI
+   |
+   = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, amdgpu-kernel, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0703`.
diff --git a/src/test/parse-fail/keyword-abstract.rs b/src/test/ui/parser/keyword-abstract.rs
index 2db5a5c583a..2db5a5c583a 100644
--- a/src/test/parse-fail/keyword-abstract.rs
+++ b/src/test/ui/parser/keyword-abstract.rs
diff --git a/src/test/ui/parser/keyword-abstract.stderr b/src/test/ui/parser/keyword-abstract.stderr
new file mode 100644
index 00000000000..1d3ed0d9b3e
--- /dev/null
+++ b/src/test/ui/parser/keyword-abstract.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found reserved keyword `abstract`
+  --> $DIR/keyword-abstract.rs:14:9
+   |
+LL |     let abstract = (); //~ ERROR expected pattern, found reserved keyword `abstract`
+   |         ^^^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-as-as-identifier.rs b/src/test/ui/parser/keyword-as-as-identifier.rs
index c6070c456e8..c6070c456e8 100644
--- a/src/test/parse-fail/keyword-as-as-identifier.rs
+++ b/src/test/ui/parser/keyword-as-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-as-as-identifier.stderr b/src/test/ui/parser/keyword-as-as-identifier.stderr
new file mode 100644
index 00000000000..a6295c2fca1
--- /dev/null
+++ b/src/test/ui/parser/keyword-as-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `as`
+  --> $DIR/keyword-as-as-identifier.rs:16:9
+   |
+LL |     let as = "foo"; //~ error: expected pattern, found keyword `as`
+   |         ^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-box-as-identifier.rs b/src/test/ui/parser/keyword-box-as-identifier.rs
index b5abe14dbe8..b5abe14dbe8 100644
--- a/src/test/parse-fail/keyword-box-as-identifier.rs
+++ b/src/test/ui/parser/keyword-box-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-box-as-identifier.stderr b/src/test/ui/parser/keyword-box-as-identifier.stderr
new file mode 100644
index 00000000000..4e9984c2871
--- /dev/null
+++ b/src/test/ui/parser/keyword-box-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found `=`
+  --> $DIR/keyword-box-as-identifier.rs:14:13
+   |
+LL |     let box = "foo"; //~ error: expected pattern, found `=`
+   |             ^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-break-as-identifier.rs b/src/test/ui/parser/keyword-break-as-identifier.rs
index 65c775fa1b6..65c775fa1b6 100644
--- a/src/test/parse-fail/keyword-break-as-identifier.rs
+++ b/src/test/ui/parser/keyword-break-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-break-as-identifier.stderr b/src/test/ui/parser/keyword-break-as-identifier.stderr
new file mode 100644
index 00000000000..9e2d2c9caac
--- /dev/null
+++ b/src/test/ui/parser/keyword-break-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `break`
+  --> $DIR/keyword-break-as-identifier.rs:16:9
+   |
+LL |     let break = "foo"; //~ error: expected pattern, found keyword `break`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-const-as-identifier.rs b/src/test/ui/parser/keyword-const-as-identifier.rs
index 6ecf14957e3..6ecf14957e3 100644
--- a/src/test/parse-fail/keyword-const-as-identifier.rs
+++ b/src/test/ui/parser/keyword-const-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-const-as-identifier.stderr b/src/test/ui/parser/keyword-const-as-identifier.stderr
new file mode 100644
index 00000000000..d662fefda70
--- /dev/null
+++ b/src/test/ui/parser/keyword-const-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `const`
+  --> $DIR/keyword-const-as-identifier.rs:16:9
+   |
+LL |     let const = "foo"; //~ error: expected pattern, found keyword `const`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-continue-as-identifier.rs b/src/test/ui/parser/keyword-continue-as-identifier.rs
index 87377ac8364..87377ac8364 100644
--- a/src/test/parse-fail/keyword-continue-as-identifier.rs
+++ b/src/test/ui/parser/keyword-continue-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-continue-as-identifier.stderr b/src/test/ui/parser/keyword-continue-as-identifier.stderr
new file mode 100644
index 00000000000..52409c1f6bb
--- /dev/null
+++ b/src/test/ui/parser/keyword-continue-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `continue`
+  --> $DIR/keyword-continue-as-identifier.rs:16:9
+   |
+LL |     let continue = "foo"; //~ error: expected pattern, found keyword `continue`
+   |         ^^^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-else-as-identifier.rs b/src/test/ui/parser/keyword-else-as-identifier.rs
index 6878f7fea03..6878f7fea03 100644
--- a/src/test/parse-fail/keyword-else-as-identifier.rs
+++ b/src/test/ui/parser/keyword-else-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-else-as-identifier.stderr b/src/test/ui/parser/keyword-else-as-identifier.stderr
new file mode 100644
index 00000000000..ab075a52141
--- /dev/null
+++ b/src/test/ui/parser/keyword-else-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `else`
+  --> $DIR/keyword-else-as-identifier.rs:16:9
+   |
+LL |     let else = "foo"; //~ error: expected pattern, found keyword `else`
+   |         ^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-enum-as-identifier.rs b/src/test/ui/parser/keyword-enum-as-identifier.rs
index 042a02d79e0..042a02d79e0 100644
--- a/src/test/parse-fail/keyword-enum-as-identifier.rs
+++ b/src/test/ui/parser/keyword-enum-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-enum-as-identifier.stderr b/src/test/ui/parser/keyword-enum-as-identifier.stderr
new file mode 100644
index 00000000000..f8370134741
--- /dev/null
+++ b/src/test/ui/parser/keyword-enum-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `enum`
+  --> $DIR/keyword-enum-as-identifier.rs:16:9
+   |
+LL |     let enum = "foo"; //~ error: expected pattern, found keyword `enum`
+   |         ^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-final.rs b/src/test/ui/parser/keyword-final.rs
index be29a739443..be29a739443 100644
--- a/src/test/parse-fail/keyword-final.rs
+++ b/src/test/ui/parser/keyword-final.rs
diff --git a/src/test/ui/parser/keyword-final.stderr b/src/test/ui/parser/keyword-final.stderr
new file mode 100644
index 00000000000..8ace453f362
--- /dev/null
+++ b/src/test/ui/parser/keyword-final.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found reserved keyword `final`
+  --> $DIR/keyword-final.rs:14:9
+   |
+LL |     let final = (); //~ ERROR expected pattern, found reserved keyword `final`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-fn-as-identifier.rs b/src/test/ui/parser/keyword-fn-as-identifier.rs
index 0d454f67d1c..0d454f67d1c 100644
--- a/src/test/parse-fail/keyword-fn-as-identifier.rs
+++ b/src/test/ui/parser/keyword-fn-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-fn-as-identifier.stderr b/src/test/ui/parser/keyword-fn-as-identifier.stderr
new file mode 100644
index 00000000000..bf63775fc9b
--- /dev/null
+++ b/src/test/ui/parser/keyword-fn-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `fn`
+  --> $DIR/keyword-fn-as-identifier.rs:16:9
+   |
+LL |     let fn = "foo"; //~ error: expected pattern, found keyword `fn`
+   |         ^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-for-as-identifier.rs b/src/test/ui/parser/keyword-for-as-identifier.rs
index d341669f727..d341669f727 100644
--- a/src/test/parse-fail/keyword-for-as-identifier.rs
+++ b/src/test/ui/parser/keyword-for-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-for-as-identifier.stderr b/src/test/ui/parser/keyword-for-as-identifier.stderr
new file mode 100644
index 00000000000..ed28f77a252
--- /dev/null
+++ b/src/test/ui/parser/keyword-for-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `for`
+  --> $DIR/keyword-for-as-identifier.rs:16:9
+   |
+LL |     let for = "foo"; //~ error: expected pattern, found keyword `for`
+   |         ^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-if-as-identifier.rs b/src/test/ui/parser/keyword-if-as-identifier.rs
index 417e40425e0..417e40425e0 100644
--- a/src/test/parse-fail/keyword-if-as-identifier.rs
+++ b/src/test/ui/parser/keyword-if-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-if-as-identifier.stderr b/src/test/ui/parser/keyword-if-as-identifier.stderr
new file mode 100644
index 00000000000..bfb7ab78bcf
--- /dev/null
+++ b/src/test/ui/parser/keyword-if-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `if`
+  --> $DIR/keyword-if-as-identifier.rs:16:9
+   |
+LL |     let if = "foo"; //~ error: expected pattern, found keyword `if`
+   |         ^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-impl-as-identifier.rs b/src/test/ui/parser/keyword-impl-as-identifier.rs
index fe97c191f68..fe97c191f68 100644
--- a/src/test/parse-fail/keyword-impl-as-identifier.rs
+++ b/src/test/ui/parser/keyword-impl-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-impl-as-identifier.stderr b/src/test/ui/parser/keyword-impl-as-identifier.stderr
new file mode 100644
index 00000000000..43f7072981e
--- /dev/null
+++ b/src/test/ui/parser/keyword-impl-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `impl`
+  --> $DIR/keyword-impl-as-identifier.rs:16:9
+   |
+LL |     let impl = "foo"; //~ error: expected pattern, found keyword `impl`
+   |         ^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-in-as-identifier.rs b/src/test/ui/parser/keyword-in-as-identifier.rs
index c0f9396b981..c0f9396b981 100644
--- a/src/test/parse-fail/keyword-in-as-identifier.rs
+++ b/src/test/ui/parser/keyword-in-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-in-as-identifier.stderr b/src/test/ui/parser/keyword-in-as-identifier.stderr
new file mode 100644
index 00000000000..29bb5f4b724
--- /dev/null
+++ b/src/test/ui/parser/keyword-in-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `in`
+  --> $DIR/keyword-in-as-identifier.rs:16:9
+   |
+LL |     let in = "foo"; //~ error: expected pattern, found keyword `in`
+   |         ^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-let-as-identifier.rs b/src/test/ui/parser/keyword-let-as-identifier.rs
index 5d6dca78d78..5d6dca78d78 100644
--- a/src/test/parse-fail/keyword-let-as-identifier.rs
+++ b/src/test/ui/parser/keyword-let-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-let-as-identifier.stderr b/src/test/ui/parser/keyword-let-as-identifier.stderr
new file mode 100644
index 00000000000..7a28aee4657
--- /dev/null
+++ b/src/test/ui/parser/keyword-let-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `let`
+  --> $DIR/keyword-let-as-identifier.rs:16:9
+   |
+LL |     let let = "foo"; //~ error: expected pattern, found keyword `let`
+   |         ^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-loop-as-identifier.rs b/src/test/ui/parser/keyword-loop-as-identifier.rs
index 7c3d11d67f6..7c3d11d67f6 100644
--- a/src/test/parse-fail/keyword-loop-as-identifier.rs
+++ b/src/test/ui/parser/keyword-loop-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-loop-as-identifier.stderr b/src/test/ui/parser/keyword-loop-as-identifier.stderr
new file mode 100644
index 00000000000..1dafe466d79
--- /dev/null
+++ b/src/test/ui/parser/keyword-loop-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `loop`
+  --> $DIR/keyword-loop-as-identifier.rs:16:9
+   |
+LL |     let loop = "foo"; //~ error: expected pattern, found keyword `loop`
+   |         ^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-match-as-identifier.rs b/src/test/ui/parser/keyword-match-as-identifier.rs
index 7c727f44da7..7c727f44da7 100644
--- a/src/test/parse-fail/keyword-match-as-identifier.rs
+++ b/src/test/ui/parser/keyword-match-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-match-as-identifier.stderr b/src/test/ui/parser/keyword-match-as-identifier.stderr
new file mode 100644
index 00000000000..b3b542f1a1d
--- /dev/null
+++ b/src/test/ui/parser/keyword-match-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `match`
+  --> $DIR/keyword-match-as-identifier.rs:16:9
+   |
+LL |     let match = "foo"; //~ error: expected pattern, found keyword `match`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-mod-as-identifier.rs b/src/test/ui/parser/keyword-mod-as-identifier.rs
index 85b4cc2e02c..85b4cc2e02c 100644
--- a/src/test/parse-fail/keyword-mod-as-identifier.rs
+++ b/src/test/ui/parser/keyword-mod-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-mod-as-identifier.stderr b/src/test/ui/parser/keyword-mod-as-identifier.stderr
new file mode 100644
index 00000000000..113f7084b31
--- /dev/null
+++ b/src/test/ui/parser/keyword-mod-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `mod`
+  --> $DIR/keyword-mod-as-identifier.rs:16:9
+   |
+LL |     let mod = "foo"; //~ error: expected pattern, found keyword `mod`
+   |         ^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-move-as-identifier.rs b/src/test/ui/parser/keyword-move-as-identifier.rs
index b785ac0058c..b785ac0058c 100644
--- a/src/test/parse-fail/keyword-move-as-identifier.rs
+++ b/src/test/ui/parser/keyword-move-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-move-as-identifier.stderr b/src/test/ui/parser/keyword-move-as-identifier.stderr
new file mode 100644
index 00000000000..21b66fbc1e1
--- /dev/null
+++ b/src/test/ui/parser/keyword-move-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `move`
+  --> $DIR/keyword-move-as-identifier.rs:16:9
+   |
+LL |     let move = "foo"; //~ error: expected pattern, found keyword `move`
+   |         ^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-mut-as-identifier.rs b/src/test/ui/parser/keyword-mut-as-identifier.rs
index 0aeca9b34ab..0aeca9b34ab 100644
--- a/src/test/parse-fail/keyword-mut-as-identifier.rs
+++ b/src/test/ui/parser/keyword-mut-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-mut-as-identifier.stderr b/src/test/ui/parser/keyword-mut-as-identifier.stderr
new file mode 100644
index 00000000000..bb153cf0e6c
--- /dev/null
+++ b/src/test/ui/parser/keyword-mut-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `=`
+  --> $DIR/keyword-mut-as-identifier.rs:14:13
+   |
+LL |     let mut = "foo"; //~ error: expected identifier, found `=`
+   |             ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-override.rs b/src/test/ui/parser/keyword-override.rs
index 60333762b33..60333762b33 100644
--- a/src/test/parse-fail/keyword-override.rs
+++ b/src/test/ui/parser/keyword-override.rs
diff --git a/src/test/ui/parser/keyword-override.stderr b/src/test/ui/parser/keyword-override.stderr
new file mode 100644
index 00000000000..ce1d4f27716
--- /dev/null
+++ b/src/test/ui/parser/keyword-override.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found reserved keyword `override`
+  --> $DIR/keyword-override.rs:14:9
+   |
+LL |     let override = (); //~ ERROR expected pattern, found reserved keyword `override`
+   |         ^^^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-pub-as-identifier.rs b/src/test/ui/parser/keyword-pub-as-identifier.rs
index 92337286970..92337286970 100644
--- a/src/test/parse-fail/keyword-pub-as-identifier.rs
+++ b/src/test/ui/parser/keyword-pub-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-pub-as-identifier.stderr b/src/test/ui/parser/keyword-pub-as-identifier.stderr
new file mode 100644
index 00000000000..b52982d144d
--- /dev/null
+++ b/src/test/ui/parser/keyword-pub-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `pub`
+  --> $DIR/keyword-pub-as-identifier.rs:16:9
+   |
+LL |     let pub = "foo"; //~ error: expected pattern, found keyword `pub`
+   |         ^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-ref-as-identifier.rs b/src/test/ui/parser/keyword-ref-as-identifier.rs
index a689c4eeea4..a689c4eeea4 100644
--- a/src/test/parse-fail/keyword-ref-as-identifier.rs
+++ b/src/test/ui/parser/keyword-ref-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-ref-as-identifier.stderr b/src/test/ui/parser/keyword-ref-as-identifier.stderr
new file mode 100644
index 00000000000..34063c88d33
--- /dev/null
+++ b/src/test/ui/parser/keyword-ref-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `=`
+  --> $DIR/keyword-ref-as-identifier.rs:14:13
+   |
+LL |     let ref = "foo"; //~ error: expected identifier, found `=`
+   |             ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-return-as-identifier.rs b/src/test/ui/parser/keyword-return-as-identifier.rs
index bcf7f137543..bcf7f137543 100644
--- a/src/test/parse-fail/keyword-return-as-identifier.rs
+++ b/src/test/ui/parser/keyword-return-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-return-as-identifier.stderr b/src/test/ui/parser/keyword-return-as-identifier.stderr
new file mode 100644
index 00000000000..8d8b2aabbdc
--- /dev/null
+++ b/src/test/ui/parser/keyword-return-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `return`
+  --> $DIR/keyword-return-as-identifier.rs:16:9
+   |
+LL |     let return = "foo"; //~ error: expected pattern, found keyword `return`
+   |         ^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-static-as-identifier.rs b/src/test/ui/parser/keyword-static-as-identifier.rs
index 793262266a3..793262266a3 100644
--- a/src/test/parse-fail/keyword-static-as-identifier.rs
+++ b/src/test/ui/parser/keyword-static-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-static-as-identifier.stderr b/src/test/ui/parser/keyword-static-as-identifier.stderr
new file mode 100644
index 00000000000..4c1a0d1a0b0
--- /dev/null
+++ b/src/test/ui/parser/keyword-static-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `static`
+  --> $DIR/keyword-static-as-identifier.rs:16:9
+   |
+LL |     let static = "foo"; //~ error: expected pattern, found keyword `static`
+   |         ^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-struct-as-identifier.rs b/src/test/ui/parser/keyword-struct-as-identifier.rs
index 591bd25db65..591bd25db65 100644
--- a/src/test/parse-fail/keyword-struct-as-identifier.rs
+++ b/src/test/ui/parser/keyword-struct-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-struct-as-identifier.stderr b/src/test/ui/parser/keyword-struct-as-identifier.stderr
new file mode 100644
index 00000000000..76179ce7ea7
--- /dev/null
+++ b/src/test/ui/parser/keyword-struct-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `struct`
+  --> $DIR/keyword-struct-as-identifier.rs:16:9
+   |
+LL |     let struct = "foo"; //~ error: expected pattern, found keyword `struct`
+   |         ^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-trait-as-identifier.rs b/src/test/ui/parser/keyword-trait-as-identifier.rs
index bdb5d264b03..bdb5d264b03 100644
--- a/src/test/parse-fail/keyword-trait-as-identifier.rs
+++ b/src/test/ui/parser/keyword-trait-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-trait-as-identifier.stderr b/src/test/ui/parser/keyword-trait-as-identifier.stderr
new file mode 100644
index 00000000000..084b785f867
--- /dev/null
+++ b/src/test/ui/parser/keyword-trait-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `trait`
+  --> $DIR/keyword-trait-as-identifier.rs:16:9
+   |
+LL |     let trait = "foo"; //~ error: expected pattern, found keyword `trait`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-try-as-identifier-edition2018.rs b/src/test/ui/parser/keyword-try-as-identifier-edition2018.rs
index 1e4f85c122d..1e4f85c122d 100644
--- a/src/test/parse-fail/keyword-try-as-identifier-edition2018.rs
+++ b/src/test/ui/parser/keyword-try-as-identifier-edition2018.rs
diff --git a/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr b/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr
new file mode 100644
index 00000000000..9306f95d855
--- /dev/null
+++ b/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found reserved keyword `try`
+  --> $DIR/keyword-try-as-identifier-edition2018.rs:14:9
+   |
+LL |     let try = "foo"; //~ error: expected pattern, found reserved keyword `try`
+   |         ^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-type-as-identifier.rs b/src/test/ui/parser/keyword-type-as-identifier.rs
index 2ba99d098de..2ba99d098de 100644
--- a/src/test/parse-fail/keyword-type-as-identifier.rs
+++ b/src/test/ui/parser/keyword-type-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-type-as-identifier.stderr b/src/test/ui/parser/keyword-type-as-identifier.stderr
new file mode 100644
index 00000000000..03e0bd7dfa9
--- /dev/null
+++ b/src/test/ui/parser/keyword-type-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `type`
+  --> $DIR/keyword-type-as-identifier.rs:16:9
+   |
+LL |     let type = "foo"; //~ error: expected pattern, found keyword `type`
+   |         ^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-typeof.rs b/src/test/ui/parser/keyword-typeof.rs
index 40e26bd375a..40e26bd375a 100644
--- a/src/test/parse-fail/keyword-typeof.rs
+++ b/src/test/ui/parser/keyword-typeof.rs
diff --git a/src/test/ui/parser/keyword-typeof.stderr b/src/test/ui/parser/keyword-typeof.stderr
new file mode 100644
index 00000000000..1c0cd0cca0d
--- /dev/null
+++ b/src/test/ui/parser/keyword-typeof.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found reserved keyword `typeof`
+  --> $DIR/keyword-typeof.rs:14:9
+   |
+LL |     let typeof = (); //~ ERROR expected pattern, found reserved keyword `typeof`
+   |         ^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-unsafe-as-identifier.rs b/src/test/ui/parser/keyword-unsafe-as-identifier.rs
index a72723e566d..a72723e566d 100644
--- a/src/test/parse-fail/keyword-unsafe-as-identifier.rs
+++ b/src/test/ui/parser/keyword-unsafe-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-unsafe-as-identifier.stderr b/src/test/ui/parser/keyword-unsafe-as-identifier.stderr
new file mode 100644
index 00000000000..360bd21fa5f
--- /dev/null
+++ b/src/test/ui/parser/keyword-unsafe-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `unsafe`
+  --> $DIR/keyword-unsafe-as-identifier.rs:16:9
+   |
+LL |     let unsafe = "foo"; //~ error: expected pattern, found keyword `unsafe`
+   |         ^^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-use-as-identifier.rs b/src/test/ui/parser/keyword-use-as-identifier.rs
index de74907ff20..de74907ff20 100644
--- a/src/test/parse-fail/keyword-use-as-identifier.rs
+++ b/src/test/ui/parser/keyword-use-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-use-as-identifier.stderr b/src/test/ui/parser/keyword-use-as-identifier.stderr
new file mode 100644
index 00000000000..bff29788107
--- /dev/null
+++ b/src/test/ui/parser/keyword-use-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `use`
+  --> $DIR/keyword-use-as-identifier.rs:16:9
+   |
+LL |     let use = "foo"; //~ error: expected pattern, found keyword `use`
+   |         ^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-where-as-identifier.rs b/src/test/ui/parser/keyword-where-as-identifier.rs
index 4b7c8920b13..4b7c8920b13 100644
--- a/src/test/parse-fail/keyword-where-as-identifier.rs
+++ b/src/test/ui/parser/keyword-where-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-where-as-identifier.stderr b/src/test/ui/parser/keyword-where-as-identifier.stderr
new file mode 100644
index 00000000000..38fe936befe
--- /dev/null
+++ b/src/test/ui/parser/keyword-where-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `where`
+  --> $DIR/keyword-where-as-identifier.rs:16:9
+   |
+LL |     let where = "foo"; //~ error: expected pattern, found keyword `where`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword-while-as-identifier.rs b/src/test/ui/parser/keyword-while-as-identifier.rs
index 01793caa38a..01793caa38a 100644
--- a/src/test/parse-fail/keyword-while-as-identifier.rs
+++ b/src/test/ui/parser/keyword-while-as-identifier.rs
diff --git a/src/test/ui/parser/keyword-while-as-identifier.stderr b/src/test/ui/parser/keyword-while-as-identifier.stderr
new file mode 100644
index 00000000000..c9dab8c5170
--- /dev/null
+++ b/src/test/ui/parser/keyword-while-as-identifier.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found keyword `while`
+  --> $DIR/keyword-while-as-identifier.rs:16:9
+   |
+LL |     let while = "foo"; //~ error: expected pattern, found keyword `while`
+   |         ^^^^^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keyword.rs b/src/test/ui/parser/keyword.rs
index d4ce5518e46..d4ce5518e46 100644
--- a/src/test/parse-fail/keyword.rs
+++ b/src/test/ui/parser/keyword.rs
diff --git a/src/test/ui/parser/keyword.stderr b/src/test/ui/parser/keyword.stderr
new file mode 100644
index 00000000000..a3fc1677732
--- /dev/null
+++ b/src/test/ui/parser/keyword.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found keyword `break`
+  --> $DIR/keyword.rs:13:9
+   |
+LL | pub mod break {
+   |         ^^^^^ expected identifier, found keyword
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/keywords-followed-by-double-colon.rs b/src/test/ui/parser/keywords-followed-by-double-colon.rs
index 7a5b48c5f00..7a5b48c5f00 100644
--- a/src/test/parse-fail/keywords-followed-by-double-colon.rs
+++ b/src/test/ui/parser/keywords-followed-by-double-colon.rs
diff --git a/src/test/ui/parser/keywords-followed-by-double-colon.stderr b/src/test/ui/parser/keywords-followed-by-double-colon.stderr
new file mode 100644
index 00000000000..049658571e8
--- /dev/null
+++ b/src/test/ui/parser/keywords-followed-by-double-colon.stderr
@@ -0,0 +1,14 @@
+error: expected identifier, found `::`
+  --> $DIR/keywords-followed-by-double-colon.rs:14:11
+   |
+LL |     struct::foo();
+   |           ^^ expected identifier
+
+error: expected expression, found keyword `mut`
+  --> $DIR/keywords-followed-by-double-colon.rs:18:5
+   |
+LL |     mut::baz();
+   |     ^^^ expected expression
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/lex-bad-binary-literal.rs b/src/test/ui/parser/lex-bad-binary-literal.rs
index caacb12d008..caacb12d008 100644
--- a/src/test/parse-fail/lex-bad-binary-literal.rs
+++ b/src/test/ui/parser/lex-bad-binary-literal.rs
diff --git a/src/test/ui/parser/lex-bad-binary-literal.stderr b/src/test/ui/parser/lex-bad-binary-literal.stderr
new file mode 100644
index 00000000000..2c23d8c3d61
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-binary-literal.stderr
@@ -0,0 +1,56 @@
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:14:8
+   |
+LL |     0b121; //~ ERROR invalid digit for a base 2 literal
+   |        ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:15:12
+   |
+LL |     0b10_10301; //~ ERROR invalid digit for a base 2 literal
+   |            ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:16:7
+   |
+LL |     0b30; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:17:7
+   |
+LL |     0b41; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:18:7
+   |
+LL |     0b5; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:19:7
+   |
+LL |     0b6; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:20:7
+   |
+LL |     0b7; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:21:7
+   |
+LL |     0b8; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: invalid digit for a base 2 literal
+  --> $DIR/lex-bad-binary-literal.rs:22:7
+   |
+LL |     0b9; //~ ERROR invalid digit for a base 2 literal
+   |       ^
+
+error: aborting due to 9 previous errors
+
diff --git a/src/test/parse-fail/lex-bad-char-literals-1.rs b/src/test/ui/parser/lex-bad-char-literals-1.rs
index 006e3e68d8f..006e3e68d8f 100644
--- a/src/test/parse-fail/lex-bad-char-literals-1.rs
+++ b/src/test/ui/parser/lex-bad-char-literals-1.rs
diff --git a/src/test/ui/parser/lex-bad-char-literals-1.stderr b/src/test/ui/parser/lex-bad-char-literals-1.stderr
new file mode 100644
index 00000000000..081eb2e9fed
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-char-literals-1.stderr
@@ -0,0 +1,26 @@
+error: numeric character escape is too short
+  --> $DIR/lex-bad-char-literals-1.rs:13:8
+   |
+LL |     '/x1' //~ ERROR: numeric character escape is too short
+   |        ^
+
+error: numeric character escape is too short
+  --> $DIR/lex-bad-char-literals-1.rs:17:8
+   |
+LL |     "/x1" //~ ERROR: numeric character escape is too short
+   |        ^
+
+error: unknown character escape: /u{25cf}
+  --> $DIR/lex-bad-char-literals-1.rs:21:7
+   |
+LL |     '/●' //~ ERROR: unknown character escape
+   |       ^
+
+error: unknown character escape: /u{25cf}
+  --> $DIR/lex-bad-char-literals-1.rs:25:7
+   |
+LL |     "/●" //~ ERROR: unknown character escape
+   |       ^
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/parse-fail/lex-bad-char-literals-2.rs b/src/test/ui/parser/lex-bad-char-literals-2.rs
index 8bd6808c5ff..8bd6808c5ff 100644
--- a/src/test/parse-fail/lex-bad-char-literals-2.rs
+++ b/src/test/ui/parser/lex-bad-char-literals-2.rs
diff --git a/src/test/ui/parser/lex-bad-char-literals-2.stderr b/src/test/ui/parser/lex-bad-char-literals-2.stderr
new file mode 100644
index 00000000000..ed129f5d427
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-char-literals-2.stderr
@@ -0,0 +1,8 @@
+error: character literal may only contain one codepoint: 'nope'
+  --> $DIR/lex-bad-char-literals-2.rs:15:5
+   |
+LL |     'nope' //~ ERROR: character literal may only contain one codepoint: 'nope'
+   |     ^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lex-bad-char-literals-3.rs b/src/test/ui/parser/lex-bad-char-literals-3.rs
index 464e75ec582..464e75ec582 100644
--- a/src/test/parse-fail/lex-bad-char-literals-3.rs
+++ b/src/test/ui/parser/lex-bad-char-literals-3.rs
diff --git a/src/test/ui/parser/lex-bad-char-literals-3.stderr b/src/test/ui/parser/lex-bad-char-literals-3.stderr
new file mode 100644
index 00000000000..f257b5b8268
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-char-literals-3.stderr
@@ -0,0 +1,12 @@
+error: character literal may only contain one codepoint
+  --> $DIR/lex-bad-char-literals-3.rs:15:5
+   |
+LL |     '●●' //~ ERROR: character literal may only contain one codepoint
+   |     ^^^^
+help: if you meant to write a `str` literal, use double quotes
+   |
+LL |     "●●" //~ ERROR: character literal may only contain one codepoint
+   |     ^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lex-bad-char-literals-4.rs b/src/test/ui/parser/lex-bad-char-literals-4.rs
index b230e623603..b230e623603 100644
--- a/src/test/parse-fail/lex-bad-char-literals-4.rs
+++ b/src/test/ui/parser/lex-bad-char-literals-4.rs
diff --git a/src/test/ui/parser/lex-bad-char-literals-4.stderr b/src/test/ui/parser/lex-bad-char-literals-4.stderr
new file mode 100644
index 00000000000..495becd07d1
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-char-literals-4.stderr
@@ -0,0 +1,8 @@
+error: character literal may only contain one codepoint: '●
+  --> $DIR/lex-bad-char-literals-4.rs:15:5
+   |
+LL |     '●  //~ ERROR: character literal may only contain one codepoint: '●
+   |     ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lex-bad-char-literals-5.rs b/src/test/ui/parser/lex-bad-char-literals-5.rs
index aa166881d89..aa166881d89 100644
--- a/src/test/parse-fail/lex-bad-char-literals-5.rs
+++ b/src/test/ui/parser/lex-bad-char-literals-5.rs
diff --git a/src/test/ui/parser/lex-bad-char-literals-5.stderr b/src/test/ui/parser/lex-bad-char-literals-5.stderr
new file mode 100644
index 00000000000..145361eb58a
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-char-literals-5.stderr
@@ -0,0 +1,12 @@
+error: character literal may only contain one codepoint
+  --> $DIR/lex-bad-char-literals-5.rs:15:5
+   |
+LL |     '/x10/x10'  //~ ERROR: character literal may only contain one codepoint
+   |     ^^^^^^^^^^
+help: if you meant to write a `str` literal, use double quotes
+   |
+LL |     "/x10/x10"  //~ ERROR: character literal may only contain one codepoint
+   |     ^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lex-bad-numeric-literals.rs b/src/test/ui/parser/lex-bad-numeric-literals.rs
index d495a8edd09..d495a8edd09 100644
--- a/src/test/parse-fail/lex-bad-numeric-literals.rs
+++ b/src/test/ui/parser/lex-bad-numeric-literals.rs
diff --git a/src/test/ui/parser/lex-bad-numeric-literals.stderr b/src/test/ui/parser/lex-bad-numeric-literals.stderr
new file mode 100644
index 00000000000..3d87b5b7037
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-numeric-literals.stderr
@@ -0,0 +1,140 @@
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:14:5
+   |
+LL |     0o1.0; //~ ERROR: octal float literal is not supported
+   |     ^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:16:5
+   |
+LL |     0o3.0f32; //~ ERROR: octal float literal is not supported
+   |     ^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:17:5
+   |
+LL |     0o4e4; //~ ERROR: octal float literal is not supported
+   |     ^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:18:5
+   |
+LL |     0o5.0e5; //~ ERROR: octal float literal is not supported
+   |     ^^^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:19:5
+   |
+LL |     0o6e6f32; //~ ERROR: octal float literal is not supported
+   |     ^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:20:5
+   |
+LL |     0o7.0e7f64; //~ ERROR: octal float literal is not supported
+   |     ^^^^^^^
+
+error: hexadecimal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:21:5
+   |
+LL |     0x8.0e+9; //~ ERROR: hexadecimal float literal is not supported
+   |     ^^^^^^^^
+
+error: hexadecimal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:22:5
+   |
+LL |     0x9.0e-9; //~ ERROR: hexadecimal float literal is not supported
+   |     ^^^^^^^^
+
+error: no valid digits found for number
+  --> $DIR/lex-bad-numeric-literals.rs:23:5
+   |
+LL |     0o; //~ ERROR: no valid digits
+   |     ^^
+
+error: expected at least one digit in exponent
+  --> $DIR/lex-bad-numeric-literals.rs:24:8
+   |
+LL |     1e+; //~ ERROR: expected at least one digit in exponent
+   |        ^
+
+error: hexadecimal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:25:5
+   |
+LL |     0x539.0; //~ ERROR: hexadecimal float literal is not supported
+   |     ^^^^^^^
+
+error: no valid digits found for number
+  --> $DIR/lex-bad-numeric-literals.rs:28:5
+   |
+LL |     0x; //~ ERROR: no valid digits
+   |     ^^
+
+error: no valid digits found for number
+  --> $DIR/lex-bad-numeric-literals.rs:29:5
+   |
+LL |     0xu32; //~ ERROR: no valid digits
+   |     ^^
+
+error: no valid digits found for number
+  --> $DIR/lex-bad-numeric-literals.rs:30:5
+   |
+LL |     0ou32; //~ ERROR: no valid digits
+   |     ^^
+
+error: no valid digits found for number
+  --> $DIR/lex-bad-numeric-literals.rs:31:5
+   |
+LL |     0bu32; //~ ERROR: no valid digits
+   |     ^^
+
+error: no valid digits found for number
+  --> $DIR/lex-bad-numeric-literals.rs:32:5
+   |
+LL |     0b; //~ ERROR: no valid digits
+   |     ^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:34:5
+   |
+LL |     0o123.456; //~ ERROR: octal float literal is not supported
+   |     ^^^^^^^^^
+
+error: binary float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:36:5
+   |
+LL |     0b111.101; //~ ERROR: binary float literal is not supported
+   |     ^^^^^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:15:5
+   |
+LL |     0o2f32; //~ ERROR: octal float literal is not supported
+   |     ^^^^^^
+
+error: int literal is too large
+  --> $DIR/lex-bad-numeric-literals.rs:26:5
+   |
+LL |     9900000000000000000000000000999999999999999999999999999999; //~ ERROR: int literal is too large
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: int literal is too large
+  --> $DIR/lex-bad-numeric-literals.rs:27:5
+   |
+LL |     9900000000000000000000000000999999999999999999999999999999; //~ ERROR: int literal is too large
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: octal float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:33:5
+   |
+LL |     0o123f64; //~ ERROR: octal float literal is not supported
+   |     ^^^^^^^^
+
+error: binary float literal is not supported
+  --> $DIR/lex-bad-numeric-literals.rs:35:5
+   |
+LL |     0b101f64; //~ ERROR: binary float literal is not supported
+   |     ^^^^^^^^
+
+error: aborting due to 23 previous errors
+
diff --git a/src/test/parse-fail/lex-bad-octal-literal.rs b/src/test/ui/parser/lex-bad-octal-literal.rs
index c8406af52ae..c8406af52ae 100644
--- a/src/test/parse-fail/lex-bad-octal-literal.rs
+++ b/src/test/ui/parser/lex-bad-octal-literal.rs
diff --git a/src/test/ui/parser/lex-bad-octal-literal.stderr b/src/test/ui/parser/lex-bad-octal-literal.stderr
new file mode 100644
index 00000000000..342309fdd1c
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-octal-literal.stderr
@@ -0,0 +1,14 @@
+error: invalid digit for a base 8 literal
+  --> $DIR/lex-bad-octal-literal.rs:14:8
+   |
+LL |     0o18; //~ ERROR invalid digit for a base 8 literal
+   |        ^
+
+error: invalid digit for a base 8 literal
+  --> $DIR/lex-bad-octal-literal.rs:15:12
+   |
+LL |     0o1234_9_5670;  //~ ERROR invalid digit for a base 8 literal
+   |            ^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/lex-bad-token.rs b/src/test/ui/parser/lex-bad-token.rs
index 774b10a9f97..774b10a9f97 100644
--- a/src/test/parse-fail/lex-bad-token.rs
+++ b/src/test/ui/parser/lex-bad-token.rs
diff --git a/src/test/ui/parser/lex-bad-token.stderr b/src/test/ui/parser/lex-bad-token.stderr
new file mode 100644
index 00000000000..6e2cd9995ca
--- /dev/null
+++ b/src/test/ui/parser/lex-bad-token.stderr
@@ -0,0 +1,8 @@
+error: unknown start of token: /u{25cf}
+  --> $DIR/lex-bad-token.rs:13:1
+   |
+LL | ● //~ ERROR: unknown start of token
+   | ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lex-bare-cr-string-literal-doc-comment.rs b/src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.rs
index ac085d47511..ac085d47511 100644
--- a/src/test/parse-fail/lex-bare-cr-string-literal-doc-comment.rs
+++ b/src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.rs
diff --git a/src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.stderr b/src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.stderr
new file mode 100644
index 00000000000..799836759e6
--- /dev/null
+++ b/src/test/ui/parser/lex-bare-cr-string-literal-doc-comment.stderr
@@ -0,0 +1,50 @@
+error: bare CR not allowed in doc-comment
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:15:32
+   |
+LL | /// doc comment with bare CR: '
'
+   |                                ^
+
+error: bare CR not allowed in block doc-comment
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:19:38
+   |
+LL | /** block doc comment with bare CR: '
' */
+   |                                      ^
+
+error: bare CR not allowed in doc-comment
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:24:36
+   |
+LL |     //! doc comment with bare CR: '
'
+   |                                    ^
+
+error: bare CR not allowed in block doc-comment
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:27:42
+   |
+LL |     /*! block doc comment with bare CR: '
' */
+   |                                          ^
+
+error: bare CR not allowed in string, use /r instead
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:31:18
+   |
+LL |     let _s = "foo
bar"; //~ ERROR: bare CR not allowed in string
+   |                  ^
+
+error: bare CR not allowed in raw string, use /r instead
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:34:14
+   |
+LL |     let _s = r"bar
foo"; //~ ERROR: bare CR not allowed in raw string
+   |              ^^^^^
+
+error: unknown character escape: /r
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:37:19
+   |
+LL |     let _s = "foo/
bar"; //~ ERROR: unknown character escape: /r
+   |                   ^
+   |
+help: this is an isolated carriage return; consider checking your editor and version control settings
+  --> $DIR/lex-bare-cr-string-literal-doc-comment.rs:37:19
+   |
+LL |     let _s = "foo/
bar"; //~ ERROR: unknown character escape: /r
+   |                   ^
+
+error: aborting due to 7 previous errors
+
diff --git a/src/test/parse-fail/lex-stray-backslash.rs b/src/test/ui/parser/lex-stray-backslash.rs
index b6042bbdc1a..b6042bbdc1a 100644
--- a/src/test/parse-fail/lex-stray-backslash.rs
+++ b/src/test/ui/parser/lex-stray-backslash.rs
diff --git a/src/test/ui/parser/lex-stray-backslash.stderr b/src/test/ui/parser/lex-stray-backslash.stderr
new file mode 100644
index 00000000000..d4ccb6f1459
--- /dev/null
+++ b/src/test/ui/parser/lex-stray-backslash.stderr
@@ -0,0 +1,8 @@
+error: unknown start of token: /
+  --> $DIR/lex-stray-backslash.rs:13:1
+   |
+LL | / //~ ERROR: unknown start of token: /
+   | ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lifetime-in-pattern.rs b/src/test/ui/parser/lifetime-in-pattern.rs
index 8802497ae1b..8802497ae1b 100644
--- a/src/test/parse-fail/lifetime-in-pattern.rs
+++ b/src/test/ui/parser/lifetime-in-pattern.rs
diff --git a/src/test/ui/parser/lifetime-in-pattern.stderr b/src/test/ui/parser/lifetime-in-pattern.stderr
new file mode 100644
index 00000000000..648dfcc57d5
--- /dev/null
+++ b/src/test/ui/parser/lifetime-in-pattern.stderr
@@ -0,0 +1,8 @@
+error: unexpected lifetime `'a` in pattern
+  --> $DIR/lifetime-in-pattern.rs:11:10
+   |
+LL | fn test(&'a str) {
+   |          ^^ unexpected lifetime
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/lifetime-semicolon.rs b/src/test/ui/parser/lifetime-semicolon.rs
index e1975952fca..e1975952fca 100644
--- a/src/test/parse-fail/lifetime-semicolon.rs
+++ b/src/test/ui/parser/lifetime-semicolon.rs
diff --git a/src/test/ui/parser/lifetime-semicolon.stderr b/src/test/ui/parser/lifetime-semicolon.stderr
new file mode 100644
index 00000000000..2ce6d5d6cf3
--- /dev/null
+++ b/src/test/ui/parser/lifetime-semicolon.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,` or `>`, found `;`
+  --> $DIR/lifetime-semicolon.rs:17:30
+   |
+LL | fn foo<'a, 'b>(x: &mut Foo<'a; 'b>) {}
+   |                              ^ expected one of `,` or `>` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macro-bad-delimiter-ident.rs b/src/test/ui/parser/macro-bad-delimiter-ident.rs
index 2940adee043..2940adee043 100644
--- a/src/test/parse-fail/macro-bad-delimiter-ident.rs
+++ b/src/test/ui/parser/macro-bad-delimiter-ident.rs
diff --git a/src/test/ui/parser/macro-bad-delimiter-ident.stderr b/src/test/ui/parser/macro-bad-delimiter-ident.stderr
new file mode 100644
index 00000000000..e1ae9892f74
--- /dev/null
+++ b/src/test/ui/parser/macro-bad-delimiter-ident.stderr
@@ -0,0 +1,8 @@
+error: expected `(` or `{`, found `<`
+  --> $DIR/macro-bad-delimiter-ident.rs:14:14
+   |
+LL |     foo! bar < //~ ERROR expected `(` or `{`, found `<`
+   |              ^ expected `(` or `{`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macro-doc-comments-1.rs b/src/test/ui/parser/macro-doc-comments-1.rs
index 03bcef4fa5e..03bcef4fa5e 100644
--- a/src/test/parse-fail/macro-doc-comments-1.rs
+++ b/src/test/ui/parser/macro-doc-comments-1.rs
diff --git a/src/test/ui/parser/macro-doc-comments-1.stderr b/src/test/ui/parser/macro-doc-comments-1.stderr
new file mode 100644
index 00000000000..a7fdd28b0ca
--- /dev/null
+++ b/src/test/ui/parser/macro-doc-comments-1.stderr
@@ -0,0 +1,8 @@
+error: no rules expected the token `!`
+  --> $DIR/macro-doc-comments-1.rs:16:5
+   |
+LL |     //! Inner
+   |     ^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macro-doc-comments-2.rs b/src/test/ui/parser/macro-doc-comments-2.rs
index a1b112c29b6..a1b112c29b6 100644
--- a/src/test/parse-fail/macro-doc-comments-2.rs
+++ b/src/test/ui/parser/macro-doc-comments-2.rs
diff --git a/src/test/ui/parser/macro-doc-comments-2.stderr b/src/test/ui/parser/macro-doc-comments-2.stderr
new file mode 100644
index 00000000000..bae9823b9b2
--- /dev/null
+++ b/src/test/ui/parser/macro-doc-comments-2.stderr
@@ -0,0 +1,8 @@
+error: no rules expected the token `[`
+  --> $DIR/macro-doc-comments-2.rs:16:5
+   |
+LL |     /// Outer
+   |     ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macro-keyword.rs b/src/test/ui/parser/macro-keyword.rs
index c7dcaf4137e..c7dcaf4137e 100644
--- a/src/test/parse-fail/macro-keyword.rs
+++ b/src/test/ui/parser/macro-keyword.rs
diff --git a/src/test/ui/parser/macro-keyword.stderr b/src/test/ui/parser/macro-keyword.stderr
new file mode 100644
index 00000000000..a5582623535
--- /dev/null
+++ b/src/test/ui/parser/macro-keyword.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found reserved keyword `macro`
+  --> $DIR/macro-keyword.rs:13:4
+   |
+LL | fn macro() {  //~ ERROR expected identifier, found reserved keyword `macro`
+   |    ^^^^^ expected identifier, found reserved keyword
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macro-mismatched-delim-brace-paren.rs b/src/test/ui/parser/macro-mismatched-delim-brace-paren.rs
index 84cf900129f..84cf900129f 100644
--- a/src/test/parse-fail/macro-mismatched-delim-brace-paren.rs
+++ b/src/test/ui/parser/macro-mismatched-delim-brace-paren.rs
diff --git a/src/test/ui/parser/macro-mismatched-delim-brace-paren.stderr b/src/test/ui/parser/macro-mismatched-delim-brace-paren.stderr
new file mode 100644
index 00000000000..69bd40fbb24
--- /dev/null
+++ b/src/test/ui/parser/macro-mismatched-delim-brace-paren.stderr
@@ -0,0 +1,11 @@
+error: incorrect close delimiter: `)`
+  --> $DIR/macro-mismatched-delim-brace-paren.rs:16:5
+   |
+LL |     foo! {
+   |          - un-closed delimiter
+LL |         bar, "baz", 1, 2.0
+LL |     ) //~ ERROR incorrect close delimiter
+   |     ^ incorrect close delimiter
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macro-mismatched-delim-paren-brace.rs b/src/test/ui/parser/macro-mismatched-delim-paren-brace.rs
index cbc0ed0ccdb..cbc0ed0ccdb 100644
--- a/src/test/parse-fail/macro-mismatched-delim-paren-brace.rs
+++ b/src/test/ui/parser/macro-mismatched-delim-paren-brace.rs
diff --git a/src/test/ui/parser/macro-mismatched-delim-paren-brace.stderr b/src/test/ui/parser/macro-mismatched-delim-paren-brace.stderr
new file mode 100644
index 00000000000..6fe7926f4e1
--- /dev/null
+++ b/src/test/ui/parser/macro-mismatched-delim-paren-brace.stderr
@@ -0,0 +1,17 @@
+error: incorrect close delimiter: `}`
+  --> $DIR/macro-mismatched-delim-paren-brace.rs:16:5
+   |
+LL |     foo! (
+   |          - un-closed delimiter
+LL |         bar, "baz", 1, 2.0
+LL |     } //~ ERROR incorrect close delimiter
+   |     ^ incorrect close delimiter
+
+error: unexpected close delimiter: `}`
+  --> $DIR/macro-mismatched-delim-paren-brace.rs:17:1
+   |
+LL | } //~ ERROR unexpected close delimiter: `}`
+   | ^ unexpected close delimiter
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/macro-repeat.rs b/src/test/ui/parser/macro-repeat.rs
index 3abadd885ac..3abadd885ac 100644
--- a/src/test/parse-fail/macro-repeat.rs
+++ b/src/test/ui/parser/macro-repeat.rs
diff --git a/src/test/ui/parser/macro-repeat.stderr b/src/test/ui/parser/macro-repeat.stderr
new file mode 100644
index 00000000000..7c7a2fb12c3
--- /dev/null
+++ b/src/test/ui/parser/macro-repeat.stderr
@@ -0,0 +1,8 @@
+error: variable 'v' is still repeating at this depth
+  --> $DIR/macro-repeat.rs:13:9
+   |
+LL |         $v  //~ ERROR still repeating at this depth
+   |         ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macros-no-semicolon-items.rs b/src/test/ui/parser/macros-no-semicolon-items.rs
index faf6b4a308a..faf6b4a308a 100644
--- a/src/test/parse-fail/macros-no-semicolon-items.rs
+++ b/src/test/ui/parser/macros-no-semicolon-items.rs
diff --git a/src/test/ui/parser/macros-no-semicolon-items.stderr b/src/test/ui/parser/macros-no-semicolon-items.stderr
new file mode 100644
index 00000000000..1d935f693f1
--- /dev/null
+++ b/src/test/ui/parser/macros-no-semicolon-items.stderr
@@ -0,0 +1,8 @@
+error: macros that expand to items must either be surrounded with braces or followed by a semicolon
+  --> $DIR/macros-no-semicolon-items.rs:13:17
+   |
+LL | macro_rules! foo()  //~ ERROR semicolon
+   |                 ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/macros-no-semicolon.rs b/src/test/ui/parser/macros-no-semicolon.rs
index 1c55d70f607..1c55d70f607 100644
--- a/src/test/parse-fail/macros-no-semicolon.rs
+++ b/src/test/ui/parser/macros-no-semicolon.rs
diff --git a/src/test/ui/parser/macros-no-semicolon.stderr b/src/test/ui/parser/macros-no-semicolon.stderr
new file mode 100644
index 00000000000..9ea9e739a0a
--- /dev/null
+++ b/src/test/ui/parser/macros-no-semicolon.stderr
@@ -0,0 +1,10 @@
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `assert_eq`
+  --> $DIR/macros-no-semicolon.rs:15:5
+   |
+LL |     assert_eq!(1, 2)
+   |                     - expected one of `.`, `;`, `?`, `}`, or an operator here
+LL |     assert_eq!(3, 4) //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `assert_eq`
+   |     ^^^^^^^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/match-arrows-block-then-binop.rs b/src/test/ui/parser/match-arrows-block-then-binop.rs
index e8cfb77f059..e8cfb77f059 100644
--- a/src/test/parse-fail/match-arrows-block-then-binop.rs
+++ b/src/test/ui/parser/match-arrows-block-then-binop.rs
diff --git a/src/test/ui/parser/match-arrows-block-then-binop.stderr b/src/test/ui/parser/match-arrows-block-then-binop.stderr
new file mode 100644
index 00000000000..9293fd14c49
--- /dev/null
+++ b/src/test/ui/parser/match-arrows-block-then-binop.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found `+`
+  --> $DIR/match-arrows-block-then-binop.rs:17:9
+   |
+LL |       } + 5 //~ ERROR expected pattern, found `+`
+   |         ^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/match-vec-invalid.rs b/src/test/ui/parser/match-vec-invalid.rs
index 72501ba0e4f..72501ba0e4f 100644
--- a/src/test/parse-fail/match-vec-invalid.rs
+++ b/src/test/ui/parser/match-vec-invalid.rs
diff --git a/src/test/ui/parser/match-vec-invalid.stderr b/src/test/ui/parser/match-vec-invalid.stderr
new file mode 100644
index 00000000000..9050223c644
--- /dev/null
+++ b/src/test/ui/parser/match-vec-invalid.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,` or `@`, found `..`
+  --> $DIR/match-vec-invalid.rs:16:25
+   |
+LL |         [1, tail.., tail..] => {}, //~ ERROR: expected one of `,` or `@`, found `..`
+   |                         ^^ expected one of `,` or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/mod_file_not_exist.rs b/src/test/ui/parser/mod_file_not_exist.rs
index 4bc6e706d42..4bc6e706d42 100644
--- a/src/test/parse-fail/mod_file_not_exist.rs
+++ b/src/test/ui/parser/mod_file_not_exist.rs
diff --git a/src/test/parse-fail/mod_file_not_exist_windows.rs b/src/test/ui/parser/mod_file_not_exist_windows.rs
index 5cf821749e9..5cf821749e9 100644
--- a/src/test/parse-fail/mod_file_not_exist_windows.rs
+++ b/src/test/ui/parser/mod_file_not_exist_windows.rs
diff --git a/src/test/parse-fail/mod_file_with_path_attr.rs b/src/test/ui/parser/mod_file_with_path_attr.rs
index 993232e70ab..993232e70ab 100644
--- a/src/test/parse-fail/mod_file_with_path_attr.rs
+++ b/src/test/ui/parser/mod_file_with_path_attr.rs
diff --git a/src/test/ui/parser/mod_file_with_path_attr.stderr b/src/test/ui/parser/mod_file_with_path_attr.stderr
new file mode 100644
index 00000000000..9b8e8d25550
--- /dev/null
+++ b/src/test/ui/parser/mod_file_with_path_attr.stderr
@@ -0,0 +1,8 @@
+error: couldn't read "C:/msys64/home/we/rust/src/test/ui/parser/not_a_real_file.rs": The system cannot find the file specified. (os error 2)
+  --> $DIR/mod_file_with_path_attr.rs:14:5
+   |
+LL | mod m; //~ ERROR not_a_real_file.rs
+   |     ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/multiline-comment-line-tracking.rs b/src/test/ui/parser/multiline-comment-line-tracking.rs
index 11abe672745..11abe672745 100644
--- a/src/test/parse-fail/multiline-comment-line-tracking.rs
+++ b/src/test/ui/parser/multiline-comment-line-tracking.rs
diff --git a/src/test/ui/parser/multiline-comment-line-tracking.stderr b/src/test/ui/parser/multiline-comment-line-tracking.stderr
new file mode 100644
index 00000000000..75f6aefb26c
--- /dev/null
+++ b/src/test/ui/parser/multiline-comment-line-tracking.stderr
@@ -0,0 +1,8 @@
+error: expected expression, found `%`
+  --> $DIR/multiline-comment-line-tracking.rs:18:3
+   |
+LL |   %; // parse error on line 18, but is reported on line 6 instead.
+   |   ^ expected expression
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/multitrait.rs b/src/test/ui/parser/multitrait.rs
index b7c9b165884..b7c9b165884 100644
--- a/src/test/parse-fail/multitrait.rs
+++ b/src/test/ui/parser/multitrait.rs
diff --git a/src/test/ui/parser/multitrait.stderr b/src/test/ui/parser/multitrait.stderr
new file mode 100644
index 00000000000..2ccf49d0315
--- /dev/null
+++ b/src/test/ui/parser/multitrait.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `+`, `::`, `<`, `for`, `where`, or `{`, found `,`
+  --> $DIR/multitrait.rs:17:9
+   |
+LL | impl Cmp, ToString for S {
+   |         ^ expected one of 8 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/mut-patterns.rs b/src/test/ui/parser/mut-patterns.rs
index 71d826c67f8..71d826c67f8 100644
--- a/src/test/parse-fail/mut-patterns.rs
+++ b/src/test/ui/parser/mut-patterns.rs
diff --git a/src/test/ui/parser/mut-patterns.stderr b/src/test/ui/parser/mut-patterns.stderr
new file mode 100644
index 00000000000..afe24595de4
--- /dev/null
+++ b/src/test/ui/parser/mut-patterns.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `{`
+  --> $DIR/mut-patterns.rs:17:17
+   |
+LL |     let mut Foo { x: x } = Foo { x: 3 }; //~ ERROR: expected one of `:`, `;`, `=`, or `@`, found `{`
+   |                 ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/new-unicode-escapes-1.rs b/src/test/ui/parser/new-unicode-escapes-1.rs
index 78a68e846d1..78a68e846d1 100644
--- a/src/test/parse-fail/new-unicode-escapes-1.rs
+++ b/src/test/ui/parser/new-unicode-escapes-1.rs
diff --git a/src/test/ui/parser/new-unicode-escapes-1.stderr b/src/test/ui/parser/new-unicode-escapes-1.stderr
new file mode 100644
index 00000000000..4467b394c93
--- /dev/null
+++ b/src/test/ui/parser/new-unicode-escapes-1.stderr
@@ -0,0 +1,8 @@
+error: unterminated unicode escape (needed a `}`)
+  --> $DIR/new-unicode-escapes-1.rs:14:21
+   |
+LL |     let s = "/u{2603"; //~ ERROR unterminated unicode escape (needed a `}`)
+   |                     ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/new-unicode-escapes-2.rs b/src/test/ui/parser/new-unicode-escapes-2.rs
index cdadaef1b59..cdadaef1b59 100644
--- a/src/test/parse-fail/new-unicode-escapes-2.rs
+++ b/src/test/ui/parser/new-unicode-escapes-2.rs
diff --git a/src/test/ui/parser/new-unicode-escapes-2.stderr b/src/test/ui/parser/new-unicode-escapes-2.stderr
new file mode 100644
index 00000000000..54123be4214
--- /dev/null
+++ b/src/test/ui/parser/new-unicode-escapes-2.stderr
@@ -0,0 +1,8 @@
+error: overlong unicode escape (must have at most 6 hex digits)
+  --> $DIR/new-unicode-escapes-2.rs:14:17
+   |
+LL |     let s = "/u{260311111111}"; //~ ERROR overlong unicode escape (must have at most 6 hex digits)
+   |                 ^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/new-unicode-escapes-3.rs b/src/test/ui/parser/new-unicode-escapes-3.rs
index 8189bf67712..8189bf67712 100644
--- a/src/test/parse-fail/new-unicode-escapes-3.rs
+++ b/src/test/ui/parser/new-unicode-escapes-3.rs
diff --git a/src/test/ui/parser/new-unicode-escapes-3.stderr b/src/test/ui/parser/new-unicode-escapes-3.stderr
new file mode 100644
index 00000000000..65196f91b08
--- /dev/null
+++ b/src/test/ui/parser/new-unicode-escapes-3.stderr
@@ -0,0 +1,18 @@
+error: invalid unicode character escape
+  --> $DIR/new-unicode-escapes-3.rs:14:14
+   |
+LL |     let s1 = "/u{d805}"; //~ ERROR invalid unicode character escape
+   |              ^^^^^^^^^^
+   |
+   = help: unicode escape must not be a surrogate
+
+error: invalid unicode character escape
+  --> $DIR/new-unicode-escapes-3.rs:15:14
+   |
+LL |     let s2 = "/u{ffffff}"; //~ ERROR invalid unicode character escape
+   |              ^^^^^^^^^^^^
+   |
+   = help: unicode escape must be at most 10FFFF
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/new-unicode-escapes-4.rs b/src/test/ui/parser/new-unicode-escapes-4.rs
index 8770fb319df..8770fb319df 100644
--- a/src/test/parse-fail/new-unicode-escapes-4.rs
+++ b/src/test/ui/parser/new-unicode-escapes-4.rs
diff --git a/src/test/ui/parser/new-unicode-escapes-4.stderr b/src/test/ui/parser/new-unicode-escapes-4.stderr
new file mode 100644
index 00000000000..309a77e7df0
--- /dev/null
+++ b/src/test/ui/parser/new-unicode-escapes-4.stderr
@@ -0,0 +1,8 @@
+error: invalid character in unicode escape: l
+  --> $DIR/new-unicode-escapes-4.rs:14:17
+   |
+LL |     let s = "/u{lol}";
+   |                 ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/no-binary-float-literal.rs b/src/test/ui/parser/no-binary-float-literal.rs
index 528a2b1ad33..528a2b1ad33 100644
--- a/src/test/parse-fail/no-binary-float-literal.rs
+++ b/src/test/ui/parser/no-binary-float-literal.rs
diff --git a/src/test/ui/parser/no-binary-float-literal.stderr b/src/test/ui/parser/no-binary-float-literal.stderr
new file mode 100644
index 00000000000..db3c3791daf
--- /dev/null
+++ b/src/test/ui/parser/no-binary-float-literal.stderr
@@ -0,0 +1,8 @@
+error: binary float literal is not supported
+  --> $DIR/no-binary-float-literal.rs:17:5
+   |
+LL |     0b101.010;
+   |     ^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/no-hex-float-literal.rs b/src/test/ui/parser/no-hex-float-literal.rs
index df40fdde866..df40fdde866 100644
--- a/src/test/parse-fail/no-hex-float-literal.rs
+++ b/src/test/ui/parser/no-hex-float-literal.rs
diff --git a/src/test/ui/parser/no-hex-float-literal.stderr b/src/test/ui/parser/no-hex-float-literal.stderr
new file mode 100644
index 00000000000..dba019baff8
--- /dev/null
+++ b/src/test/ui/parser/no-hex-float-literal.stderr
@@ -0,0 +1,8 @@
+error: hexadecimal float literal is not supported
+  --> $DIR/no-hex-float-literal.rs:17:5
+   |
+LL |     0x567.89;
+   |     ^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/no-unsafe-self.rs b/src/test/ui/parser/no-unsafe-self.rs
index 22baf88b43f..22baf88b43f 100644
--- a/src/test/parse-fail/no-unsafe-self.rs
+++ b/src/test/ui/parser/no-unsafe-self.rs
diff --git a/src/test/ui/parser/no-unsafe-self.stderr b/src/test/ui/parser/no-unsafe-self.stderr
new file mode 100644
index 00000000000..7fe66bffd86
--- /dev/null
+++ b/src/test/ui/parser/no-unsafe-self.stderr
@@ -0,0 +1,38 @@
+error: cannot pass `self` by raw pointer
+  --> $DIR/no-unsafe-self.rs:14:17
+   |
+LL |     fn foo(*mut self); //~ ERROR cannot pass `self` by raw pointer
+   |                 ^^^^
+
+error: cannot pass `self` by raw pointer
+  --> $DIR/no-unsafe-self.rs:15:19
+   |
+LL |     fn baz(*const self); //~ ERROR cannot pass `self` by raw pointer
+   |                   ^^^^
+
+error: cannot pass `self` by raw pointer
+  --> $DIR/no-unsafe-self.rs:16:13
+   |
+LL |     fn bar(*self); //~ ERROR cannot pass `self` by raw pointer
+   |             ^^^^
+
+error: cannot pass `self` by raw pointer
+  --> $DIR/no-unsafe-self.rs:21:17
+   |
+LL |     fn foo(*mut self) { } //~ ERROR cannot pass `self` by raw pointer
+   |                 ^^^^
+
+error: cannot pass `self` by raw pointer
+  --> $DIR/no-unsafe-self.rs:22:19
+   |
+LL |     fn baz(*const self) { } //~ ERROR cannot pass `self` by raw pointer
+   |                   ^^^^
+
+error: cannot pass `self` by raw pointer
+  --> $DIR/no-unsafe-self.rs:23:13
+   |
+LL |     fn bar(*self) { } //~ ERROR cannot pass `self` by raw pointer
+   |             ^^^^
+
+error: aborting due to 6 previous errors
+
diff --git a/src/test/parse-fail/not-a-pred.rs b/src/test/ui/parser/not-a-pred.rs
index d880c06f8a1..d880c06f8a1 100644
--- a/src/test/parse-fail/not-a-pred.rs
+++ b/src/test/ui/parser/not-a-pred.rs
diff --git a/src/test/ui/parser/not-a-pred.stderr b/src/test/ui/parser/not-a-pred.stderr
new file mode 100644
index 00000000000..15558043737
--- /dev/null
+++ b/src/test/ui/parser/not-a-pred.stderr
@@ -0,0 +1,8 @@
+error: expected one of `->`, `where`, or `{`, found `:`
+  --> $DIR/not-a-pred.rs:15:26
+   |
+LL | fn f(a: isize, b: isize) : lt(a, b) { }
+   |                          ^ expected one of `->`, `where`, or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/omitted-arg-in-item-fn.rs b/src/test/ui/parser/omitted-arg-in-item-fn.rs
index 388b7c8772e..388b7c8772e 100644
--- a/src/test/parse-fail/omitted-arg-in-item-fn.rs
+++ b/src/test/ui/parser/omitted-arg-in-item-fn.rs
diff --git a/src/test/ui/parser/omitted-arg-in-item-fn.stderr b/src/test/ui/parser/omitted-arg-in-item-fn.stderr
new file mode 100644
index 00000000000..4e051b6206f
--- /dev/null
+++ b/src/test/ui/parser/omitted-arg-in-item-fn.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:` or `@`, found `)`
+  --> $DIR/omitted-arg-in-item-fn.rs:13:9
+   |
+LL | fn foo(x) { //~ ERROR expected one of `:` or `@`, found `)`
+   |         ^ expected one of `:` or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/paamayim-nekudotayim.rs b/src/test/ui/parser/paamayim-nekudotayim.rs
index 3466fc6e71a..3466fc6e71a 100644
--- a/src/test/parse-fail/paamayim-nekudotayim.rs
+++ b/src/test/ui/parser/paamayim-nekudotayim.rs
diff --git a/src/test/ui/parser/paamayim-nekudotayim.stderr b/src/test/ui/parser/paamayim-nekudotayim.stderr
new file mode 100644
index 00000000000..68912f52dc1
--- /dev/null
+++ b/src/test/ui/parser/paamayim-nekudotayim.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `;`
+  --> $DIR/paamayim-nekudotayim.rs:16:7
+   |
+LL |     ::; //~ ERROR expected identifier, found `;`
+   |       ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/paren-after-qualified-path-in-match.rs b/src/test/ui/parser/paren-after-qualified-path-in-match.rs
index d3aa4b72b78..d3aa4b72b78 100644
--- a/src/test/parse-fail/paren-after-qualified-path-in-match.rs
+++ b/src/test/ui/parser/paren-after-qualified-path-in-match.rs
diff --git a/src/test/ui/parser/paren-after-qualified-path-in-match.stderr b/src/test/ui/parser/paren-after-qualified-path-in-match.stderr
new file mode 100644
index 00000000000..df3a5011fd8
--- /dev/null
+++ b/src/test/ui/parser/paren-after-qualified-path-in-match.stderr
@@ -0,0 +1,8 @@
+error: unexpected `(` after qualified path
+  --> $DIR/paren-after-qualified-path-in-match.rs:15:27
+   |
+LL |         <T as Trait>::Type(2) => (),
+   |                           ^ unexpected `(` after qualified path
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-lt-bracket-1.rs b/src/test/ui/parser/pat-lt-bracket-1.rs
index 6d3d1207788..6d3d1207788 100644
--- a/src/test/parse-fail/pat-lt-bracket-1.rs
+++ b/src/test/ui/parser/pat-lt-bracket-1.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-1.stderr b/src/test/ui/parser/pat-lt-bracket-1.stderr
new file mode 100644
index 00000000000..0b1402d1d56
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-1.stderr
@@ -0,0 +1,8 @@
+error: expected one of `=>`, `@`, `if`, or `|`, found `<`
+  --> $DIR/pat-lt-bracket-1.rs:13:7
+   |
+LL |     x < 7 => (),
+   |       ^ expected one of `=>`, `@`, `if`, or `|` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-lt-bracket-2.rs b/src/test/ui/parser/pat-lt-bracket-2.rs
index 6a0653041d4..6a0653041d4 100644
--- a/src/test/parse-fail/pat-lt-bracket-2.rs
+++ b/src/test/ui/parser/pat-lt-bracket-2.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-2.stderr b/src/test/ui/parser/pat-lt-bracket-2.stderr
new file mode 100644
index 00000000000..341990dd891
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-2.stderr
@@ -0,0 +1,13 @@
+error: expected one of `:` or `@`, found `<`
+  --> $DIR/pat-lt-bracket-2.rs:11:7
+   |
+LL | fn a(B<) {}
+   |       ^ expected one of `:` or `@` here
+
+error[E0601]: `main` function not found in crate `pat_lt_bracket_2`
+   |
+   = note: consider adding a `main` function to `$DIR/pat-lt-bracket-2.rs`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0601`.
diff --git a/src/test/parse-fail/pat-lt-bracket-3.rs b/src/test/ui/parser/pat-lt-bracket-3.rs
index 8ea2bcf900c..8ea2bcf900c 100644
--- a/src/test/parse-fail/pat-lt-bracket-3.rs
+++ b/src/test/ui/parser/pat-lt-bracket-3.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-3.stderr b/src/test/ui/parser/pat-lt-bracket-3.stderr
new file mode 100644
index 00000000000..2cc2800f36b
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-3.stderr
@@ -0,0 +1,13 @@
+error: expected one of `=>`, `@`, `if`, or `|`, found `<`
+  --> $DIR/pat-lt-bracket-3.rs:16:16
+   |
+LL |             Foo<T>(x, y) => {
+   |                ^ expected one of `=>`, `@`, `if`, or `|` here
+
+error[E0601]: `main` function not found in crate `pat_lt_bracket_3`
+   |
+   = note: consider adding a `main` function to `$DIR/pat-lt-bracket-3.rs`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0601`.
diff --git a/src/test/parse-fail/pat-lt-bracket-4.rs b/src/test/ui/parser/pat-lt-bracket-4.rs
index a163b38b492..a163b38b492 100644
--- a/src/test/parse-fail/pat-lt-bracket-4.rs
+++ b/src/test/ui/parser/pat-lt-bracket-4.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-4.stderr b/src/test/ui/parser/pat-lt-bracket-4.stderr
new file mode 100644
index 00000000000..4a0dec1b5c6
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-4.stderr
@@ -0,0 +1,8 @@
+error: expected one of `=>`, `@`, `if`, or `|`, found `<`
+  --> $DIR/pat-lt-bracket-4.rs:20:12
+   |
+LL |         Foo<T>::A(value) => value, //~ error: expected one of `=>`, `@`, `if`, or `|`, found `<`
+   |            ^ expected one of `=>`, `@`, `if`, or `|` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-lt-bracket-5.rs b/src/test/ui/parser/pat-lt-bracket-5.rs
index 421d7a05bef..421d7a05bef 100644
--- a/src/test/parse-fail/pat-lt-bracket-5.rs
+++ b/src/test/ui/parser/pat-lt-bracket-5.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-5.stderr b/src/test/ui/parser/pat-lt-bracket-5.stderr
new file mode 100644
index 00000000000..567263576c8
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-5.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, `=`, or `@`, found `[`
+  --> $DIR/pat-lt-bracket-5.rs:12:10
+   |
+LL |     let v[0] = v[1]; //~ ERROR expected one of `:`, `;`, `=`, or `@`, found `[`
+   |          ^ expected one of `:`, `;`, `=`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-lt-bracket-6.rs b/src/test/ui/parser/pat-lt-bracket-6.rs
index fb78e558a95..fb78e558a95 100644
--- a/src/test/parse-fail/pat-lt-bracket-6.rs
+++ b/src/test/ui/parser/pat-lt-bracket-6.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-6.stderr b/src/test/ui/parser/pat-lt-bracket-6.stderr
new file mode 100644
index 00000000000..a173b26e07f
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-6.stderr
@@ -0,0 +1,8 @@
+error: expected one of `)`, `,`, or `@`, found `[`
+  --> $DIR/pat-lt-bracket-6.rs:12:19
+   |
+LL |     let Test(&desc[..]) = x; //~ ERROR: expected one of `)`, `,`, or `@`, found `[`
+   |                   ^ expected one of `)`, `,`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-lt-bracket-7.rs b/src/test/ui/parser/pat-lt-bracket-7.rs
index d75589d8889..d75589d8889 100644
--- a/src/test/parse-fail/pat-lt-bracket-7.rs
+++ b/src/test/ui/parser/pat-lt-bracket-7.rs
diff --git a/src/test/ui/parser/pat-lt-bracket-7.stderr b/src/test/ui/parser/pat-lt-bracket-7.stderr
new file mode 100644
index 00000000000..31fd8b16b21
--- /dev/null
+++ b/src/test/ui/parser/pat-lt-bracket-7.stderr
@@ -0,0 +1,8 @@
+error: expected one of `)`, `,`, or `@`, found `[`
+  --> $DIR/pat-lt-bracket-7.rs:12:16
+   |
+LL |     for thing(x[]) in foo {} //~ ERROR: expected one of `)`, `,`, or `@`, found `[`
+   |                ^ expected one of `)`, `,`, or `@` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-ranges-1.rs b/src/test/ui/parser/pat-ranges-1.rs
index 857a3924aec..857a3924aec 100644
--- a/src/test/parse-fail/pat-ranges-1.rs
+++ b/src/test/ui/parser/pat-ranges-1.rs
diff --git a/src/test/ui/parser/pat-ranges-1.stderr b/src/test/ui/parser/pat-ranges-1.stderr
new file mode 100644
index 00000000000..10825036566
--- /dev/null
+++ b/src/test/ui/parser/pat-ranges-1.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, or `=`, found `..=`
+  --> $DIR/pat-ranges-1.rs:14:21
+   |
+LL |     let macropus!() ..= 11 = 12; //~ error: expected one of `:`, `;`, or `=`, found `..=`
+   |                     ^^^ expected one of `:`, `;`, or `=` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-ranges-2.rs b/src/test/ui/parser/pat-ranges-2.rs
index 64c749333cf..64c749333cf 100644
--- a/src/test/parse-fail/pat-ranges-2.rs
+++ b/src/test/ui/parser/pat-ranges-2.rs
diff --git a/src/test/ui/parser/pat-ranges-2.stderr b/src/test/ui/parser/pat-ranges-2.stderr
new file mode 100644
index 00000000000..bfcf8c22a7e
--- /dev/null
+++ b/src/test/ui/parser/pat-ranges-2.stderr
@@ -0,0 +1,8 @@
+error: expected one of `::`, `:`, `;`, or `=`, found `!`
+  --> $DIR/pat-ranges-2.rs:14:26
+   |
+LL |     let 10 ..= makropulos!() = 12; //~ error: expected one of `::`, `:`, `;`, or `=`, found `!`
+   |                          ^ expected one of `::`, `:`, `;`, or `=` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-ranges-3.rs b/src/test/ui/parser/pat-ranges-3.rs
index 1327a9fab36..1327a9fab36 100644
--- a/src/test/parse-fail/pat-ranges-3.rs
+++ b/src/test/ui/parser/pat-ranges-3.rs
diff --git a/src/test/ui/parser/pat-ranges-3.stderr b/src/test/ui/parser/pat-ranges-3.stderr
new file mode 100644
index 00000000000..403cebccdd2
--- /dev/null
+++ b/src/test/ui/parser/pat-ranges-3.stderr
@@ -0,0 +1,8 @@
+error: expected one of `:`, `;`, or `=`, found `+`
+  --> $DIR/pat-ranges-3.rs:14:19
+   |
+LL |     let 10 ..= 10 + 3 = 12; //~ expected one of `:`, `;`, or `=`, found `+`
+   |                   ^ expected one of `:`, `;`, or `=` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-ranges-4.rs b/src/test/ui/parser/pat-ranges-4.rs
index c159c770250..c159c770250 100644
--- a/src/test/parse-fail/pat-ranges-4.rs
+++ b/src/test/ui/parser/pat-ranges-4.rs
diff --git a/src/test/ui/parser/pat-ranges-4.stderr b/src/test/ui/parser/pat-ranges-4.stderr
new file mode 100644
index 00000000000..557f35370cb
--- /dev/null
+++ b/src/test/ui/parser/pat-ranges-4.stderr
@@ -0,0 +1,8 @@
+error: expected one of `...`, `..=`, `..`, `:`, `;`, or `=`, found `-`
+  --> $DIR/pat-ranges-4.rs:14:12
+   |
+LL |     let 10 - 3 ..= 10 = 8;
+   |            ^ expected one of `...`, `..=`, `..`, `:`, `;`, or `=` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-ref-enum.rs b/src/test/ui/parser/pat-ref-enum.rs
index cf802572659..cf802572659 100644
--- a/src/test/parse-fail/pat-ref-enum.rs
+++ b/src/test/ui/parser/pat-ref-enum.rs
diff --git a/src/test/ui/parser/pat-ref-enum.stderr b/src/test/ui/parser/pat-ref-enum.stderr
new file mode 100644
index 00000000000..5e39b6d8fa9
--- /dev/null
+++ b/src/test/ui/parser/pat-ref-enum.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found enum pattern
+  --> $DIR/pat-ref-enum.rs:15:11
+   |
+LL |       ref Some(i) => {} //~ ERROR expected identifier, found enum pattern
+   |           ^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-tuple-1.rs b/src/test/ui/parser/pat-tuple-1.rs
index 945d0740654..945d0740654 100644
--- a/src/test/parse-fail/pat-tuple-1.rs
+++ b/src/test/ui/parser/pat-tuple-1.rs
diff --git a/src/test/ui/parser/pat-tuple-1.stderr b/src/test/ui/parser/pat-tuple-1.stderr
new file mode 100644
index 00000000000..eb970e6e220
--- /dev/null
+++ b/src/test/ui/parser/pat-tuple-1.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found `,`
+  --> $DIR/pat-tuple-1.rs:15:10
+   |
+LL |         (, ..) => {} //~ ERROR expected pattern, found `,`
+   |          ^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-tuple-2.rs b/src/test/ui/parser/pat-tuple-2.rs
index 07b391d3279..07b391d3279 100644
--- a/src/test/parse-fail/pat-tuple-2.rs
+++ b/src/test/ui/parser/pat-tuple-2.rs
diff --git a/src/test/ui/parser/pat-tuple-2.stderr b/src/test/ui/parser/pat-tuple-2.stderr
new file mode 100644
index 00000000000..cedc98ace64
--- /dev/null
+++ b/src/test/ui/parser/pat-tuple-2.stderr
@@ -0,0 +1,8 @@
+error: trailing comma is not permitted after `..`
+  --> $DIR/pat-tuple-2.rs:15:17
+   |
+LL |         (pat, ..,) => {} //~ ERROR trailing comma is not permitted after `..`
+   |                 ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-tuple-3.rs b/src/test/ui/parser/pat-tuple-3.rs
index 029dc7a2956..029dc7a2956 100644
--- a/src/test/parse-fail/pat-tuple-3.rs
+++ b/src/test/ui/parser/pat-tuple-3.rs
diff --git a/src/test/ui/parser/pat-tuple-3.stderr b/src/test/ui/parser/pat-tuple-3.stderr
new file mode 100644
index 00000000000..28662f74142
--- /dev/null
+++ b/src/test/ui/parser/pat-tuple-3.stderr
@@ -0,0 +1,8 @@
+error: `..` can only be used once per tuple or tuple struct pattern
+  --> $DIR/pat-tuple-3.rs:15:19
+   |
+LL |         (.., pat, ..) => {} //~ ERROR `..` can only be used once per tuple or tuple struct pattern
+   |                   ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-tuple-4.rs b/src/test/ui/parser/pat-tuple-4.rs
index f4c3afa07f1..f4c3afa07f1 100644
--- a/src/test/parse-fail/pat-tuple-4.rs
+++ b/src/test/ui/parser/pat-tuple-4.rs
diff --git a/src/test/ui/parser/pat-tuple-4.stderr b/src/test/ui/parser/pat-tuple-4.stderr
new file mode 100644
index 00000000000..586baddc363
--- /dev/null
+++ b/src/test/ui/parser/pat-tuple-4.stderr
@@ -0,0 +1,8 @@
+error: expected one of `)` or `,`, found `pat`
+  --> $DIR/pat-tuple-4.rs:15:13
+   |
+LL |         (.. pat) => {} //~ ERROR expected one of `)` or `,`, found `pat`
+   |             ^^^ expected one of `)` or `,` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pat-tuple-5.rs b/src/test/ui/parser/pat-tuple-5.rs
index d528b97b5de..d528b97b5de 100644
--- a/src/test/parse-fail/pat-tuple-5.rs
+++ b/src/test/ui/parser/pat-tuple-5.rs
diff --git a/src/test/ui/parser/pat-tuple-5.stderr b/src/test/ui/parser/pat-tuple-5.stderr
new file mode 100644
index 00000000000..1e192cfe598
--- /dev/null
+++ b/src/test/ui/parser/pat-tuple-5.stderr
@@ -0,0 +1,8 @@
+error: unexpected token: `)`
+  --> $DIR/pat-tuple-5.rs:15:14
+   |
+LL |         (pat ..) => {} //~ ERROR unexpected token: `)`
+   |              ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pub-item-macro.rs b/src/test/ui/parser/pub-item-macro.rs
index 8809e9a257d..8809e9a257d 100644
--- a/src/test/parse-fail/pub-item-macro.rs
+++ b/src/test/ui/parser/pub-item-macro.rs
diff --git a/src/test/ui/parser/pub-item-macro.stderr b/src/test/ui/parser/pub-item-macro.stderr
new file mode 100644
index 00000000000..f55ba469ab4
--- /dev/null
+++ b/src/test/ui/parser/pub-item-macro.stderr
@@ -0,0 +1,13 @@
+error: can't qualify macro invocation with `pub`
+  --> $DIR/pub-item-macro.rs:18:5
+   |
+LL |     pub priv_x!(); //~ ERROR can't qualify macro invocation with `pub`
+   |     ^^^
+...
+LL |     pub_x!();
+   |     --------- in this macro invocation
+   |
+   = help: try adjusting the macro to put `pub` inside the invocation
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/pub-method-macro.rs b/src/test/ui/parser/pub-method-macro.rs
index 83db24b8c01..83db24b8c01 100644
--- a/src/test/parse-fail/pub-method-macro.rs
+++ b/src/test/ui/parser/pub-method-macro.rs
diff --git a/src/test/ui/parser/pub-method-macro.stderr b/src/test/ui/parser/pub-method-macro.stderr
new file mode 100644
index 00000000000..2c348223fca
--- /dev/null
+++ b/src/test/ui/parser/pub-method-macro.stderr
@@ -0,0 +1,10 @@
+error: can't qualify macro invocation with `pub`
+  --> $DIR/pub-method-macro.rs:27:9
+   |
+LL |         pub defn!(f); //~ ERROR can't qualify macro invocation with `pub`
+   |         ^^^
+   |
+   = help: try adjusting the macro to put `pub` inside the invocation
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/range-3.rs b/src/test/ui/parser/range-3.rs
index 95aa71b0cdf..95aa71b0cdf 100644
--- a/src/test/parse-fail/range-3.rs
+++ b/src/test/ui/parser/range-3.rs
diff --git a/src/test/ui/parser/range-3.stderr b/src/test/ui/parser/range-3.stderr
new file mode 100644
index 00000000000..b8185862b3a
--- /dev/null
+++ b/src/test/ui/parser/range-3.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `..`
+  --> $DIR/range-3.rs:16:17
+   |
+LL |     let r = 1..2..3;
+   |                 ^^ expected one of `.`, `;`, `?`, or an operator here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/range-4.rs b/src/test/ui/parser/range-4.rs
index 4500df116a2..4500df116a2 100644
--- a/src/test/parse-fail/range-4.rs
+++ b/src/test/ui/parser/range-4.rs
diff --git a/src/test/ui/parser/range-4.stderr b/src/test/ui/parser/range-4.stderr
new file mode 100644
index 00000000000..b5013f2e003
--- /dev/null
+++ b/src/test/ui/parser/range-4.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `..`
+  --> $DIR/range-4.rs:16:16
+   |
+LL |     let r = ..1..2;
+   |                ^^ expected one of `.`, `;`, `?`, or an operator here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/range_inclusive.rs b/src/test/ui/parser/range_inclusive.rs
index 2aa7d6d6cd7..2aa7d6d6cd7 100644
--- a/src/test/parse-fail/range_inclusive.rs
+++ b/src/test/ui/parser/range_inclusive.rs
diff --git a/src/test/ui/parser/range_inclusive.stderr b/src/test/ui/parser/range_inclusive.stderr
new file mode 100644
index 00000000000..a8ded6d0cbe
--- /dev/null
+++ b/src/test/ui/parser/range_inclusive.stderr
@@ -0,0 +1,11 @@
+error[E0586]: inclusive range with no end
+  --> $DIR/range_inclusive.rs:14:19
+   |
+LL |     for _ in 1..= {} //~ERROR inclusive range with no end
+   |                   ^
+   |
+   = help: inclusive ranges must be bounded at the end (`..=b` or `a..=b`)
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0586`.
diff --git a/src/test/parse-fail/range_inclusive_dotdotdot.rs b/src/test/ui/parser/range_inclusive_dotdotdot.rs
index 34b96a59c2d..34b96a59c2d 100644
--- a/src/test/parse-fail/range_inclusive_dotdotdot.rs
+++ b/src/test/ui/parser/range_inclusive_dotdotdot.rs
diff --git a/src/test/ui/parser/range_inclusive_dotdotdot.stderr b/src/test/ui/parser/range_inclusive_dotdotdot.stderr
new file mode 100644
index 00000000000..7e1df24fc06
--- /dev/null
+++ b/src/test/ui/parser/range_inclusive_dotdotdot.stderr
@@ -0,0 +1,58 @@
+error: unexpected token: `...`
+  --> $DIR/range_inclusive_dotdotdot.rs:18:12
+   |
+LL |     return ...1; //~ERROR unexpected token: `...`
+   |            ^^^
+help: use `..` for an exclusive range
+   |
+LL |     return ..1; //~ERROR unexpected token: `...`
+   |            ^^
+help: or `..=` for an inclusive range
+   |
+LL |     return ..=1; //~ERROR unexpected token: `...`
+   |            ^^^
+
+error: unexpected token: `...`
+  --> $DIR/range_inclusive_dotdotdot.rs:24:13
+   |
+LL |     let x = ...0;    //~ERROR unexpected token: `...`
+   |             ^^^
+help: use `..` for an exclusive range
+   |
+LL |     let x = ..0;    //~ERROR unexpected token: `...`
+   |             ^^
+help: or `..=` for an inclusive range
+   |
+LL |     let x = ..=0;    //~ERROR unexpected token: `...`
+   |             ^^^
+
+error: unexpected token: `...`
+  --> $DIR/range_inclusive_dotdotdot.rs:28:14
+   |
+LL |     let x = 5...5;   //~ERROR unexpected token: `...`
+   |              ^^^
+help: use `..` for an exclusive range
+   |
+LL |     let x = 5..5;   //~ERROR unexpected token: `...`
+   |              ^^
+help: or `..=` for an inclusive range
+   |
+LL |     let x = 5..=5;   //~ERROR unexpected token: `...`
+   |              ^^^
+
+error: unexpected token: `...`
+  --> $DIR/range_inclusive_dotdotdot.rs:32:15
+   |
+LL |     for _ in 0...1 {} //~ERROR unexpected token: `...`
+   |               ^^^
+help: use `..` for an exclusive range
+   |
+LL |     for _ in 0..1 {} //~ERROR unexpected token: `...`
+   |               ^^
+help: or `..=` for an inclusive range
+   |
+LL |     for _ in 0..=1 {} //~ERROR unexpected token: `...`
+   |               ^^^
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/parse-fail/raw-byte-string-eof.rs b/src/test/ui/parser/raw-byte-string-eof.rs
index 4b8bb31d19a..4b8bb31d19a 100644
--- a/src/test/parse-fail/raw-byte-string-eof.rs
+++ b/src/test/ui/parser/raw-byte-string-eof.rs
diff --git a/src/test/ui/parser/raw-byte-string-eof.stderr b/src/test/ui/parser/raw-byte-string-eof.stderr
new file mode 100644
index 00000000000..4c8a3bfa644
--- /dev/null
+++ b/src/test/ui/parser/raw-byte-string-eof.stderr
@@ -0,0 +1,10 @@
+error: unterminated raw string
+  --> $DIR/raw-byte-string-eof.rs:15:6
+   |
+LL |     br##"a"#;  //~ unterminated raw string
+   |      ^ unterminated raw string
+   |
+   = note: this raw string should be terminated with `"##`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/raw-byte-string-literals.rs b/src/test/ui/parser/raw-byte-string-literals.rs
index 2e33f98add6..2e33f98add6 100644
--- a/src/test/parse-fail/raw-byte-string-literals.rs
+++ b/src/test/ui/parser/raw-byte-string-literals.rs
diff --git a/src/test/ui/parser/raw-byte-string-literals.stderr b/src/test/ui/parser/raw-byte-string-literals.stderr
new file mode 100644
index 00000000000..b5a379fc378
--- /dev/null
+++ b/src/test/ui/parser/raw-byte-string-literals.stderr
@@ -0,0 +1,14 @@
+error: raw byte string must be ASCII: /u{e9}
+  --> $DIR/raw-byte-string-literals.rs:15:8
+   |
+LL |     br"é";  //~ ERROR raw byte string must be ASCII
+   |        ^
+
+error: found invalid character; only `#` is allowed in raw string delimitation: ~
+  --> $DIR/raw-byte-string-literals.rs:16:6
+   |
+LL |     br##~"a"~##;  //~ ERROR only `#` is allowed in raw string delimitation
+   |      ^^^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/raw-str-delim.rs b/src/test/ui/parser/raw-str-delim.rs
index 8c0027287de..8c0027287de 100644
--- a/src/test/parse-fail/raw-str-delim.rs
+++ b/src/test/ui/parser/raw-str-delim.rs
diff --git a/src/test/ui/parser/raw-str-delim.stderr b/src/test/ui/parser/raw-str-delim.stderr
new file mode 100644
index 00000000000..307550081d5
--- /dev/null
+++ b/src/test/ui/parser/raw-str-delim.stderr
@@ -0,0 +1,8 @@
+error: found invalid character; only `#` is allowed in raw string delimitation: ~
+  --> $DIR/raw-str-delim.rs:14:5
+   |
+LL |     r#~"#"~# //~ ERROR found invalid character; only `#` is allowed in raw string delimitation
+   |     ^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/raw-str-unbalanced.rs b/src/test/ui/parser/raw-str-unbalanced.rs
index 5c09f68970b..5c09f68970b 100644
--- a/src/test/parse-fail/raw-str-unbalanced.rs
+++ b/src/test/ui/parser/raw-str-unbalanced.rs
diff --git a/src/test/ui/parser/raw-str-unbalanced.stderr b/src/test/ui/parser/raw-str-unbalanced.stderr
new file mode 100644
index 00000000000..666faaabc10
--- /dev/null
+++ b/src/test/ui/parser/raw-str-unbalanced.stderr
@@ -0,0 +1,8 @@
+error: expected one of `.`, `;`, `?`, or an operator, found `#`
+  --> $DIR/raw-str-unbalanced.rs:15:9
+   |
+LL |       "## //~ ERROR expected one of `.`, `;`, `?`, or an operator, found `#`
+   |         ^ expected one of `.`, `;`, `?`, or an operator here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/raw-str-unterminated.rs b/src/test/ui/parser/raw-str-unterminated.rs
index c37239ac42c..c37239ac42c 100644
--- a/src/test/parse-fail/raw-str-unterminated.rs
+++ b/src/test/ui/parser/raw-str-unterminated.rs
diff --git a/src/test/ui/parser/raw-str-unterminated.stderr b/src/test/ui/parser/raw-str-unterminated.stderr
new file mode 100644
index 00000000000..a7d1ad227d2
--- /dev/null
+++ b/src/test/ui/parser/raw-str-unterminated.stderr
@@ -0,0 +1,10 @@
+error: unterminated raw string
+  --> $DIR/raw-str-unterminated.rs:14:5
+   |
+LL |     r#" string literal goes on
+   |     ^ unterminated raw string
+   |
+   = note: this raw string should be terminated with `"#`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/recover-enum.rs b/src/test/ui/parser/recover-enum.rs
index 7de3ed10c90..7de3ed10c90 100644
--- a/src/test/parse-fail/recover-enum.rs
+++ b/src/test/ui/parser/recover-enum.rs
diff --git a/src/test/ui/parser/recover-enum.stderr b/src/test/ui/parser/recover-enum.stderr
new file mode 100644
index 00000000000..1d157c19005
--- /dev/null
+++ b/src/test/ui/parser/recover-enum.stderr
@@ -0,0 +1,10 @@
+error: expected one of `(`, `,`, `=`, `{`, or `}`, found `Bad`
+  --> $DIR/recover-enum.rs:16:9
+   |
+LL |         Very
+   |             - expected one of `(`, `,`, `=`, `{`, or `}` here
+LL |         Bad //~ ERROR found `Bad`
+   |         ^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/recover-enum2.rs b/src/test/ui/parser/recover-enum2.rs
index 6fd32f842f1..6fd32f842f1 100644
--- a/src/test/parse-fail/recover-enum2.rs
+++ b/src/test/ui/parser/recover-enum2.rs
diff --git a/src/test/ui/parser/recover-enum2.stderr b/src/test/ui/parser/recover-enum2.stderr
new file mode 100644
index 00000000000..802f0004564
--- /dev/null
+++ b/src/test/ui/parser/recover-enum2.stderr
@@ -0,0 +1,26 @@
+error: expected type, found `{`
+  --> $DIR/recover-enum2.rs:18:18
+   |
+LL |             abc: {}, //~ ERROR: expected type, found `{`
+   |                  ^
+
+error: expected one of `!`, `(`, `)`, `+`, `,`, `::`, or `<`, found `{`
+  --> $DIR/recover-enum2.rs:37:22
+   |
+LL |             Nope(i32 {}) //~ ERROR: found `{`
+   |                      ^ expected one of 7 possible tokens here
+
+error: expected one of `!`, `&&`, `&`, `(`, `)`, `*`, `+`, `,`, `::`, `<`, `?`, `[`, `_`, `crate`, `dyn`, `extern`, `fn`, `for`, `impl`, `pub`, `unsafe`, `}`, or lifetime, found `{`
+  --> $DIR/recover-enum2.rs:37:22
+   |
+LL |             Nope(i32 {}) //~ ERROR: found `{`
+   |                      ^ expected one of 23 possible tokens here
+
+error: expected expression, found reserved identifier `_`
+  --> $DIR/recover-enum2.rs:42:22
+   |
+LL |     let bad_syntax = _; //~ ERROR: expected expression, found reserved identifier `_`
+   |                      ^ expected expression
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/parse-fail/recover-struct.rs b/src/test/ui/parser/recover-struct.rs
index 535dd529c0b..535dd529c0b 100644
--- a/src/test/parse-fail/recover-struct.rs
+++ b/src/test/ui/parser/recover-struct.rs
diff --git a/src/test/ui/parser/recover-struct.stderr b/src/test/ui/parser/recover-struct.stderr
new file mode 100644
index 00000000000..715c9e5f709
--- /dev/null
+++ b/src/test/ui/parser/recover-struct.stderr
@@ -0,0 +1,10 @@
+error: expected `:`, found `Bad`
+  --> $DIR/recover-struct.rs:16:9
+   |
+LL |         Very
+   |             - expected `:`
+LL |         Bad //~ ERROR found `Bad`
+   |         ^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/regions-out-of-scope-slice.rs b/src/test/ui/parser/regions-out-of-scope-slice.rs
index c4601b4de17..c4601b4de17 100644
--- a/src/test/parse-fail/regions-out-of-scope-slice.rs
+++ b/src/test/ui/parser/regions-out-of-scope-slice.rs
diff --git a/src/test/parse-fail/removed-syntax-closure-lifetime.rs b/src/test/ui/parser/removed-syntax-closure-lifetime.rs
index b305b1894a8..b305b1894a8 100644
--- a/src/test/parse-fail/removed-syntax-closure-lifetime.rs
+++ b/src/test/ui/parser/removed-syntax-closure-lifetime.rs
diff --git a/src/test/ui/parser/removed-syntax-closure-lifetime.stderr b/src/test/ui/parser/removed-syntax-closure-lifetime.stderr
new file mode 100644
index 00000000000..97219d5bba9
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-closure-lifetime.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `+`, `,`, `::`, `<`, or `>`, found `/`
+  --> $DIR/removed-syntax-closure-lifetime.rs:13:22
+   |
+LL | type closure = Box<lt/fn()>;
+   |                      ^ expected one of 7 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-enum-newtype.rs b/src/test/ui/parser/removed-syntax-enum-newtype.rs
index 6a7f706624d..6a7f706624d 100644
--- a/src/test/parse-fail/removed-syntax-enum-newtype.rs
+++ b/src/test/ui/parser/removed-syntax-enum-newtype.rs
diff --git a/src/test/ui/parser/removed-syntax-enum-newtype.stderr b/src/test/ui/parser/removed-syntax-enum-newtype.stderr
new file mode 100644
index 00000000000..97ba0ff8d58
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-enum-newtype.stderr
@@ -0,0 +1,8 @@
+error: expected one of `<`, `where`, or `{`, found `=`
+  --> $DIR/removed-syntax-enum-newtype.rs:13:8
+   |
+LL | enum e = isize; //~ ERROR expected one of `<`, `where`, or `{`, found `=`
+   |        ^ expected one of `<`, `where`, or `{` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-extern-const.rs b/src/test/ui/parser/removed-syntax-extern-const.rs
index 27688867de3..27688867de3 100644
--- a/src/test/parse-fail/removed-syntax-extern-const.rs
+++ b/src/test/ui/parser/removed-syntax-extern-const.rs
diff --git a/src/test/ui/parser/removed-syntax-extern-const.stderr b/src/test/ui/parser/removed-syntax-extern-const.stderr
new file mode 100644
index 00000000000..b40684ccc7c
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-extern-const.stderr
@@ -0,0 +1,8 @@
+error: extern items cannot be `const`
+  --> $DIR/removed-syntax-extern-const.rs:14:5
+   |
+LL |     const i: isize;
+   |     ^^^^^ help: try using a static value: `static`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-field-let.rs b/src/test/ui/parser/removed-syntax-field-let.rs
index 6deb3bb2e95..6deb3bb2e95 100644
--- a/src/test/parse-fail/removed-syntax-field-let.rs
+++ b/src/test/ui/parser/removed-syntax-field-let.rs
diff --git a/src/test/ui/parser/removed-syntax-field-let.stderr b/src/test/ui/parser/removed-syntax-field-let.stderr
new file mode 100644
index 00000000000..8782a37b35a
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-field-let.stderr
@@ -0,0 +1,14 @@
+error: expected identifier, found keyword `let`
+  --> $DIR/removed-syntax-field-let.rs:14:5
+   |
+LL |     let foo: (),
+   |     ^^^ expected identifier, found keyword
+
+error: expected `:`, found `foo`
+  --> $DIR/removed-syntax-field-let.rs:14:9
+   |
+LL |     let foo: (),
+   |         ^^^ expected `:`
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/removed-syntax-field-semicolon.rs b/src/test/ui/parser/removed-syntax-field-semicolon.rs
index 409b9507769..409b9507769 100644
--- a/src/test/parse-fail/removed-syntax-field-semicolon.rs
+++ b/src/test/ui/parser/removed-syntax-field-semicolon.rs
diff --git a/src/test/ui/parser/removed-syntax-field-semicolon.stderr b/src/test/ui/parser/removed-syntax-field-semicolon.stderr
new file mode 100644
index 00000000000..3800697221e
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-field-semicolon.stderr
@@ -0,0 +1,8 @@
+error: expected `,`, or `}`, found `;`
+  --> $DIR/removed-syntax-field-semicolon.rs:14:12
+   |
+LL |     bar: ();
+   |            ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-fixed-vec.rs b/src/test/ui/parser/removed-syntax-fixed-vec.rs
index 0f34db08852..0f34db08852 100644
--- a/src/test/parse-fail/removed-syntax-fixed-vec.rs
+++ b/src/test/ui/parser/removed-syntax-fixed-vec.rs
diff --git a/src/test/ui/parser/removed-syntax-fixed-vec.stderr b/src/test/ui/parser/removed-syntax-fixed-vec.stderr
new file mode 100644
index 00000000000..737faf79a01
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-fixed-vec.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `+`, `::`, `;`, `<`, or `]`, found `*`
+  --> $DIR/removed-syntax-fixed-vec.rs:13:17
+   |
+LL | type v = [isize * 3]; //~ ERROR expected one of `!`, `(`, `+`, `::`, `;`, `<`, or `]`, found `*`
+   |                 ^ expected one of 7 possible tokens here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-fn-sigil.rs b/src/test/ui/parser/removed-syntax-fn-sigil.rs
index f47ad01d7e1..f47ad01d7e1 100644
--- a/src/test/parse-fail/removed-syntax-fn-sigil.rs
+++ b/src/test/ui/parser/removed-syntax-fn-sigil.rs
diff --git a/src/test/ui/parser/removed-syntax-fn-sigil.stderr b/src/test/ui/parser/removed-syntax-fn-sigil.stderr
new file mode 100644
index 00000000000..587be63041d
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-fn-sigil.stderr
@@ -0,0 +1,10 @@
+error: expected `(`, found `~`
+  --> $DIR/removed-syntax-fn-sigil.rs:14:14
+   |
+LL |     let x: fn~() = || (); //~ ERROR expected `(`, found `~`
+   |         -    ^ expected `(`
+   |         |
+   |         while parsing the type for `x`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-mode.rs b/src/test/ui/parser/removed-syntax-mode.rs
index 6e99f8b3eea..6e99f8b3eea 100644
--- a/src/test/parse-fail/removed-syntax-mode.rs
+++ b/src/test/ui/parser/removed-syntax-mode.rs
diff --git a/src/test/ui/parser/removed-syntax-mode.stderr b/src/test/ui/parser/removed-syntax-mode.stderr
new file mode 100644
index 00000000000..7a274553d57
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-mode.stderr
@@ -0,0 +1,8 @@
+error: expected pattern, found `+`
+  --> $DIR/removed-syntax-mode.rs:13:6
+   |
+LL | fn f(+x: isize) {} //~ ERROR expected pattern, found `+`
+   |      ^ expected pattern
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-mut-vec-expr.rs b/src/test/ui/parser/removed-syntax-mut-vec-expr.rs
index 7e5bd27b497..7e5bd27b497 100644
--- a/src/test/parse-fail/removed-syntax-mut-vec-expr.rs
+++ b/src/test/ui/parser/removed-syntax-mut-vec-expr.rs
diff --git a/src/test/ui/parser/removed-syntax-mut-vec-expr.stderr b/src/test/ui/parser/removed-syntax-mut-vec-expr.stderr
new file mode 100644
index 00000000000..253ecf41edd
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-mut-vec-expr.stderr
@@ -0,0 +1,8 @@
+error: expected expression, found keyword `mut`
+  --> $DIR/removed-syntax-mut-vec-expr.rs:14:14
+   |
+LL |     let v = [mut 1, 2, 3, 4]; //~ ERROR expected expression, found keyword `mut`
+   |              ^^^ expected expression
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-mut-vec-ty.rs b/src/test/ui/parser/removed-syntax-mut-vec-ty.rs
index 0cdf1981a23..0cdf1981a23 100644
--- a/src/test/parse-fail/removed-syntax-mut-vec-ty.rs
+++ b/src/test/ui/parser/removed-syntax-mut-vec-ty.rs
diff --git a/src/test/ui/parser/removed-syntax-mut-vec-ty.stderr b/src/test/ui/parser/removed-syntax-mut-vec-ty.stderr
new file mode 100644
index 00000000000..d6b47accb97
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-mut-vec-ty.stderr
@@ -0,0 +1,8 @@
+error: expected type, found keyword `mut`
+  --> $DIR/removed-syntax-mut-vec-ty.rs:13:11
+   |
+LL | type v = [mut isize]; //~ ERROR expected type, found keyword `mut`
+   |           ^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-ptr-lifetime.rs b/src/test/ui/parser/removed-syntax-ptr-lifetime.rs
index b91ab8730b3..b91ab8730b3 100644
--- a/src/test/parse-fail/removed-syntax-ptr-lifetime.rs
+++ b/src/test/ui/parser/removed-syntax-ptr-lifetime.rs
diff --git a/src/test/ui/parser/removed-syntax-ptr-lifetime.stderr b/src/test/ui/parser/removed-syntax-ptr-lifetime.stderr
new file mode 100644
index 00000000000..2538e5473ee
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-ptr-lifetime.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!`, `(`, `::`, `;`, or `<`, found `/`
+  --> $DIR/removed-syntax-ptr-lifetime.rs:13:22
+   |
+LL | type bptr = &lifetime/isize; //~ ERROR expected one of `!`, `(`, `::`, `;`, or `<`, found `/`
+   |                      ^ expected one of `!`, `(`, `::`, `;`, or `<` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-record.rs b/src/test/ui/parser/removed-syntax-record.rs
index fd6f99bdbf9..fd6f99bdbf9 100644
--- a/src/test/parse-fail/removed-syntax-record.rs
+++ b/src/test/ui/parser/removed-syntax-record.rs
diff --git a/src/test/ui/parser/removed-syntax-record.stderr b/src/test/ui/parser/removed-syntax-record.stderr
new file mode 100644
index 00000000000..99d4ef44f9a
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-record.stderr
@@ -0,0 +1,8 @@
+error: expected type, found `{`
+  --> $DIR/removed-syntax-record.rs:13:10
+   |
+LL | type t = { f: () }; //~ ERROR expected type, found `{`
+   |          ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-static-fn.rs b/src/test/ui/parser/removed-syntax-static-fn.rs
index 4c0cd3358dd..4c0cd3358dd 100644
--- a/src/test/parse-fail/removed-syntax-static-fn.rs
+++ b/src/test/ui/parser/removed-syntax-static-fn.rs
diff --git a/src/test/ui/parser/removed-syntax-static-fn.stderr b/src/test/ui/parser/removed-syntax-static-fn.stderr
new file mode 100644
index 00000000000..dd3b0e00101
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-static-fn.stderr
@@ -0,0 +1,10 @@
+error: expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, `unsafe`, or `}`, found `static`
+  --> $DIR/removed-syntax-static-fn.rs:17:5
+   |
+LL | impl S {
+   |         - expected one of 11 possible tokens here
+LL |     static fn f() {}
+   |     ^^^^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-uniq-mut-expr.rs b/src/test/ui/parser/removed-syntax-uniq-mut-expr.rs
index b16c77ab6b5..b16c77ab6b5 100644
--- a/src/test/parse-fail/removed-syntax-uniq-mut-expr.rs
+++ b/src/test/ui/parser/removed-syntax-uniq-mut-expr.rs
diff --git a/src/test/ui/parser/removed-syntax-uniq-mut-expr.stderr b/src/test/ui/parser/removed-syntax-uniq-mut-expr.stderr
new file mode 100644
index 00000000000..54e6a517343
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-uniq-mut-expr.stderr
@@ -0,0 +1,8 @@
+error: expected expression, found keyword `mut`
+  --> $DIR/removed-syntax-uniq-mut-expr.rs:14:21
+   |
+LL |     let a_box = box mut 42; //~ ERROR expected expression, found keyword `mut`
+   |                     ^^^ expected expression
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-uniq-mut-ty.rs b/src/test/ui/parser/removed-syntax-uniq-mut-ty.rs
index 8a47376179d..8a47376179d 100644
--- a/src/test/parse-fail/removed-syntax-uniq-mut-ty.rs
+++ b/src/test/ui/parser/removed-syntax-uniq-mut-ty.rs
diff --git a/src/test/ui/parser/removed-syntax-uniq-mut-ty.stderr b/src/test/ui/parser/removed-syntax-uniq-mut-ty.stderr
new file mode 100644
index 00000000000..e9660f3e1c2
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-uniq-mut-ty.stderr
@@ -0,0 +1,8 @@
+error: expected one of `>`, lifetime, or type, found `mut`
+  --> $DIR/removed-syntax-uniq-mut-ty.rs:13:20
+   |
+LL | type mut_box = Box<mut isize>; //~ ERROR expected one of `>`, lifetime, or type, found `mut`
+   |                    ^^^ expected one of `>`, lifetime, or type here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-with-1.rs b/src/test/ui/parser/removed-syntax-with-1.rs
index 156b172a944..156b172a944 100644
--- a/src/test/parse-fail/removed-syntax-with-1.rs
+++ b/src/test/ui/parser/removed-syntax-with-1.rs
diff --git a/src/test/ui/parser/removed-syntax-with-1.stderr b/src/test/ui/parser/removed-syntax-with-1.stderr
new file mode 100644
index 00000000000..37baf742ed8
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-with-1.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,`, `.`, `?`, `}`, or an operator, found `with`
+  --> $DIR/removed-syntax-with-1.rs:20:25
+   |
+LL |     let b = S { foo: () with a };
+   |                         ^^^^ expected one of `,`, `.`, `?`, `}`, or an operator here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/removed-syntax-with-2.rs b/src/test/ui/parser/removed-syntax-with-2.rs
index c4354c07604..c4354c07604 100644
--- a/src/test/parse-fail/removed-syntax-with-2.rs
+++ b/src/test/ui/parser/removed-syntax-with-2.rs
diff --git a/src/test/ui/parser/removed-syntax-with-2.stderr b/src/test/ui/parser/removed-syntax-with-2.stderr
new file mode 100644
index 00000000000..6999196c1b7
--- /dev/null
+++ b/src/test/ui/parser/removed-syntax-with-2.stderr
@@ -0,0 +1,8 @@
+error: expected one of `,` or `}`, found `a`
+  --> $DIR/removed-syntax-with-2.rs:20:31
+   |
+LL |     let b = S { foo: (), with a };
+   |                               ^ expected one of `,` or `}` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/require-parens-for-chained-comparison.rs b/src/test/ui/parser/require-parens-for-chained-comparison.rs
index 1ee6996ce9c..1ee6996ce9c 100644
--- a/src/test/parse-fail/require-parens-for-chained-comparison.rs
+++ b/src/test/ui/parser/require-parens-for-chained-comparison.rs
diff --git a/src/test/ui/parser/require-parens-for-chained-comparison.stderr b/src/test/ui/parser/require-parens-for-chained-comparison.stderr
new file mode 100644
index 00000000000..8facdab4285
--- /dev/null
+++ b/src/test/ui/parser/require-parens-for-chained-comparison.stderr
@@ -0,0 +1,23 @@
+error: chained comparison operators require parentheses
+  --> $DIR/require-parens-for-chained-comparison.rs:16:11
+   |
+LL |     false == false == false;
+   |           ^^^^^^^^^^^^^^^^^
+
+error: chained comparison operators require parentheses
+  --> $DIR/require-parens-for-chained-comparison.rs:19:11
+   |
+LL |     false == 0 < 2;
+   |           ^^^^^^^^
+
+error: chained comparison operators require parentheses
+  --> $DIR/require-parens-for-chained-comparison.rs:22:6
+   |
+LL |     f<X>();
+   |      ^^^^
+   |
+   = help: use `::<...>` instead of `<...>` if you meant to specify type arguments
+   = help: or use `(...)` if you meant to specify fn arguments
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/parse-fail/struct-field-numeric-shorthand.rs b/src/test/ui/parser/struct-field-numeric-shorthand.rs
index 49ba0d8bde6..49ba0d8bde6 100644
--- a/src/test/parse-fail/struct-field-numeric-shorthand.rs
+++ b/src/test/ui/parser/struct-field-numeric-shorthand.rs
diff --git a/src/test/ui/parser/struct-field-numeric-shorthand.stderr b/src/test/ui/parser/struct-field-numeric-shorthand.stderr
new file mode 100644
index 00000000000..e909a9ece60
--- /dev/null
+++ b/src/test/ui/parser/struct-field-numeric-shorthand.stderr
@@ -0,0 +1,10 @@
+error: expected identifier, found `0`
+  --> $DIR/struct-field-numeric-shorthand.rs:16:19
+   |
+LL |     let _ = Rgb { 0, 1, 2 }; //~ ERROR expected identifier, found `0`
+   |             ---   ^ expected identifier
+   |             |
+   |             while parsing this struct
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/struct-literal-in-for.rs b/src/test/ui/parser/struct-literal-in-for.rs
index 93098455560..93098455560 100644
--- a/src/test/parse-fail/struct-literal-in-for.rs
+++ b/src/test/ui/parser/struct-literal-in-for.rs
diff --git a/src/test/ui/parser/struct-literal-in-for.stderr b/src/test/ui/parser/struct-literal-in-for.stderr
new file mode 100644
index 00000000000..4a074eef889
--- /dev/null
+++ b/src/test/ui/parser/struct-literal-in-for.stderr
@@ -0,0 +1,14 @@
+error: expected type, found `3`
+  --> $DIR/struct-literal-in-for.rs:25:12
+   |
+LL |         x: 3    //~ ERROR expected type, found `3`
+   |            ^ expecting a type here because of type ascription
+
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+  --> $DIR/struct-literal-in-for.rs:26:12
+   |
+LL |     }.hi() { //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+   |            ^ expected one of `.`, `;`, `?`, `}`, or an operator here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/struct-literal-in-if.rs b/src/test/ui/parser/struct-literal-in-if.rs
index db6a360a567..db6a360a567 100644
--- a/src/test/parse-fail/struct-literal-in-if.rs
+++ b/src/test/ui/parser/struct-literal-in-if.rs
diff --git a/src/test/ui/parser/struct-literal-in-if.stderr b/src/test/ui/parser/struct-literal-in-if.stderr
new file mode 100644
index 00000000000..02659ffb5aa
--- /dev/null
+++ b/src/test/ui/parser/struct-literal-in-if.stderr
@@ -0,0 +1,14 @@
+error: expected type, found `3`
+  --> $DIR/struct-literal-in-if.rs:25:12
+   |
+LL |         x: 3    //~ ERROR expected type, found `3`
+   |            ^ expecting a type here because of type ascription
+
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+  --> $DIR/struct-literal-in-if.rs:26:12
+   |
+LL |     }.hi() { //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+   |            ^ expected one of `.`, `;`, `?`, `}`, or an operator here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/struct-literal-in-match-discriminant.rs b/src/test/ui/parser/struct-literal-in-match-discriminant.rs
index 7038cc798c4..7038cc798c4 100644
--- a/src/test/parse-fail/struct-literal-in-match-discriminant.rs
+++ b/src/test/ui/parser/struct-literal-in-match-discriminant.rs
diff --git a/src/test/ui/parser/struct-literal-in-match-discriminant.stderr b/src/test/ui/parser/struct-literal-in-match-discriminant.stderr
new file mode 100644
index 00000000000..9b8eecd389e
--- /dev/null
+++ b/src/test/ui/parser/struct-literal-in-match-discriminant.stderr
@@ -0,0 +1,14 @@
+error: expected one of `=>`, `@`, `if`, or `|`, found `:`
+  --> $DIR/struct-literal-in-match-discriminant.rs:19:10
+   |
+LL |         x: 3    //~ ERROR expected one of `=>`, `@`, `if`, or `|`, found `:`
+   |          ^ expected one of `=>`, `@`, `if`, or `|` here
+
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `=>`
+  --> $DIR/struct-literal-in-match-discriminant.rs:23:11
+   |
+LL |         } => {} //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `=>`
+   |           ^^ expected one of `.`, `;`, `?`, `}`, or an operator here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/struct-literal-in-while.rs b/src/test/ui/parser/struct-literal-in-while.rs
index 75e4eb3de07..75e4eb3de07 100644
--- a/src/test/parse-fail/struct-literal-in-while.rs
+++ b/src/test/ui/parser/struct-literal-in-while.rs
diff --git a/src/test/ui/parser/struct-literal-in-while.stderr b/src/test/ui/parser/struct-literal-in-while.stderr
new file mode 100644
index 00000000000..6ecc14cd081
--- /dev/null
+++ b/src/test/ui/parser/struct-literal-in-while.stderr
@@ -0,0 +1,14 @@
+error: expected type, found `3`
+  --> $DIR/struct-literal-in-while.rs:25:12
+   |
+LL |         x: 3    //~ ERROR expected type, found `3`
+   |            ^ expecting a type here because of type ascription
+
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+  --> $DIR/struct-literal-in-while.rs:26:12
+   |
+LL |     }.hi() { //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+   |            ^ expected one of `.`, `;`, `?`, `}`, or an operator here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/struct-literal-restrictions-in-lamda.rs b/src/test/ui/parser/struct-literal-restrictions-in-lamda.rs
index 6b7a26556f4..6b7a26556f4 100644
--- a/src/test/parse-fail/struct-literal-restrictions-in-lamda.rs
+++ b/src/test/ui/parser/struct-literal-restrictions-in-lamda.rs
diff --git a/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr b/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr
new file mode 100644
index 00000000000..1341a2b241d
--- /dev/null
+++ b/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr
@@ -0,0 +1,14 @@
+error: expected type, found `3`
+  --> $DIR/struct-literal-restrictions-in-lamda.rs:25:12
+   |
+LL |         x: 3    //~ ERROR expected type, found `3`
+   |            ^ expecting a type here because of type ascription
+
+error: expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+  --> $DIR/struct-literal-restrictions-in-lamda.rs:26:12
+   |
+LL |     }.hi() { //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `{`
+   |            ^ expected one of `.`, `;`, `?`, `}`, or an operator here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/tag-variant-disr-non-nullary.rs b/src/test/ui/parser/tag-variant-disr-non-nullary.rs
index 2d86589285c..2d86589285c 100644
--- a/src/test/parse-fail/tag-variant-disr-non-nullary.rs
+++ b/src/test/ui/parser/tag-variant-disr-non-nullary.rs
diff --git a/src/test/ui/parser/tag-variant-disr-non-nullary.stderr b/src/test/ui/parser/tag-variant-disr-non-nullary.stderr
new file mode 100644
index 00000000000..990ddca05d9
--- /dev/null
+++ b/src/test/ui/parser/tag-variant-disr-non-nullary.stderr
@@ -0,0 +1,8 @@
+error: discriminator values can only be used with a field-less enum
+  --> $DIR/tag-variant-disr-non-nullary.rs:20:13
+   |
+LL |     white = 0xffffff,
+   |             ^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trailing-carriage-return-in-string.rs b/src/test/ui/parser/trailing-carriage-return-in-string.rs
index dd763dc64c0..dd763dc64c0 100644
--- a/src/test/parse-fail/trailing-carriage-return-in-string.rs
+++ b/src/test/ui/parser/trailing-carriage-return-in-string.rs
diff --git a/src/test/ui/parser/trailing-carriage-return-in-string.stderr b/src/test/ui/parser/trailing-carriage-return-in-string.stderr
new file mode 100644
index 00000000000..4e6d38dd7af
--- /dev/null
+++ b/src/test/ui/parser/trailing-carriage-return-in-string.stderr
@@ -0,0 +1,14 @@
+error: unknown character escape: /r
+  --> $DIR/trailing-carriage-return-in-string.rs:21:25
+   |
+LL |     let bad = "This is /
 a test";
+   |                         ^
+   |
+help: this is an isolated carriage return; consider checking your editor and version control settings
+  --> $DIR/trailing-carriage-return-in-string.rs:21:25
+   |
+LL |     let bad = "This is /
 a test";
+   |                         ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-bounds-not-on-impl.rs b/src/test/ui/parser/trait-bounds-not-on-impl.rs
index 7cd2774fe39..7cd2774fe39 100644
--- a/src/test/parse-fail/trait-bounds-not-on-impl.rs
+++ b/src/test/ui/parser/trait-bounds-not-on-impl.rs
diff --git a/src/test/ui/parser/trait-bounds-not-on-impl.stderr b/src/test/ui/parser/trait-bounds-not-on-impl.stderr
new file mode 100644
index 00000000000..68bb090e45f
--- /dev/null
+++ b/src/test/ui/parser/trait-bounds-not-on-impl.stderr
@@ -0,0 +1,8 @@
+error: expected a trait, found type
+  --> $DIR/trait-bounds-not-on-impl.rs:18:6
+   |
+LL | impl Foo + Owned for Bar { //~ ERROR expected a trait, found type
+   |      ^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-non-item-macros.rs b/src/test/ui/parser/trait-non-item-macros.rs
index 9f94d5d41fd..9f94d5d41fd 100644
--- a/src/test/parse-fail/trait-non-item-macros.rs
+++ b/src/test/ui/parser/trait-non-item-macros.rs
diff --git a/src/test/ui/parser/trait-non-item-macros.stderr b/src/test/ui/parser/trait-non-item-macros.stderr
new file mode 100644
index 00000000000..2f4fdbfbc2b
--- /dev/null
+++ b/src/test/ui/parser/trait-non-item-macros.stderr
@@ -0,0 +1,11 @@
+error: expected one of `async`, `const`, `extern`, `fn`, `type`, or `unsafe`, found `2`
+  --> $DIR/trait-non-item-macros.rs:12:19
+   |
+LL |     ($a:expr) => ($a)
+   |                   ^^ unexpected token
+...
+LL |     bah!(2);
+   |     -------- in this macro invocation
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-object-bad-parens.rs b/src/test/ui/parser/trait-object-bad-parens.rs
index 25e9c3071d6..25e9c3071d6 100644
--- a/src/test/parse-fail/trait-object-bad-parens.rs
+++ b/src/test/ui/parser/trait-object-bad-parens.rs
diff --git a/src/test/ui/parser/trait-object-bad-parens.stderr b/src/test/ui/parser/trait-object-bad-parens.stderr
new file mode 100644
index 00000000000..a1c483c3eca
--- /dev/null
+++ b/src/test/ui/parser/trait-object-bad-parens.stderr
@@ -0,0 +1,27 @@
+error[E0178]: expected a path on the left-hand side of `+`, not `((Copy))`
+  --> $DIR/trait-object-bad-parens.rs:14:16
+   |
+LL |     let _: Box<((Copy)) + Copy>;
+   |                ^^^^^^^^^^^^^^^ expected a path
+
+error[E0178]: expected a path on the left-hand side of `+`, not `(Copy + Copy)`
+  --> $DIR/trait-object-bad-parens.rs:16:16
+   |
+LL |     let _: Box<(Copy + Copy) + Copy>;
+   |                ^^^^^^^^^^^^^^^^^^^^ expected a path
+
+error[E0178]: expected a path on the left-hand side of `+`, not `(Copy)`
+  --> $DIR/trait-object-bad-parens.rs:18:16
+   |
+LL |     let _: Box<(Copy +) + Copy>;
+   |                ^^^^^^^^^^^^^^^ expected a path
+
+error[E0178]: expected a path on the left-hand side of `+`, not `(dyn Copy)`
+  --> $DIR/trait-object-bad-parens.rs:20:16
+   |
+LL |     let _: Box<(dyn Copy) + Copy>;
+   |                ^^^^^^^^^^^^^^^^^ expected a path
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0178`.
diff --git a/src/test/parse-fail/trait-object-lifetime-parens.rs b/src/test/ui/parser/trait-object-lifetime-parens.rs
index 6be62d966eb..6be62d966eb 100644
--- a/src/test/parse-fail/trait-object-lifetime-parens.rs
+++ b/src/test/ui/parser/trait-object-lifetime-parens.rs
diff --git a/src/test/ui/parser/trait-object-lifetime-parens.stderr b/src/test/ui/parser/trait-object-lifetime-parens.stderr
new file mode 100644
index 00000000000..7c7921bd38d
--- /dev/null
+++ b/src/test/ui/parser/trait-object-lifetime-parens.stderr
@@ -0,0 +1,22 @@
+error: parenthesized lifetime bounds are not supported
+  --> $DIR/trait-object-lifetime-parens.rs:13:19
+   |
+LL | fn f<T: Copy + ('a)>() {} //~ ERROR parenthesized lifetime bounds are not supported
+   |                   ^
+
+error: parenthesized lifetime bounds are not supported
+  --> $DIR/trait-object-lifetime-parens.rs:16:26
+   |
+LL |     let _: Box<Copy + ('a)>; //~ ERROR parenthesized lifetime bounds are not supported
+   |                          ^
+
+error: expected type, found `'a`
+  --> $DIR/trait-object-lifetime-parens.rs:17:17
+   |
+LL |     let _: Box<('a) + Copy>; //~ ERROR expected type, found `'a`
+   |         -       ^^
+   |         |
+   |         while parsing the type for `_`
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/parse-fail/trait-object-macro-matcher.rs b/src/test/ui/parser/trait-object-macro-matcher.rs
index 3a5bce509f1..3a5bce509f1 100644
--- a/src/test/parse-fail/trait-object-macro-matcher.rs
+++ b/src/test/ui/parser/trait-object-macro-matcher.rs
diff --git a/src/test/ui/parser/trait-object-macro-matcher.stderr b/src/test/ui/parser/trait-object-macro-matcher.stderr
new file mode 100644
index 00000000000..ab536dc5854
--- /dev/null
+++ b/src/test/ui/parser/trait-object-macro-matcher.stderr
@@ -0,0 +1,8 @@
+error: expected type, found `'static`
+  --> $DIR/trait-object-macro-matcher.rs:19:8
+   |
+LL |     m!('static); //~ ERROR expected type, found `'static`
+   |        ^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-object-polytrait-priority.rs b/src/test/ui/parser/trait-object-polytrait-priority.rs
index b5fc06ddaac..b5fc06ddaac 100644
--- a/src/test/parse-fail/trait-object-polytrait-priority.rs
+++ b/src/test/ui/parser/trait-object-polytrait-priority.rs
diff --git a/src/test/ui/parser/trait-object-polytrait-priority.stderr b/src/test/ui/parser/trait-object-polytrait-priority.stderr
new file mode 100644
index 00000000000..2aac799ac50
--- /dev/null
+++ b/src/test/ui/parser/trait-object-polytrait-priority.stderr
@@ -0,0 +1,9 @@
+error[E0178]: expected a path on the left-hand side of `+`, not `&for<'a> Trait<'a>`
+  --> $DIR/trait-object-polytrait-priority.rs:14:12
+   |
+LL |     let _: &for<'a> Trait<'a> + 'static;
+   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try adding parentheses: `&(for<'a> Trait<'a> + 'static)`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0178`.
diff --git a/src/test/parse-fail/trait-object-trait-parens.rs b/src/test/ui/parser/trait-object-trait-parens.rs
index dc44f4f3fb1..dc44f4f3fb1 100644
--- a/src/test/parse-fail/trait-object-trait-parens.rs
+++ b/src/test/ui/parser/trait-object-trait-parens.rs
diff --git a/src/test/ui/parser/trait-object-trait-parens.stderr b/src/test/ui/parser/trait-object-trait-parens.stderr
new file mode 100644
index 00000000000..27f13d77876
--- /dev/null
+++ b/src/test/ui/parser/trait-object-trait-parens.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!` or `::`, found `<eof>`
+  --> $DIR/trait-object-trait-parens.rs:21:1
+   |
+LL | FAIL //~ ERROR
+   | ^^^^ expected one of `!` or `::` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-plusequal-splitting.rs b/src/test/ui/parser/trait-plusequal-splitting.rs
index cbb955fe61d..cbb955fe61d 100644
--- a/src/test/parse-fail/trait-plusequal-splitting.rs
+++ b/src/test/ui/parser/trait-plusequal-splitting.rs
diff --git a/src/test/ui/parser/trait-plusequal-splitting.stderr b/src/test/ui/parser/trait-plusequal-splitting.stderr
new file mode 100644
index 00000000000..266473ed222
--- /dev/null
+++ b/src/test/ui/parser/trait-plusequal-splitting.stderr
@@ -0,0 +1,8 @@
+error: expected one of `!` or `::`, found `<eof>`
+  --> $DIR/trait-plusequal-splitting.rs:20:1
+   |
+LL | FAIL //~ ERROR
+   | ^^^^ expected one of `!` or `::` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-pub-assoc-const.rs b/src/test/ui/parser/trait-pub-assoc-const.rs
index cce6b5c4cbf..cce6b5c4cbf 100644
--- a/src/test/parse-fail/trait-pub-assoc-const.rs
+++ b/src/test/ui/parser/trait-pub-assoc-const.rs
diff --git a/src/test/ui/parser/trait-pub-assoc-const.stderr b/src/test/ui/parser/trait-pub-assoc-const.stderr
new file mode 100644
index 00000000000..44d6fa9ca66
--- /dev/null
+++ b/src/test/ui/parser/trait-pub-assoc-const.stderr
@@ -0,0 +1,10 @@
+error: expected one of `async`, `const`, `extern`, `fn`, `type`, `unsafe`, or `}`, found `pub`
+  --> $DIR/trait-pub-assoc-const.rs:12:5
+   |
+LL | trait Foo {
+   |            - expected one of 7 possible tokens here
+LL |     pub const Foo: u32;
+   |     ^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-pub-assoc-ty.rs b/src/test/ui/parser/trait-pub-assoc-ty.rs
index d6a4e5e021d..d6a4e5e021d 100644
--- a/src/test/parse-fail/trait-pub-assoc-ty.rs
+++ b/src/test/ui/parser/trait-pub-assoc-ty.rs
diff --git a/src/test/ui/parser/trait-pub-assoc-ty.stderr b/src/test/ui/parser/trait-pub-assoc-ty.stderr
new file mode 100644
index 00000000000..c8ba1cc9d14
--- /dev/null
+++ b/src/test/ui/parser/trait-pub-assoc-ty.stderr
@@ -0,0 +1,10 @@
+error: expected one of `async`, `const`, `extern`, `fn`, `type`, `unsafe`, or `}`, found `pub`
+  --> $DIR/trait-pub-assoc-ty.rs:12:5
+   |
+LL | trait Foo {
+   |            - expected one of 7 possible tokens here
+LL |     pub type Foo;
+   |     ^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/trait-pub-method.rs b/src/test/ui/parser/trait-pub-method.rs
index 286cb4dbff7..286cb4dbff7 100644
--- a/src/test/parse-fail/trait-pub-method.rs
+++ b/src/test/ui/parser/trait-pub-method.rs
diff --git a/src/test/ui/parser/trait-pub-method.stderr b/src/test/ui/parser/trait-pub-method.stderr
new file mode 100644
index 00000000000..125a25fb8b5
--- /dev/null
+++ b/src/test/ui/parser/trait-pub-method.stderr
@@ -0,0 +1,10 @@
+error: expected one of `async`, `const`, `extern`, `fn`, `type`, `unsafe`, or `}`, found `pub`
+  --> $DIR/trait-pub-method.rs:12:5
+   |
+LL | trait Foo {
+   |            - expected one of 7 possible tokens here
+LL |     pub fn foo();
+   |     ^^^ unexpected token
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/type-parameters-in-field-exprs.rs b/src/test/ui/parser/type-parameters-in-field-exprs.rs
index cb018ff1bfa..cb018ff1bfa 100644
--- a/src/test/parse-fail/type-parameters-in-field-exprs.rs
+++ b/src/test/ui/parser/type-parameters-in-field-exprs.rs
diff --git a/src/test/ui/parser/type-parameters-in-field-exprs.stderr b/src/test/ui/parser/type-parameters-in-field-exprs.stderr
new file mode 100644
index 00000000000..f8b63b49be3
--- /dev/null
+++ b/src/test/ui/parser/type-parameters-in-field-exprs.stderr
@@ -0,0 +1,20 @@
+error: field expressions may not have generic arguments
+  --> $DIR/type-parameters-in-field-exprs.rs:23:8
+   |
+LL |     f.x::<isize>;
+   |        ^^^^^^^^^
+
+error: field expressions may not have generic arguments
+  --> $DIR/type-parameters-in-field-exprs.rs:25:8
+   |
+LL |     f.x::<>;
+   |        ^^^^
+
+error: field expressions may not have generic arguments
+  --> $DIR/type-parameters-in-field-exprs.rs:27:8
+   |
+LL |     f.x::();
+   |        ^^^^
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/parse-fail/unbalanced-doublequote.rs b/src/test/ui/parser/unbalanced-doublequote.rs
index 8d10f64504a..8d10f64504a 100644
--- a/src/test/parse-fail/unbalanced-doublequote.rs
+++ b/src/test/ui/parser/unbalanced-doublequote.rs
diff --git a/src/test/ui/parser/unbalanced-doublequote.stderr b/src/test/ui/parser/unbalanced-doublequote.stderr
new file mode 100644
index 00000000000..e12eceeb24b
--- /dev/null
+++ b/src/test/ui/parser/unbalanced-doublequote.stderr
@@ -0,0 +1,9 @@
+error: unterminated double quote string
+  --> $DIR/unbalanced-doublequote.rs:18:5
+   |
+LL | /     "
+LL | | }
+   | |__^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/underscore-suffix-for-float.rs b/src/test/ui/parser/underscore-suffix-for-float.rs
index 8327217e6f2..8327217e6f2 100644
--- a/src/test/parse-fail/underscore-suffix-for-float.rs
+++ b/src/test/ui/parser/underscore-suffix-for-float.rs
diff --git a/src/test/ui/parser/underscore-suffix-for-float.stderr b/src/test/ui/parser/underscore-suffix-for-float.stderr
new file mode 100644
index 00000000000..f59c7612c6f
--- /dev/null
+++ b/src/test/ui/parser/underscore-suffix-for-float.stderr
@@ -0,0 +1,15 @@
+error: expected identifier, found reserved identifier `_`
+  --> $DIR/underscore-suffix-for-float.rs:12:16
+   |
+LL |     let a = 42._; //~ ERROR expected identifier, found reserved identifier `_`
+   |                ^ expected identifier, found reserved identifier
+
+error[E0610]: `{integer}` is a primitive type and therefore doesn't have fields
+  --> $DIR/underscore-suffix-for-float.rs:12:16
+   |
+LL |     let a = 42._; //~ ERROR expected identifier, found reserved identifier `_`
+   |                ^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0610`.
diff --git a/src/test/parse-fail/underscore-suffix-for-string.rs b/src/test/ui/parser/underscore-suffix-for-string.rs
index 05de5f8e194..05de5f8e194 100644
--- a/src/test/parse-fail/underscore-suffix-for-string.rs
+++ b/src/test/ui/parser/underscore-suffix-for-string.rs
diff --git a/src/test/ui/parser/underscore-suffix-for-string.stderr b/src/test/ui/parser/underscore-suffix-for-string.stderr
new file mode 100644
index 00000000000..b20fd299021
--- /dev/null
+++ b/src/test/ui/parser/underscore-suffix-for-string.stderr
@@ -0,0 +1,17 @@
+warning: underscore literal suffix is not allowed
+  --> $DIR/underscore-suffix-for-string.rs:12:18
+   |
+LL |     let _ = "Foo"_;
+   |                  ^
+   |
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
+   = note: for more information, see issue #42326 <https://github.com/rust-lang/rust/issues/42326>
+
+error: expected one of `!` or `::`, found `<eof>`
+  --> $DIR/underscore-suffix-for-string.rs:18:1
+   |
+LL | FAIL
+   | ^^^^ expected one of `!` or `::` here
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/unicode-chars.rs b/src/test/ui/parser/unicode-chars.rs
index f590a7f2aa2..f590a7f2aa2 100644
--- a/src/test/parse-fail/unicode-chars.rs
+++ b/src/test/ui/parser/unicode-chars.rs
diff --git a/src/test/ui/parser/unicode-chars.stderr b/src/test/ui/parser/unicode-chars.stderr
new file mode 100644
index 00000000000..5c30a5040f0
--- /dev/null
+++ b/src/test/ui/parser/unicode-chars.stderr
@@ -0,0 +1,12 @@
+error: unknown start of token: /u{37e}
+  --> $DIR/unicode-chars.rs:14:14
+   |
+LL |     let y = 0;
+   |              ^
+help: Unicode character ';' (Greek Question Mark) looks like ';' (Semicolon), but it is not
+   |
+LL |     let y = 0;
+   |              ^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/unsized.rs b/src/test/ui/parser/unsized.rs
index 1bcb5208d76..1bcb5208d76 100644
--- a/src/test/parse-fail/unsized.rs
+++ b/src/test/ui/parser/unsized.rs
diff --git a/src/test/ui/parser/unsized.stderr b/src/test/ui/parser/unsized.stderr
new file mode 100644
index 00000000000..89de7ee8758
--- /dev/null
+++ b/src/test/ui/parser/unsized.stderr
@@ -0,0 +1,8 @@
+error: expected `where`, `{`, `(`, or `;` after struct name, found `for`
+  --> $DIR/unsized.rs:15:11
+   |
+LL | struct S1 for type; //~ ERROR expected `where`, `{`, `(`, or `;` after struct name, found `for`
+   |           ^^^ expected `where`, `{`, `(`, or `;` after struct name
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/unsized2.rs b/src/test/ui/parser/unsized2.rs
index f3af8740be9..f3af8740be9 100644
--- a/src/test/parse-fail/unsized2.rs
+++ b/src/test/ui/parser/unsized2.rs
diff --git a/src/test/ui/parser/unsized2.stderr b/src/test/ui/parser/unsized2.stderr
new file mode 100644
index 00000000000..323b8fd9ea8
--- /dev/null
+++ b/src/test/ui/parser/unsized2.stderr
@@ -0,0 +1,8 @@
+error: expected expression, found keyword `type`
+  --> $DIR/unsized2.rs:18:7
+   |
+LL |     f<type>(); //~ ERROR expected expression, found keyword `type`
+   |       ^^^^ expected expression
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/use-as-where-use-ends-with-mod-sep.rs b/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.rs
index 9e16e29ba50..9e16e29ba50 100644
--- a/src/test/parse-fail/use-as-where-use-ends-with-mod-sep.rs
+++ b/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.rs
diff --git a/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr b/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr
new file mode 100644
index 00000000000..e7452f403b2
--- /dev/null
+++ b/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr
@@ -0,0 +1,14 @@
+error: expected identifier, found keyword `as`
+  --> $DIR/use-as-where-use-ends-with-mod-sep.rs:13:16
+   |
+LL | use std::any:: as foo; //~ ERROR expected identifier, found keyword `as`
+   |                ^^ expected identifier, found keyword
+
+error: expected one of `::`, `;`, or `as`, found `foo`
+  --> $DIR/use-as-where-use-ends-with-mod-sep.rs:13:19
+   |
+LL | use std::any:: as foo; //~ ERROR expected identifier, found keyword `as`
+   |                   ^^^ expected one of `::`, `;`, or `as` here
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/parse-fail/use-ends-with-mod-sep.rs b/src/test/ui/parser/use-ends-with-mod-sep.rs
index e6a10d43e29..e6a10d43e29 100644
--- a/src/test/parse-fail/use-ends-with-mod-sep.rs
+++ b/src/test/ui/parser/use-ends-with-mod-sep.rs
diff --git a/src/test/ui/parser/use-ends-with-mod-sep.stderr b/src/test/ui/parser/use-ends-with-mod-sep.stderr
new file mode 100644
index 00000000000..c463f746a58
--- /dev/null
+++ b/src/test/ui/parser/use-ends-with-mod-sep.stderr
@@ -0,0 +1,8 @@
+error: expected identifier, found `;`
+  --> $DIR/use-ends-with-mod-sep.rs:13:15
+   |
+LL | use std::any::; //~ ERROR expected identifier, found `;`
+   |               ^ expected identifier
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/variadic-ffi-3.rs b/src/test/ui/parser/variadic-ffi-3.rs
index d202fa33cc1..d202fa33cc1 100644
--- a/src/test/parse-fail/variadic-ffi-3.rs
+++ b/src/test/ui/parser/variadic-ffi-3.rs
diff --git a/src/test/ui/parser/variadic-ffi-3.stderr b/src/test/ui/parser/variadic-ffi-3.stderr
new file mode 100644
index 00000000000..93f19253f00
--- /dev/null
+++ b/src/test/ui/parser/variadic-ffi-3.stderr
@@ -0,0 +1,8 @@
+error: only foreign functions are allowed to be variadic
+  --> $DIR/variadic-ffi-3.rs:13:18
+   |
+LL | fn foo(x: isize, ...) {
+   |                  ^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/variadic-ffi-4.rs b/src/test/ui/parser/variadic-ffi-4.rs
index ef9d4558f68..ef9d4558f68 100644
--- a/src/test/parse-fail/variadic-ffi-4.rs
+++ b/src/test/ui/parser/variadic-ffi-4.rs
diff --git a/src/test/ui/parser/variadic-ffi-4.stderr b/src/test/ui/parser/variadic-ffi-4.stderr
new file mode 100644
index 00000000000..228c0d6ef14
--- /dev/null
+++ b/src/test/ui/parser/variadic-ffi-4.stderr
@@ -0,0 +1,8 @@
+error: only foreign functions are allowed to be variadic
+  --> $DIR/variadic-ffi-4.rs:13:29
+   |
+LL | extern "C" fn foo(x: isize, ...) {
+   |                             ^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/virtual-structs.rs b/src/test/ui/parser/virtual-structs.rs
index f34eddc93c5..f34eddc93c5 100644
--- a/src/test/parse-fail/virtual-structs.rs
+++ b/src/test/ui/parser/virtual-structs.rs
diff --git a/src/test/ui/parser/virtual-structs.stderr b/src/test/ui/parser/virtual-structs.stderr
new file mode 100644
index 00000000000..6af9922a698
--- /dev/null
+++ b/src/test/ui/parser/virtual-structs.stderr
@@ -0,0 +1,8 @@
+error: expected item, found `virtual`
+  --> $DIR/virtual-structs.rs:15:1
+   |
+LL | virtual struct SuperStruct { //~ ERROR expected item, found `virtual`
+   | ^^^^^^^ expected item
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/where-clauses-no-bounds-or-predicates.rs b/src/test/ui/parser/where-clauses-no-bounds-or-predicates.rs
index cf67b518fff..cf67b518fff 100644
--- a/src/test/parse-fail/where-clauses-no-bounds-or-predicates.rs
+++ b/src/test/ui/parser/where-clauses-no-bounds-or-predicates.rs
diff --git a/src/test/ui/parser/where-clauses-no-bounds-or-predicates.stderr b/src/test/ui/parser/where-clauses-no-bounds-or-predicates.stderr
new file mode 100644
index 00000000000..1dda2d3e7fd
--- /dev/null
+++ b/src/test/ui/parser/where-clauses-no-bounds-or-predicates.stderr
@@ -0,0 +1,8 @@
+error: expected `:`, found `{`
+  --> $DIR/where-clauses-no-bounds-or-predicates.rs:23:23
+   |
+LL | fn foo<'a>() where 'a {}
+   |                       ^ expected `:`
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/where_with_bound.rs b/src/test/ui/parser/where_with_bound.rs
index 2948619ccd0..2948619ccd0 100644
--- a/src/test/parse-fail/where_with_bound.rs
+++ b/src/test/ui/parser/where_with_bound.rs
diff --git a/src/test/ui/parser/where_with_bound.stderr b/src/test/ui/parser/where_with_bound.stderr
new file mode 100644
index 00000000000..7cf16fbcef4
--- /dev/null
+++ b/src/test/ui/parser/where_with_bound.stderr
@@ -0,0 +1,8 @@
+error: generic parameters on `where` clauses are reserved for future use
+  --> $DIR/where_with_bound.rs:13:19
+   |
+LL | fn foo<T>() where <T>::Item: ToString, T: Iterator { }
+   |                   ^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/parse-fail/wrong-escape-of-curly-braces.rs b/src/test/ui/parser/wrong-escape-of-curly-braces.rs
index d86bf726cbd..d86bf726cbd 100644
--- a/src/test/parse-fail/wrong-escape-of-curly-braces.rs
+++ b/src/test/ui/parser/wrong-escape-of-curly-braces.rs
diff --git a/src/test/ui/parser/wrong-escape-of-curly-braces.stderr b/src/test/ui/parser/wrong-escape-of-curly-braces.stderr
new file mode 100644
index 00000000000..6c3e26175be
--- /dev/null
+++ b/src/test/ui/parser/wrong-escape-of-curly-braces.stderr
@@ -0,0 +1,31 @@
+error: unknown character escape: {
+  --> $DIR/wrong-escape-of-curly-braces.rs:13:17
+   |
+LL |     let bad = "/{it is wrong/}";
+   |                 ^
+   |
+help: if used in a formatting string, curly braces are escaped with `{{` and `}}`
+  --> $DIR/wrong-escape-of-curly-braces.rs:13:17
+   |
+LL |     let bad = "/{it is wrong/}";
+   |                 ^
+
+error: unknown character escape: }
+  --> $DIR/wrong-escape-of-curly-braces.rs:13:30
+   |
+LL |     let bad = "/{it is wrong/}";
+   |                              ^
+   |
+help: if used in a formatting string, curly braces are escaped with `{{` and `}}`
+  --> $DIR/wrong-escape-of-curly-braces.rs:13:30
+   |
+LL |     let bad = "/{it is wrong/}";
+   |                              ^
+
+error[E0601]: `main` function not found in crate `wrong_escape_of_curly_braces`
+   |
+   = note: consider adding a `main` function to `$DIR/wrong-escape-of-curly-braces.rs`
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0601`.