about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-12-09 18:49:12 +0000
committerbors <bors@rust-lang.org>2018-12-09 18:49:12 +0000
commitb755501043d5b27b39f94bcadd57c8d5dedfd6ba (patch)
tree8271a6256fe7e9b9be924fbb96c8756e202b4ba9
parent850fc6a4791b3b0ab668f9fb67c35dddd838b01f (diff)
parent44fe5860607243da202dc97c167c9786d84b0a8d (diff)
downloadrust-b755501043d5b27b39f94bcadd57c8d5dedfd6ba.tar.gz
rust-b755501043d5b27b39f94bcadd57c8d5dedfd6ba.zip
Auto merge of #56444 - petrochenkov:uifull, r=davidtwco
Move compile-fail-fulldeps tests to UI

cc https://github.com/rust-lang/rust/issues/53353

r? @davidtwco
-rw-r--r--src/bootstrap/builder.rs1
-rw-r--r--src/bootstrap/test.rs6
-rw-r--r--src/test/compile-fail-fulldeps/auxiliary/lint_group_plugin_test.rs51
-rw-r--r--src/test/compile-fail-fulldeps/auxiliary/lint_plugin_test.rs48
-rw-r--r--src/test/compile-fail-fulldeps/auxiliary/macro_reexport_1.rs15
-rw-r--r--src/test/compile-fail/proc-macro/auxiliary/derive-clona.rs23
-rw-r--r--src/test/compile-fail/proc-macro/auxiliary/derive-foo.rs23
-rw-r--r--src/test/ui-fulldeps/auxiliary/attr_plugin_test.rs (renamed from src/test/compile-fail-fulldeps/auxiliary/attr_plugin_test.rs)0
-rw-r--r--src/test/ui-fulldeps/auxiliary/lint_for_crate.rs (renamed from src/test/compile-fail-fulldeps/auxiliary/lint_for_crate.rs)0
-rw-r--r--src/test/ui-fulldeps/auxiliary/macro_crate_test.rs (renamed from src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs)0
-rw-r--r--src/test/ui-fulldeps/auxiliary/rlib_crate_test.rs (renamed from src/test/compile-fail-fulldeps/auxiliary/rlib_crate_test.rs)0
-rw-r--r--src/test/ui-fulldeps/dropck_tarena_cycle_checked.rs (renamed from src/test/compile-fail-fulldeps/dropck_tarena_cycle_checked.rs)0
-rw-r--r--src/test/ui-fulldeps/dropck_tarena_cycle_checked.stderr13
-rw-r--r--src/test/ui-fulldeps/dropck_tarena_unsound_drop.rs (renamed from src/test/compile-fail-fulldeps/dropck_tarena_unsound_drop.rs)0
-rw-r--r--src/test/ui-fulldeps/dropck_tarena_unsound_drop.stderr13
-rw-r--r--src/test/ui-fulldeps/gated-plugin.rs (renamed from src/test/compile-fail-fulldeps/gated-plugin.rs)0
-rw-r--r--src/test/ui-fulldeps/gated-plugin.stderr11
-rw-r--r--src/test/ui-fulldeps/gated-quote.rs (renamed from src/test/compile-fail-fulldeps/gated-quote.rs)0
-rw-r--r--src/test/ui-fulldeps/gated-quote.stderr80
-rw-r--r--src/test/ui-fulldeps/issue-15778-fail.rs (renamed from src/test/compile-fail-fulldeps/issue-15778-fail.rs)0
-rw-r--r--src/test/ui-fulldeps/issue-15778-fail.stderr13
-rw-r--r--src/test/ui-fulldeps/issue-48941.rs (renamed from src/test/compile-fail-fulldeps/issue-48941.rs)0
-rw-r--r--src/test/ui-fulldeps/issue-48941.stderr14
-rw-r--r--src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.rs (renamed from src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs)0
-rw-r--r--src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr18
-rw-r--r--src/test/ui-fulldeps/lint-plugin-deny-attr.rs (renamed from src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs)0
-rw-r--r--src/test/ui-fulldeps/lint-plugin-deny-attr.stderr14
-rw-r--r--src/test/ui-fulldeps/lint-plugin-deny-cmdline.rs (renamed from src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs)0
-rw-r--r--src/test/ui-fulldeps/lint-plugin-deny-cmdline.stderr10
-rw-r--r--src/test/ui-fulldeps/lint-plugin-forbid-cmdline.rs (renamed from src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs)0
-rw-r--r--src/test/ui-fulldeps/lint-plugin-forbid-cmdline.stderr19
-rw-r--r--src/test/ui-fulldeps/macro-crate-doesnt-resolve.rs (renamed from src/test/compile-fail-fulldeps/macro-crate-doesnt-resolve.rs)0
-rw-r--r--src/test/ui-fulldeps/macro-crate-doesnt-resolve.stderr9
-rw-r--r--src/test/ui-fulldeps/macro-crate-rlib.rs (renamed from src/test/compile-fail-fulldeps/macro-crate-rlib.rs)0
-rw-r--r--src/test/ui-fulldeps/macro-crate-rlib.stderr9
-rw-r--r--src/test/ui-fulldeps/macro-crate-unexported-macro.rs (renamed from src/test/compile-fail-fulldeps/macro-crate-unexported-macro.rs)0
-rw-r--r--src/test/ui-fulldeps/macro-crate-unexported-macro.stderr8
-rw-r--r--src/test/ui-fulldeps/plugin-as-extern-crate.rs (renamed from src/test/compile-fail-fulldeps/plugin-as-extern-crate.rs)0
-rw-r--r--src/test/ui-fulldeps/plugin-as-extern-crate.stderr14
-rw-r--r--src/test/ui-fulldeps/plugin-attr-register-deny.rs (renamed from src/test/compile-fail-fulldeps/plugin-attr-register-deny.rs)0
-rw-r--r--src/test/ui-fulldeps/plugin-attr-register-deny.stderr26
-rw-r--r--src/test/ui-fulldeps/plugin-plus-extern-crate.rs (renamed from src/test/compile-fail-fulldeps/plugin-plus-extern-crate.rs)0
-rw-r--r--src/test/ui-fulldeps/plugin-plus-extern-crate.stderr14
-rw-r--r--src/test/ui-fulldeps/qquote.rs (renamed from src/test/compile-fail-fulldeps/qquote.rs)0
-rw-r--r--src/test/ui-fulldeps/qquote.stderr9
-rw-r--r--src/test/ui/auxiliary/pub_and_stability.rs (renamed from src/test/compile-fail-fulldeps/auxiliary/pub_and_stability.rs)0
-rw-r--r--src/test/ui/auxiliary/use_from_trait_xc.rs (renamed from src/test/compile-fail-fulldeps/auxiliary/use_from_trait_xc.rs)0
-rw-r--r--src/test/ui/explore-issue-38412.rs (renamed from src/test/compile-fail-fulldeps/explore-issue-38412.rs)0
-rw-r--r--src/test/ui/explore-issue-38412.stderr132
-rw-r--r--src/test/ui/issue-18986.rs (renamed from src/test/compile-fail-fulldeps/issue-18986.rs)0
-rw-r--r--src/test/ui/issue-18986.stderr9
-rw-r--r--src/test/ui/no-link-unknown-crate.rs (renamed from src/test/compile-fail-fulldeps/no-link-unknown-crate.rs)0
-rw-r--r--src/test/ui/no-link-unknown-crate.stderr9
-rw-r--r--src/test/ui/proc-macro/attr-invalid-exprs.rs (renamed from src/test/compile-fail/proc-macro/attr-invalid-exprs.rs)0
-rw-r--r--src/test/ui/proc-macro/attr-invalid-exprs.stderr28
-rw-r--r--src/test/ui/proc-macro/attr-stmt-expr.rs (renamed from src/test/compile-fail/proc-macro/attr-stmt-expr.rs)0
-rw-r--r--src/test/ui/proc-macro/attr-stmt-expr.stderr19
-rw-r--r--src/test/ui/proc-macro/attribute-with-error.rs (renamed from src/test/compile-fail/proc-macro/attribute-with-error.rs)0
-rw-r--r--src/test/ui/proc-macro/attribute-with-error.stderr39
-rw-r--r--src/test/ui/proc-macro/attribute.rs (renamed from src/test/compile-fail/proc-macro/attribute.rs)0
-rw-r--r--src/test/ui/proc-macro/attribute.stderr50
-rw-r--r--src/test/ui/proc-macro/attributes-included.rs (renamed from src/test/compile-fail/proc-macro/attributes-included.rs)0
-rw-r--r--src/test/ui/proc-macro/attributes-included.stderr13
-rw-r--r--src/test/ui/proc-macro/auxiliary/attr-stmt-expr.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/attr-stmt-expr.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/attribute-with-error.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/attribute-with-error.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/attributes-included.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/attributes-included.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/bang_proc_macro2.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/bang_proc_macro2.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/derive-a-b.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/derive-a-b.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/derive-a.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/derive-a.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/derive-b.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/derive-b.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/derive-bad.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/derive-bad.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/derive-unstable-2.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/derive-unstable-2.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/derive-unstable.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/derive-unstable.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/edition-imports-2015.rs (renamed from src/test/ui-fulldeps/proc-macro/auxiliary/edition-imports-2015.rs)1
-rw-r--r--src/test/ui/proc-macro/auxiliary/issue-41211.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/issue-41211.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/issue_38586.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/issue_38586.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/issue_50493.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/issue_50493.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/more-gates.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/more-gates.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/proc-macro-gates.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/proc-macro-gates.rs)0
-rw-r--r--src/test/ui/proc-macro/auxiliary/test-macros.rs (renamed from src/test/compile-fail/proc-macro/auxiliary/test-macros.rs)0
-rw-r--r--src/test/ui/proc-macro/define-two.rs (renamed from src/test/compile-fail/proc-macro/define-two.rs)0
-rw-r--r--src/test/ui/proc-macro/define-two.stderr14
-rw-r--r--src/test/ui/proc-macro/derive-bad.rs (renamed from src/test/compile-fail/proc-macro/derive-bad.rs)0
-rw-r--r--src/test/ui/proc-macro/derive-bad.stderr14
-rw-r--r--src/test/ui/proc-macro/derive-still-gated.rs (renamed from src/test/compile-fail/proc-macro/derive-still-gated.rs)0
-rw-r--r--src/test/ui/proc-macro/derive-still-gated.stderr11
-rw-r--r--src/test/ui/proc-macro/edition-imports-2018.rs (renamed from src/test/ui-fulldeps/proc-macro/edition-imports-2018.rs)0
-rw-r--r--src/test/ui/proc-macro/expand-to-unstable-2.rs (renamed from src/test/compile-fail/proc-macro/expand-to-unstable-2.rs)0
-rw-r--r--src/test/ui/proc-macro/expand-to-unstable-2.stderr11
-rw-r--r--src/test/ui/proc-macro/expand-to-unstable.rs (renamed from src/test/compile-fail/proc-macro/expand-to-unstable.rs)0
-rw-r--r--src/test/ui/proc-macro/expand-to-unstable.stderr11
-rw-r--r--src/test/ui/proc-macro/export-macro.rs (renamed from src/test/compile-fail/proc-macro/export-macro.rs)0
-rw-r--r--src/test/ui/proc-macro/export-macro.stderr10
-rw-r--r--src/test/ui/proc-macro/exports.rs (renamed from src/test/compile-fail/proc-macro/exports.rs)0
-rw-r--r--src/test/ui/proc-macro/exports.stderr26
-rw-r--r--src/test/ui/proc-macro/illegal-proc-macro-derive-use.rs (renamed from src/test/compile-fail/proc-macro/illegal-proc-macro-derive-use.rs)0
-rw-r--r--src/test/ui/proc-macro/illegal-proc-macro-derive-use.stderr14
-rw-r--r--src/test/ui/proc-macro/import.rs (renamed from src/test/compile-fail/proc-macro/import.rs)0
-rw-r--r--src/test/ui/proc-macro/import.stderr9
-rw-r--r--src/test/ui/proc-macro/issue-37788.rs (renamed from src/test/compile-fail/proc-macro/issue-37788.rs)0
-rw-r--r--src/test/ui/proc-macro/issue-37788.stderr17
-rw-r--r--src/test/ui/proc-macro/issue-38586.rs (renamed from src/test/compile-fail/proc-macro/issue-38586.rs)0
-rw-r--r--src/test/ui/proc-macro/issue-38586.stderr9
-rw-r--r--src/test/ui/proc-macro/issue-41211.rs (renamed from src/test/compile-fail/proc-macro/issue-41211.rs)0
-rw-r--r--src/test/ui/proc-macro/issue-41211.stderr11
-rw-r--r--src/test/ui/proc-macro/issue-50493.rs (renamed from src/test/compile-fail/proc-macro/issue-50493.rs)0
-rw-r--r--src/test/ui/proc-macro/issue-50493.stderr15
-rw-r--r--src/test/ui/proc-macro/item-error.rs (renamed from src/test/compile-fail/proc-macro/item-error.rs)0
-rw-r--r--src/test/ui/proc-macro/item-error.stderr9
-rw-r--r--src/test/ui/proc-macro/lints_in_proc_macros.rs (renamed from src/test/compile-fail/proc-macro/lints_in_proc_macros.rs)0
-rw-r--r--src/test/ui/proc-macro/lints_in_proc_macros.stderr9
-rw-r--r--src/test/ui/proc-macro/macros-in-extern.rs (renamed from src/test/compile-fail/proc-macro/macros-in-extern.rs)0
-rw-r--r--src/test/ui/proc-macro/macros-in-extern.stderr27
-rw-r--r--src/test/ui/proc-macro/more-gates.rs (renamed from src/test/compile-fail/proc-macro/more-gates.rs)0
-rw-r--r--src/test/ui/proc-macro/more-gates.stderr43
-rw-r--r--src/test/ui/proc-macro/no-macro-use-attr.rs (renamed from src/test/compile-fail/proc-macro/no-macro-use-attr.rs)0
-rw-r--r--src/test/ui/proc-macro/no-macro-use-attr.stderr20
-rw-r--r--src/test/ui/proc-macro/proc-macro-attributes.rs (renamed from src/test/compile-fail/proc-macro/proc-macro-attributes.rs)0
-rw-r--r--src/test/ui/proc-macro/proc-macro-attributes.stderr11
-rw-r--r--src/test/ui/proc-macro/proc-macro-gates.rs (renamed from src/test/compile-fail/proc-macro/proc-macro-gates.rs)0
-rw-r--r--src/test/ui/proc-macro/proc-macro-gates.stderr137
-rw-r--r--src/test/ui/proc-macro/proc-macro-gates2.rs (renamed from src/test/compile-fail/proc-macro/proc-macro-gates2.rs)0
-rw-r--r--src/test/ui/proc-macro/proc-macro-gates2.stderr19
-rw-r--r--src/test/ui/proc-macro/pub-at-crate-root.rs (renamed from src/test/compile-fail/proc-macro/pub-at-crate-root.rs)0
-rw-r--r--src/test/ui/proc-macro/pub-at-crate-root.stderr32
-rw-r--r--src/test/ui/proc-macro/shadow-builtin.rs (renamed from src/test/compile-fail/proc-macro/shadow-builtin.rs)0
-rw-r--r--src/test/ui/proc-macro/shadow-builtin.stderr8
-rw-r--r--src/test/ui/proc-macro/shadow.rs (renamed from src/test/compile-fail/proc-macro/shadow.rs)0
-rw-r--r--src/test/ui/proc-macro/shadow.stderr18
-rw-r--r--src/test/ui/proc-macro/two-crate-types-1.rs (renamed from src/test/compile-fail/proc-macro/two-crate-types-1.rs)0
-rw-r--r--src/test/ui/proc-macro/two-crate-types-1.stderr4
-rw-r--r--src/test/ui/proc-macro/two-crate-types-2.rs (renamed from src/test/compile-fail/proc-macro/two-crate-types-2.rs)0
-rw-r--r--src/test/ui/proc-macro/two-crate-types-2.stderr4
-rw-r--r--src/tools/tidy/src/features.rs9
134 files changed, 1110 insertions, 173 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index b3682850de7..7dc64db70b8 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -389,7 +389,6 @@ impl<'a> Builder<'a> {
                 test::UiFullDeps,
                 test::RunPassFullDeps,
                 test::RunFailFullDeps,
-                test::CompileFailFullDeps,
                 test::Rustdoc,
                 test::Pretty,
                 test::RunPassPretty,
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 254286f088e..ca9894f8f62 100644
--- a/src/bootstrap/test.rs
+++ b/src/bootstrap/test.rs
@@ -832,12 +832,6 @@ host_test!(RunFailFullDeps {
     suite: "run-fail-fulldeps"
 });
 
-host_test!(CompileFailFullDeps {
-    path: "src/test/compile-fail-fulldeps",
-    mode: "compile-fail",
-    suite: "compile-fail-fulldeps"
-});
-
 host_test!(Rustdoc {
     path: "src/test/rustdoc",
     mode: "rustdoc",
diff --git a/src/test/compile-fail-fulldeps/auxiliary/lint_group_plugin_test.rs b/src/test/compile-fail-fulldeps/auxiliary/lint_group_plugin_test.rs
deleted file mode 100644
index f697642f843..00000000000
--- a/src/test/compile-fail-fulldeps/auxiliary/lint_group_plugin_test.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// force-host
-
-#![feature(plugin_registrar)]
-#![feature(box_syntax, rustc_private)]
-
-// Load rustc as a plugin to get macros
-#[macro_use]
-extern crate rustc;
-extern crate rustc_plugin;
-
-use rustc::hir;
-use rustc::lint::{LateContext, LintContext, LintPass, LateLintPass, LateLintPassObject, LintArray};
-use rustc_plugin::Registry;
-
-declare_lint!(TEST_LINT, Warn, "Warn about items named 'lintme'");
-
-declare_lint!(PLEASE_LINT, Warn, "Warn about items named 'pleaselintme'");
-
-struct Pass;
-
-impl LintPass for Pass {
-    fn get_lints(&self) -> LintArray {
-        lint_array!(TEST_LINT, PLEASE_LINT)
-    }
-}
-
-impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
-    fn check_item(&mut self, cx: &LateContext, it: &hir::Item) {
-        match &*it.name.as_str() {
-            "lintme" => cx.span_lint(TEST_LINT, it.span, "item is named 'lintme'"),
-            "pleaselintme" => cx.span_lint(PLEASE_LINT, it.span, "item is named 'pleaselintme'"),
-            _ => {}
-        }
-    }
-}
-
-#[plugin_registrar]
-pub fn plugin_registrar(reg: &mut Registry) {
-    reg.register_late_lint_pass(box Pass);
-    reg.register_lint_group("lint_me", None, vec![TEST_LINT, PLEASE_LINT]);
-}
diff --git a/src/test/compile-fail-fulldeps/auxiliary/lint_plugin_test.rs b/src/test/compile-fail-fulldeps/auxiliary/lint_plugin_test.rs
deleted file mode 100644
index 8647797270f..00000000000
--- a/src/test/compile-fail-fulldeps/auxiliary/lint_plugin_test.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// force-host
-
-#![feature(plugin_registrar)]
-#![feature(box_syntax, rustc_private)]
-
-extern crate syntax;
-
-// Load rustc as a plugin to get macros
-#[macro_use]
-extern crate rustc;
-extern crate rustc_plugin;
-
-use rustc::lint::{EarlyContext, LintContext, LintPass, EarlyLintPass,
-                  EarlyLintPassObject, LintArray};
-use rustc_plugin::Registry;
-use syntax::ast;
-declare_lint!(TEST_LINT, Warn, "Warn about items named 'lintme'");
-
-struct Pass;
-
-impl LintPass for Pass {
-    fn get_lints(&self) -> LintArray {
-        lint_array!(TEST_LINT)
-    }
-}
-
-impl EarlyLintPass for Pass {
-    fn check_item(&mut self, cx: &EarlyContext, it: &ast::Item) {
-        if it.ident.name == "lintme" {
-            cx.span_lint(TEST_LINT, it.span, "item is named 'lintme'");
-        }
-    }
-}
-
-#[plugin_registrar]
-pub fn plugin_registrar(reg: &mut Registry) {
-    reg.register_early_lint_pass(box Pass as EarlyLintPassObject);
-}
diff --git a/src/test/compile-fail-fulldeps/auxiliary/macro_reexport_1.rs b/src/test/compile-fail-fulldeps/auxiliary/macro_reexport_1.rs
deleted file mode 100644
index aaeccc6e898..00000000000
--- a/src/test/compile-fail-fulldeps/auxiliary/macro_reexport_1.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-#![crate_type = "dylib"]
-#[macro_export]
-macro_rules! reexported {
-    () => ( 3 )
-}
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-clona.rs b/src/test/compile-fail/proc-macro/auxiliary/derive-clona.rs
deleted file mode 100644
index 719fbdb15ef..00000000000
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-clona.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// force-host
-// no-prefer-dynamic
-
-#![crate_type = "proc-macro"]
-
-extern crate proc_macro;
-
-use proc_macro::TokenStream;
-
-#[proc_macro_derive(Clona)]
-pub fn derive_clonea(input: TokenStream) -> TokenStream {
-    "".parse().unwrap()
-}
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-foo.rs b/src/test/compile-fail/proc-macro/auxiliary/derive-foo.rs
deleted file mode 100644
index 64dcf72ba20..00000000000
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-foo.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// force-host
-// no-prefer-dynamic
-
-#![crate_type = "proc-macro"]
-
-extern crate proc_macro;
-
-use proc_macro::TokenStream;
-
-#[proc_macro_derive(FooWithLongName)]
-pub fn derive_foo(input: TokenStream) -> TokenStream {
-    "".parse().unwrap()
-}
diff --git a/src/test/compile-fail-fulldeps/auxiliary/attr_plugin_test.rs b/src/test/ui-fulldeps/auxiliary/attr_plugin_test.rs
index bab3721a313..bab3721a313 100644
--- a/src/test/compile-fail-fulldeps/auxiliary/attr_plugin_test.rs
+++ b/src/test/ui-fulldeps/auxiliary/attr_plugin_test.rs
diff --git a/src/test/compile-fail-fulldeps/auxiliary/lint_for_crate.rs b/src/test/ui-fulldeps/auxiliary/lint_for_crate.rs
index fc53031e7f2..fc53031e7f2 100644
--- a/src/test/compile-fail-fulldeps/auxiliary/lint_for_crate.rs
+++ b/src/test/ui-fulldeps/auxiliary/lint_for_crate.rs
diff --git a/src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs b/src/test/ui-fulldeps/auxiliary/macro_crate_test.rs
index fb0f9105b0d..fb0f9105b0d 100644
--- a/src/test/compile-fail-fulldeps/auxiliary/macro_crate_test.rs
+++ b/src/test/ui-fulldeps/auxiliary/macro_crate_test.rs
diff --git a/src/test/compile-fail-fulldeps/auxiliary/rlib_crate_test.rs b/src/test/ui-fulldeps/auxiliary/rlib_crate_test.rs
index ae1568b2f88..ae1568b2f88 100644
--- a/src/test/compile-fail-fulldeps/auxiliary/rlib_crate_test.rs
+++ b/src/test/ui-fulldeps/auxiliary/rlib_crate_test.rs
diff --git a/src/test/compile-fail-fulldeps/dropck_tarena_cycle_checked.rs b/src/test/ui-fulldeps/dropck_tarena_cycle_checked.rs
index 5ab6b99eb62..5ab6b99eb62 100644
--- a/src/test/compile-fail-fulldeps/dropck_tarena_cycle_checked.rs
+++ b/src/test/ui-fulldeps/dropck_tarena_cycle_checked.rs
diff --git a/src/test/ui-fulldeps/dropck_tarena_cycle_checked.stderr b/src/test/ui-fulldeps/dropck_tarena_cycle_checked.stderr
new file mode 100644
index 00000000000..eae33bab453
--- /dev/null
+++ b/src/test/ui-fulldeps/dropck_tarena_cycle_checked.stderr
@@ -0,0 +1,13 @@
+error[E0597]: `arena` does not live long enough
+  --> $DIR/dropck_tarena_cycle_checked.rs:126:8
+   |
+LL |     f(&arena);
+   |        ^^^^^ borrowed value does not live long enough
+LL | } //~^ ERROR `arena` does not live long enough
+   | - `arena` dropped here while still borrowed
+   |
+   = note: values in a scope are dropped in the opposite order they are created
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/compile-fail-fulldeps/dropck_tarena_unsound_drop.rs b/src/test/ui-fulldeps/dropck_tarena_unsound_drop.rs
index e2231b0814f..e2231b0814f 100644
--- a/src/test/compile-fail-fulldeps/dropck_tarena_unsound_drop.rs
+++ b/src/test/ui-fulldeps/dropck_tarena_unsound_drop.rs
diff --git a/src/test/ui-fulldeps/dropck_tarena_unsound_drop.stderr b/src/test/ui-fulldeps/dropck_tarena_unsound_drop.stderr
new file mode 100644
index 00000000000..75ceb692c75
--- /dev/null
+++ b/src/test/ui-fulldeps/dropck_tarena_unsound_drop.stderr
@@ -0,0 +1,13 @@
+error[E0597]: `arena` does not live long enough
+  --> $DIR/dropck_tarena_unsound_drop.rs:51:8
+   |
+LL |     f(&arena);
+   |        ^^^^^ borrowed value does not live long enough
+LL | } //~^ ERROR `arena` does not live long enough
+   | - `arena` dropped here while still borrowed
+   |
+   = note: values in a scope are dropped in the opposite order they are created
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0597`.
diff --git a/src/test/compile-fail-fulldeps/gated-plugin.rs b/src/test/ui-fulldeps/gated-plugin.rs
index 4e80ca46c0a..4e80ca46c0a 100644
--- a/src/test/compile-fail-fulldeps/gated-plugin.rs
+++ b/src/test/ui-fulldeps/gated-plugin.rs
diff --git a/src/test/ui-fulldeps/gated-plugin.stderr b/src/test/ui-fulldeps/gated-plugin.stderr
new file mode 100644
index 00000000000..075bc799b33
--- /dev/null
+++ b/src/test/ui-fulldeps/gated-plugin.stderr
@@ -0,0 +1,11 @@
+error[E0658]: compiler plugins are experimental and possibly buggy (see issue #29597)
+  --> $DIR/gated-plugin.rs:13:1
+   |
+LL | #![plugin(macro_crate_test)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(plugin)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail-fulldeps/gated-quote.rs b/src/test/ui-fulldeps/gated-quote.rs
index 63e1c6f16b3..63e1c6f16b3 100644
--- a/src/test/compile-fail-fulldeps/gated-quote.rs
+++ b/src/test/ui-fulldeps/gated-quote.rs
diff --git a/src/test/ui-fulldeps/gated-quote.stderr b/src/test/ui-fulldeps/gated-quote.stderr
new file mode 100644
index 00000000000..db091938c6e
--- /dev/null
+++ b/src/test/ui-fulldeps/gated-quote.stderr
@@ -0,0 +1,80 @@
+error: cannot find macro `quote_path!` in this scope
+  --> $DIR/gated-quote.rs:65:13
+   |
+LL |     let x = quote_path!(ecx, 3);
+   |             ^^^^^^^^^^
+
+error: cannot find macro `quote_meta_item!` in this scope
+  --> $DIR/gated-quote.rs:63:13
+   |
+LL |     let x = quote_meta_item!(ecx, 3);
+   |             ^^^^^^^^^^^^^^^
+
+error: cannot find macro `quote_block!` in this scope
+  --> $DIR/gated-quote.rs:61:13
+   |
+LL |     let x = quote_block!(ecx, 3);
+   |             ^^^^^^^^^^^
+
+error: cannot find macro `quote_arg!` in this scope
+  --> $DIR/gated-quote.rs:59:13
+   |
+LL |     let x = quote_arg!(ecx, 3);
+   |             ^^^^^^^^^
+
+error: cannot find macro `quote_attr!` in this scope
+  --> $DIR/gated-quote.rs:57:13
+   |
+LL |     let x = quote_attr!(ecx, 3);
+   |             ^^^^^^^^^^
+
+error: cannot find macro `quote_stmt!` in this scope
+  --> $DIR/gated-quote.rs:55:13
+   |
+LL |     let x = quote_stmt!(ecx, 3);
+   |             ^^^^^^^^^^
+
+error: cannot find macro `quote_arm!` in this scope
+  --> $DIR/gated-quote.rs:53:13
+   |
+LL |     let x = quote_arm!(ecx, 3);
+   |             ^^^^^^^^^
+
+error: cannot find macro `quote_pat!` in this scope
+  --> $DIR/gated-quote.rs:51:13
+   |
+LL |     let x = quote_pat!(ecx, 3);
+   |             ^^^^^^^^^
+
+error: cannot find macro `quote_item!` in this scope
+  --> $DIR/gated-quote.rs:49:13
+   |
+LL |     let x = quote_item!(ecx, 3);
+   |             ^^^^^^^^^^
+
+error: cannot find macro `quote_method!` in this scope
+  --> $DIR/gated-quote.rs:47:13
+   |
+LL |     let x = quote_method!(ecx, 3);
+   |             ^^^^^^^^^^^^
+
+error: cannot find macro `quote_ty!` in this scope
+  --> $DIR/gated-quote.rs:45:13
+   |
+LL |     let x = quote_ty!(ecx, 3);
+   |             ^^^^^^^^
+
+error: cannot find macro `quote_expr!` in this scope
+  --> $DIR/gated-quote.rs:43:13
+   |
+LL |     let x = quote_expr!(ecx, 3);
+   |             ^^^^^^^^^^
+
+error: cannot find macro `quote_tokens!` in this scope
+  --> $DIR/gated-quote.rs:41:13
+   |
+LL |     let x = quote_tokens!(ecx, 3);
+   |             ^^^^^^^^^^^^
+
+error: aborting due to 13 previous errors
+
diff --git a/src/test/compile-fail-fulldeps/issue-15778-fail.rs b/src/test/ui-fulldeps/issue-15778-fail.rs
index d56571ee1ac..d56571ee1ac 100644
--- a/src/test/compile-fail-fulldeps/issue-15778-fail.rs
+++ b/src/test/ui-fulldeps/issue-15778-fail.rs
diff --git a/src/test/ui-fulldeps/issue-15778-fail.stderr b/src/test/ui-fulldeps/issue-15778-fail.stderr
new file mode 100644
index 00000000000..49a2b260a1e
--- /dev/null
+++ b/src/test/ui-fulldeps/issue-15778-fail.stderr
@@ -0,0 +1,13 @@
+error: crate is not marked with #![crate_okay]
+  --> $DIR/issue-15778-fail.rs:15:1
+   |
+LL | / #![feature(plugin)] //~ ERROR crate is not marked with #![crate_okay]
+LL | | #![plugin(lint_for_crate)]
+LL | |
+LL | | pub fn main() { }
+   | |_________________^
+   |
+   = note: requested on the command line with `-D crate-not-okay`
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail-fulldeps/issue-48941.rs b/src/test/ui-fulldeps/issue-48941.rs
index baeb019df1c..baeb019df1c 100644
--- a/src/test/compile-fail-fulldeps/issue-48941.rs
+++ b/src/test/ui-fulldeps/issue-48941.rs
diff --git a/src/test/ui-fulldeps/issue-48941.stderr b/src/test/ui-fulldeps/issue-48941.stderr
new file mode 100644
index 00000000000..606c51fc500
--- /dev/null
+++ b/src/test/ui-fulldeps/issue-48941.stderr
@@ -0,0 +1,14 @@
+error: expected unsuffixed literal or identifier, found a
+  --> $DIR/issue-48941.rs:20:24
+   |
+LL | #[noop_attribute("hi", rank = a)] //~ ERROR expected unsuffixed literal or identifier, found a
+   |                        ^^^^
+
+error: expected unsuffixed literal or identifier, found =
+  --> $DIR/issue-48941.rs:23:27
+   |
+LL | #[noop_attribute("/user", data= = "<user")] //~ ERROR literal or identifier
+   |                           ^^^^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs b/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.rs
index a523799278c..a523799278c 100644
--- a/src/test/compile-fail-fulldeps/lint-group-plugin-deny-cmdline.rs
+++ b/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.rs
diff --git a/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr b/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr
new file mode 100644
index 00000000000..446fc75d584
--- /dev/null
+++ b/src/test/ui-fulldeps/lint-group-plugin-deny-cmdline.stderr
@@ -0,0 +1,18 @@
+error: item is named 'lintme'
+  --> $DIR/lint-group-plugin-deny-cmdline.rs:18:1
+   |
+LL | fn lintme() { } //~ ERROR item is named 'lintme'
+   | ^^^^^^^^^^^^^^^
+   |
+   = note: `-D test-lint` implied by `-D lint-me`
+
+error: item is named 'pleaselintme'
+  --> $DIR/lint-group-plugin-deny-cmdline.rs:20:1
+   |
+LL | fn pleaselintme() { } //~ ERROR item is named 'pleaselintme'
+   | ^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: `-D please-lint` implied by `-D lint-me`
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs b/src/test/ui-fulldeps/lint-plugin-deny-attr.rs
index e3dbdc331a7..e3dbdc331a7 100644
--- a/src/test/compile-fail-fulldeps/lint-plugin-deny-attr.rs
+++ b/src/test/ui-fulldeps/lint-plugin-deny-attr.rs
diff --git a/src/test/ui-fulldeps/lint-plugin-deny-attr.stderr b/src/test/ui-fulldeps/lint-plugin-deny-attr.stderr
new file mode 100644
index 00000000000..e0ea1e0065a
--- /dev/null
+++ b/src/test/ui-fulldeps/lint-plugin-deny-attr.stderr
@@ -0,0 +1,14 @@
+error: item is named 'lintme'
+  --> $DIR/lint-plugin-deny-attr.rs:18:1
+   |
+LL | fn lintme() { } //~ ERROR item is named 'lintme'
+   | ^^^^^^^^^^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/lint-plugin-deny-attr.rs:16:9
+   |
+LL | #![deny(test_lint)]
+   |         ^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs b/src/test/ui-fulldeps/lint-plugin-deny-cmdline.rs
index 41d25becd84..41d25becd84 100644
--- a/src/test/compile-fail-fulldeps/lint-plugin-deny-cmdline.rs
+++ b/src/test/ui-fulldeps/lint-plugin-deny-cmdline.rs
diff --git a/src/test/ui-fulldeps/lint-plugin-deny-cmdline.stderr b/src/test/ui-fulldeps/lint-plugin-deny-cmdline.stderr
new file mode 100644
index 00000000000..9084253b71e
--- /dev/null
+++ b/src/test/ui-fulldeps/lint-plugin-deny-cmdline.stderr
@@ -0,0 +1,10 @@
+error: item is named 'lintme'
+  --> $DIR/lint-plugin-deny-cmdline.rs:18:1
+   |
+LL | fn lintme() { } //~ ERROR item is named 'lintme'
+   | ^^^^^^^^^^^^^^^
+   |
+   = note: requested on the command line with `-D test-lint`
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs b/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.rs
index 155294f8026..155294f8026 100644
--- a/src/test/compile-fail-fulldeps/lint-plugin-forbid-cmdline.rs
+++ b/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.rs
diff --git a/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.stderr b/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.stderr
new file mode 100644
index 00000000000..30043db41da
--- /dev/null
+++ b/src/test/ui-fulldeps/lint-plugin-forbid-cmdline.stderr
@@ -0,0 +1,19 @@
+error[E0453]: allow(test_lint) overruled by outer forbid(test_lint)
+  --> $DIR/lint-plugin-forbid-cmdline.rs:20:9
+   |
+LL | #[allow(test_lint)] //~ ERROR allow(test_lint) overruled by outer forbid(test_lint)
+   |         ^^^^^^^^^ overruled by previous forbid
+   |
+   = note: `forbid` lint level was set on command line
+
+error: item is named 'lintme'
+  --> $DIR/lint-plugin-forbid-cmdline.rs:18:1
+   |
+LL | fn lintme() { } //~ ERROR item is named 'lintme'
+   | ^^^^^^^^^^^^^^^
+   |
+   = note: requested on the command line with `-F test-lint`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0453`.
diff --git a/src/test/compile-fail-fulldeps/macro-crate-doesnt-resolve.rs b/src/test/ui-fulldeps/macro-crate-doesnt-resolve.rs
index c676076aef3..c676076aef3 100644
--- a/src/test/compile-fail-fulldeps/macro-crate-doesnt-resolve.rs
+++ b/src/test/ui-fulldeps/macro-crate-doesnt-resolve.rs
diff --git a/src/test/ui-fulldeps/macro-crate-doesnt-resolve.stderr b/src/test/ui-fulldeps/macro-crate-doesnt-resolve.stderr
new file mode 100644
index 00000000000..c45cfa9070f
--- /dev/null
+++ b/src/test/ui-fulldeps/macro-crate-doesnt-resolve.stderr
@@ -0,0 +1,9 @@
+error[E0425]: cannot find function `foo` in module `macro_crate_test`
+  --> $DIR/macro-crate-doesnt-resolve.rs:17:23
+   |
+LL |     macro_crate_test::foo(); //~ ERROR cannot find function `foo` in module `macro_crate_test`
+   |                       ^^^ not found in `macro_crate_test`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/compile-fail-fulldeps/macro-crate-rlib.rs b/src/test/ui-fulldeps/macro-crate-rlib.rs
index 5b34d8e3adb..5b34d8e3adb 100644
--- a/src/test/compile-fail-fulldeps/macro-crate-rlib.rs
+++ b/src/test/ui-fulldeps/macro-crate-rlib.rs
diff --git a/src/test/ui-fulldeps/macro-crate-rlib.stderr b/src/test/ui-fulldeps/macro-crate-rlib.stderr
new file mode 100644
index 00000000000..8a7f7883a10
--- /dev/null
+++ b/src/test/ui-fulldeps/macro-crate-rlib.stderr
@@ -0,0 +1,9 @@
+error[E0457]: plugin `rlib_crate_test` only found in rlib format, but must be available in dylib format
+  --> $DIR/macro-crate-rlib.rs:16:11
+   |
+LL | #![plugin(rlib_crate_test)]
+   |           ^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0457`.
diff --git a/src/test/compile-fail-fulldeps/macro-crate-unexported-macro.rs b/src/test/ui-fulldeps/macro-crate-unexported-macro.rs
index 886b6247c0a..886b6247c0a 100644
--- a/src/test/compile-fail-fulldeps/macro-crate-unexported-macro.rs
+++ b/src/test/ui-fulldeps/macro-crate-unexported-macro.rs
diff --git a/src/test/ui-fulldeps/macro-crate-unexported-macro.stderr b/src/test/ui-fulldeps/macro-crate-unexported-macro.stderr
new file mode 100644
index 00000000000..8d87c882a1a
--- /dev/null
+++ b/src/test/ui-fulldeps/macro-crate-unexported-macro.stderr
@@ -0,0 +1,8 @@
+error: cannot find macro `unexported_macro!` in this scope
+  --> $DIR/macro-crate-unexported-macro.rs:17:5
+   |
+LL |     unexported_macro!();
+   |     ^^^^^^^^^^^^^^^^ help: you could try the macro: `exported_macro`
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail-fulldeps/plugin-as-extern-crate.rs b/src/test/ui-fulldeps/plugin-as-extern-crate.rs
index bb292e2e52a..bb292e2e52a 100644
--- a/src/test/compile-fail-fulldeps/plugin-as-extern-crate.rs
+++ b/src/test/ui-fulldeps/plugin-as-extern-crate.rs
diff --git a/src/test/ui-fulldeps/plugin-as-extern-crate.stderr b/src/test/ui-fulldeps/plugin-as-extern-crate.stderr
new file mode 100644
index 00000000000..713f1b07345
--- /dev/null
+++ b/src/test/ui-fulldeps/plugin-as-extern-crate.stderr
@@ -0,0 +1,14 @@
+error: compiler plugin used as an ordinary library
+  --> $DIR/plugin-as-extern-crate.rs:20:1
+   |
+LL | extern crate macro_crate_test; //~ ERROR compiler plugin used as an ordinary library
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/plugin-as-extern-crate.rs:17:9
+   |
+LL | #![deny(plugin_as_library)]
+   |         ^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail-fulldeps/plugin-attr-register-deny.rs b/src/test/ui-fulldeps/plugin-attr-register-deny.rs
index 0d2a5a30c10..0d2a5a30c10 100644
--- a/src/test/compile-fail-fulldeps/plugin-attr-register-deny.rs
+++ b/src/test/ui-fulldeps/plugin-attr-register-deny.rs
diff --git a/src/test/ui-fulldeps/plugin-attr-register-deny.stderr b/src/test/ui-fulldeps/plugin-attr-register-deny.stderr
new file mode 100644
index 00000000000..0bb2d1c9f5e
--- /dev/null
+++ b/src/test/ui-fulldeps/plugin-attr-register-deny.stderr
@@ -0,0 +1,26 @@
+error: unused attribute
+  --> $DIR/plugin-attr-register-deny.rs:24:5
+   |
+LL |     #[bar]
+   |     ^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/plugin-attr-register-deny.rs:16:9
+   |
+LL | #![deny(unused_attributes)]
+   |         ^^^^^^^^^^^^^^^^^
+
+error: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
+  --> $DIR/plugin-attr-register-deny.rs:24:5
+   |
+LL |     #[bar]
+   |     ^^^^^^
+
+error: unused attribute
+  --> $DIR/plugin-attr-register-deny.rs:21:1
+   |
+LL | #[foo]
+   | ^^^^^^
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/compile-fail-fulldeps/plugin-plus-extern-crate.rs b/src/test/ui-fulldeps/plugin-plus-extern-crate.rs
index 3dfd8838ebe..3dfd8838ebe 100644
--- a/src/test/compile-fail-fulldeps/plugin-plus-extern-crate.rs
+++ b/src/test/ui-fulldeps/plugin-plus-extern-crate.rs
diff --git a/src/test/ui-fulldeps/plugin-plus-extern-crate.stderr b/src/test/ui-fulldeps/plugin-plus-extern-crate.stderr
new file mode 100644
index 00000000000..faefe04e14a
--- /dev/null
+++ b/src/test/ui-fulldeps/plugin-plus-extern-crate.stderr
@@ -0,0 +1,14 @@
+error: compiler plugin used as an ordinary library
+  --> $DIR/plugin-plus-extern-crate.rs:22:1
+   |
+LL | extern crate macro_crate_test; //~ ERROR compiler plugin used as an ordinary library
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/plugin-plus-extern-crate.rs:18:9
+   |
+LL | #![deny(plugin_as_library)]
+   |         ^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail-fulldeps/qquote.rs b/src/test/ui-fulldeps/qquote.rs
index 4b0bc8f02b4..4b0bc8f02b4 100644
--- a/src/test/compile-fail-fulldeps/qquote.rs
+++ b/src/test/ui-fulldeps/qquote.rs
diff --git a/src/test/ui-fulldeps/qquote.stderr b/src/test/ui-fulldeps/qquote.stderr
new file mode 100644
index 00000000000..4c136ad4b78
--- /dev/null
+++ b/src/test/ui-fulldeps/qquote.stderr
@@ -0,0 +1,9 @@
+error[E0425]: cannot find value `abcd` in this scope
+  --> $DIR/qquote.rs:35:38
+   |
+LL |     let expr = quote_expr!(&cx, 2 - $abcd + 7); //~ ERROR cannot find value `abcd` in this scope
+   |                                      ^^^^ not found in this scope
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/compile-fail-fulldeps/auxiliary/pub_and_stability.rs b/src/test/ui/auxiliary/pub_and_stability.rs
index f46d906d865..f46d906d865 100644
--- a/src/test/compile-fail-fulldeps/auxiliary/pub_and_stability.rs
+++ b/src/test/ui/auxiliary/pub_and_stability.rs
diff --git a/src/test/compile-fail-fulldeps/auxiliary/use_from_trait_xc.rs b/src/test/ui/auxiliary/use_from_trait_xc.rs
index 9a6d176d088..9a6d176d088 100644
--- a/src/test/compile-fail-fulldeps/auxiliary/use_from_trait_xc.rs
+++ b/src/test/ui/auxiliary/use_from_trait_xc.rs
diff --git a/src/test/compile-fail-fulldeps/explore-issue-38412.rs b/src/test/ui/explore-issue-38412.rs
index 4b9a5b71618..4b9a5b71618 100644
--- a/src/test/compile-fail-fulldeps/explore-issue-38412.rs
+++ b/src/test/ui/explore-issue-38412.rs
diff --git a/src/test/ui/explore-issue-38412.stderr b/src/test/ui/explore-issue-38412.stderr
new file mode 100644
index 00000000000..8e31c1c7e01
--- /dev/null
+++ b/src/test/ui/explore-issue-38412.stderr
@@ -0,0 +1,132 @@
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:31:63
+   |
+LL |     let Record { a_stable_pub: _, a_unstable_declared_pub: _, a_unstable_undeclared_pub: _, .. } =
+   |                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:40:5
+   |
+LL |     r.a_unstable_undeclared_pub; //~ ERROR use of unstable library feature
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0616]: field `b_crate` of struct `pub_and_stability::Record` is private
+  --> $DIR/explore-issue-38412.rs:41:5
+   |
+LL |     r.b_crate;                   //~ ERROR is private
+   |     ^^^^^^^^^
+
+error[E0616]: field `c_mod` of struct `pub_and_stability::Record` is private
+  --> $DIR/explore-issue-38412.rs:42:5
+   |
+LL |     r.c_mod;                     //~ ERROR is private
+   |     ^^^^^^^
+
+error[E0616]: field `d_priv` of struct `pub_and_stability::Record` is private
+  --> $DIR/explore-issue-38412.rs:43:5
+   |
+LL |     r.d_priv;                    //~ ERROR is private
+   |     ^^^^^^^^
+
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:47:5
+   |
+LL |     t.2;                         //~ ERROR use of unstable library feature
+   |     ^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0616]: field `3` of struct `pub_and_stability::Tuple` is private
+  --> $DIR/explore-issue-38412.rs:48:5
+   |
+LL |     t.3;                         //~ ERROR is private
+   |     ^^^
+
+error[E0616]: field `4` of struct `pub_and_stability::Tuple` is private
+  --> $DIR/explore-issue-38412.rs:49:5
+   |
+LL |     t.4;                         //~ ERROR is private
+   |     ^^^
+
+error[E0616]: field `5` of struct `pub_and_stability::Tuple` is private
+  --> $DIR/explore-issue-38412.rs:50:5
+   |
+LL |     t.5;                         //~ ERROR is private
+   |     ^^^
+
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:54:7
+   |
+LL |     r.unstable_undeclared_trait_method(); //~ ERROR use of unstable library feature
+   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:58:7
+   |
+LL |     r.unstable_undeclared();              //~ ERROR use of unstable library feature
+   |       ^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0624]: method `pub_crate` is private
+  --> $DIR/explore-issue-38412.rs:60:7
+   |
+LL |     r.pub_crate();                        //~ ERROR `pub_crate` is private
+   |       ^^^^^^^^^
+
+error[E0624]: method `pub_mod` is private
+  --> $DIR/explore-issue-38412.rs:61:7
+   |
+LL |     r.pub_mod();                          //~ ERROR `pub_mod` is private
+   |       ^^^^^^^
+
+error[E0624]: method `private` is private
+  --> $DIR/explore-issue-38412.rs:62:7
+   |
+LL |     r.private();                          //~ ERROR `private` is private
+   |       ^^^^^^^
+
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:67:7
+   |
+LL |     t.unstable_undeclared_trait_method(); //~ ERROR use of unstable library feature
+   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0658]: use of unstable library feature 'unstable_undeclared' (see issue #38412)
+  --> $DIR/explore-issue-38412.rs:71:7
+   |
+LL |     t.unstable_undeclared();              //~ ERROR use of unstable library feature
+   |       ^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(unstable_undeclared)] to the crate attributes to enable
+
+error[E0624]: method `pub_crate` is private
+  --> $DIR/explore-issue-38412.rs:73:7
+   |
+LL |     t.pub_crate();                        //~ ERROR `pub_crate` is private
+   |       ^^^^^^^^^
+
+error[E0624]: method `pub_mod` is private
+  --> $DIR/explore-issue-38412.rs:74:7
+   |
+LL |     t.pub_mod();                          //~ ERROR `pub_mod` is private
+   |       ^^^^^^^
+
+error[E0624]: method `private` is private
+  --> $DIR/explore-issue-38412.rs:75:7
+   |
+LL |     t.private();                          //~ ERROR `private` is private
+   |       ^^^^^^^
+
+error: aborting due to 19 previous errors
+
+Some errors occurred: E0616, E0624, E0658.
+For more information about an error, try `rustc --explain E0616`.
diff --git a/src/test/compile-fail-fulldeps/issue-18986.rs b/src/test/ui/issue-18986.rs
index 95af3760544..95af3760544 100644
--- a/src/test/compile-fail-fulldeps/issue-18986.rs
+++ b/src/test/ui/issue-18986.rs
diff --git a/src/test/ui/issue-18986.stderr b/src/test/ui/issue-18986.stderr
new file mode 100644
index 00000000000..241cc4250a3
--- /dev/null
+++ b/src/test/ui/issue-18986.stderr
@@ -0,0 +1,9 @@
+error[E0574]: expected struct, variant or union type, found trait `Trait`
+  --> $DIR/issue-18986.rs:18:9
+   |
+LL |         Trait { x: 42 } => () //~ ERROR expected struct, variant or union type, found trait `Trait`
+   |         ^^^^^ not a struct, variant or union type
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0574`.
diff --git a/src/test/compile-fail-fulldeps/no-link-unknown-crate.rs b/src/test/ui/no-link-unknown-crate.rs
index 8e4692bdee1..8e4692bdee1 100644
--- a/src/test/compile-fail-fulldeps/no-link-unknown-crate.rs
+++ b/src/test/ui/no-link-unknown-crate.rs
diff --git a/src/test/ui/no-link-unknown-crate.stderr b/src/test/ui/no-link-unknown-crate.stderr
new file mode 100644
index 00000000000..182b484f80b
--- /dev/null
+++ b/src/test/ui/no-link-unknown-crate.stderr
@@ -0,0 +1,9 @@
+error[E0463]: can't find crate for `doesnt_exist`
+  --> $DIR/no-link-unknown-crate.rs:12:1
+   |
+LL | extern crate doesnt_exist; //~ ERROR can't find crate
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0463`.
diff --git a/src/test/compile-fail/proc-macro/attr-invalid-exprs.rs b/src/test/ui/proc-macro/attr-invalid-exprs.rs
index 798cd1406ac..798cd1406ac 100644
--- a/src/test/compile-fail/proc-macro/attr-invalid-exprs.rs
+++ b/src/test/ui/proc-macro/attr-invalid-exprs.rs
diff --git a/src/test/ui/proc-macro/attr-invalid-exprs.stderr b/src/test/ui/proc-macro/attr-invalid-exprs.stderr
new file mode 100644
index 00000000000..c28def63e3e
--- /dev/null
+++ b/src/test/ui/proc-macro/attr-invalid-exprs.stderr
@@ -0,0 +1,28 @@
+error: expected expression, found `<eof>`
+  --> $DIR/attr-invalid-exprs.rs:21:13
+   |
+LL |     let _ = #[no_output] "Hello, world!";
+   |             ^^^^^^^^^^^^
+
+error: macro expansion ignores token `,` and any following
+  --> $DIR/attr-invalid-exprs.rs:24:13
+   |
+LL |     let _ = #[duplicate] "Hello, world!";
+   |             ^^^^^^^^^^^^- help: you might be missing a semicolon here: `;`
+   |             |
+   |             caused by the macro expansion here
+   |
+   = note: the usage of `duplicate!` is likely invalid in expression context
+
+error: macro expansion ignores token `,` and any following
+  --> $DIR/attr-invalid-exprs.rs:33:9
+   |
+LL |         #[duplicate]
+   |         ^^^^^^^^^^^^- help: you might be missing a semicolon here: `;`
+   |         |
+   |         caused by the macro expansion here
+   |
+   = note: the usage of `duplicate!` is likely invalid in expression context
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/compile-fail/proc-macro/attr-stmt-expr.rs b/src/test/ui/proc-macro/attr-stmt-expr.rs
index 6d1d5dfe8cc..6d1d5dfe8cc 100644
--- a/src/test/compile-fail/proc-macro/attr-stmt-expr.rs
+++ b/src/test/ui/proc-macro/attr-stmt-expr.rs
diff --git a/src/test/ui/proc-macro/attr-stmt-expr.stderr b/src/test/ui/proc-macro/attr-stmt-expr.stderr
new file mode 100644
index 00000000000..ee9bc771782
--- /dev/null
+++ b/src/test/ui/proc-macro/attr-stmt-expr.stderr
@@ -0,0 +1,19 @@
+error[E0658]: attributes on expressions are experimental. (see issue #15701)
+  --> $DIR/attr-stmt-expr.rs:20:5
+   |
+LL |     #[expect_print_expr]
+   |     ^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(stmt_expr_attributes)] to the crate attributes to enable
+
+error[E0658]: attributes on expressions are experimental. (see issue #15701)
+  --> $DIR/attr-stmt-expr.rs:33:5
+   |
+LL |     #[expect_expr]
+   |     ^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(stmt_expr_attributes)] to the crate attributes to enable
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/attribute-with-error.rs b/src/test/ui/proc-macro/attribute-with-error.rs
index ed2e8ec00a9..ed2e8ec00a9 100644
--- a/src/test/compile-fail/proc-macro/attribute-with-error.rs
+++ b/src/test/ui/proc-macro/attribute-with-error.rs
diff --git a/src/test/ui/proc-macro/attribute-with-error.stderr b/src/test/ui/proc-macro/attribute-with-error.stderr
new file mode 100644
index 00000000000..d2b4ac63992
--- /dev/null
+++ b/src/test/ui/proc-macro/attribute-with-error.stderr
@@ -0,0 +1,39 @@
+error[E0308]: mismatched types
+  --> $DIR/attribute-with-error.rs:21:18
+   |
+LL |     let a: i32 = "foo";
+   |                  ^^^^^ expected i32, found reference
+   |
+   = note: expected type `i32`
+              found type `&'static str`
+
+error[E0308]: mismatched types
+  --> $DIR/attribute-with-error.rs:23:18
+   |
+LL |     let b: i32 = "f'oo";
+   |                  ^^^^^^ expected i32, found reference
+   |
+   = note: expected type `i32`
+              found type `&'static str`
+
+error[E0308]: mismatched types
+  --> $DIR/attribute-with-error.rs:36:22
+   |
+LL |         let a: i32 = "foo";
+   |                      ^^^^^ expected i32, found reference
+   |
+   = note: expected type `i32`
+              found type `&'static str`
+
+error[E0308]: mismatched types
+  --> $DIR/attribute-with-error.rs:46:22
+   |
+LL |         let a: i32 = "foo";
+   |                      ^^^^^ expected i32, found reference
+   |
+   = note: expected type `i32`
+              found type `&'static str`
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/compile-fail/proc-macro/attribute.rs b/src/test/ui/proc-macro/attribute.rs
index f89d74de50f..f89d74de50f 100644
--- a/src/test/compile-fail/proc-macro/attribute.rs
+++ b/src/test/ui/proc-macro/attribute.rs
diff --git a/src/test/ui/proc-macro/attribute.stderr b/src/test/ui/proc-macro/attribute.stderr
new file mode 100644
index 00000000000..c752c5364f4
--- /dev/null
+++ b/src/test/ui/proc-macro/attribute.stderr
@@ -0,0 +1,50 @@
+error: attribute must be of form: #[proc_macro_derive(TraitName)]
+  --> $DIR/attribute.rs:18:1
+   |
+LL | #[proc_macro_derive]
+   | ^^^^^^^^^^^^^^^^^^^^
+
+error: attribute must be of form: #[proc_macro_derive(TraitName)]
+  --> $DIR/attribute.rs:24:1
+   |
+LL | #[proc_macro_derive = "foo"]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: must only be one word
+  --> $DIR/attribute.rs:31:5
+   |
+LL |     a = "b"
+   |     ^^^^^^^
+
+error: attribute must have either one or two arguments
+  --> $DIR/attribute.rs:38:1
+   |
+LL | #[proc_macro_derive(b, c, d)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: must only be one word
+  --> $DIR/attribute.rs:44:21
+   |
+LL | #[proc_macro_derive(d(e))]
+   |                     ^^^^
+
+error: must only be one word
+  --> $DIR/attribute.rs:50:35
+   |
+LL | #[proc_macro_derive(f, attributes(g = "h"))]
+   |                                   ^^^^^^^
+
+error: must only be one word
+  --> $DIR/attribute.rs:56:35
+   |
+LL | #[proc_macro_derive(i, attributes(j(k)))]
+   |                                   ^^^^
+
+error: attribute must have either one or two arguments
+  --> $DIR/attribute.rs:62:1
+   |
+LL | #[proc_macro_derive(l, attributes(m), n)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 8 previous errors
+
diff --git a/src/test/compile-fail/proc-macro/attributes-included.rs b/src/test/ui/proc-macro/attributes-included.rs
index e129711129a..e129711129a 100644
--- a/src/test/compile-fail/proc-macro/attributes-included.rs
+++ b/src/test/ui/proc-macro/attributes-included.rs
diff --git a/src/test/ui/proc-macro/attributes-included.stderr b/src/test/ui/proc-macro/attributes-included.stderr
new file mode 100644
index 00000000000..e7eeccc01f2
--- /dev/null
+++ b/src/test/ui/proc-macro/attributes-included.stderr
@@ -0,0 +1,13 @@
+warning: unused variable: `a`
+  --> $DIR/attributes-included.rs:27:9
+   |
+LL |     let a: i32 = "foo"; //~ WARN: unused variable
+   |         ^ help: consider using `_a` instead
+   |
+note: lint level defined here
+  --> $DIR/attributes-included.rs:14:9
+   |
+LL | #![warn(unused)]
+   |         ^^^^^^
+   = note: #[warn(unused_variables)] implied by #[warn(unused)]
+
diff --git a/src/test/compile-fail/proc-macro/auxiliary/attr-stmt-expr.rs b/src/test/ui/proc-macro/auxiliary/attr-stmt-expr.rs
index 4cfeec2f8a6..4cfeec2f8a6 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/attr-stmt-expr.rs
+++ b/src/test/ui/proc-macro/auxiliary/attr-stmt-expr.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/attribute-with-error.rs b/src/test/ui/proc-macro/auxiliary/attribute-with-error.rs
index 14284092669..14284092669 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/attribute-with-error.rs
+++ b/src/test/ui/proc-macro/auxiliary/attribute-with-error.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/attributes-included.rs b/src/test/ui/proc-macro/auxiliary/attributes-included.rs
index a1f4209662d..a1f4209662d 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/attributes-included.rs
+++ b/src/test/ui/proc-macro/auxiliary/attributes-included.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/bang_proc_macro2.rs b/src/test/ui/proc-macro/auxiliary/bang_proc_macro2.rs
index 3f0a4574367..3f0a4574367 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/bang_proc_macro2.rs
+++ b/src/test/ui/proc-macro/auxiliary/bang_proc_macro2.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-a-b.rs b/src/test/ui/proc-macro/auxiliary/derive-a-b.rs
index cd8750bc89c..cd8750bc89c 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-a-b.rs
+++ b/src/test/ui/proc-macro/auxiliary/derive-a-b.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-a.rs b/src/test/ui/proc-macro/auxiliary/derive-a.rs
index 53b2c23e5d7..53b2c23e5d7 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-a.rs
+++ b/src/test/ui/proc-macro/auxiliary/derive-a.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-b.rs b/src/test/ui/proc-macro/auxiliary/derive-b.rs
index 5787546fb1e..5787546fb1e 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-b.rs
+++ b/src/test/ui/proc-macro/auxiliary/derive-b.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-bad.rs b/src/test/ui/proc-macro/auxiliary/derive-bad.rs
index b2ded05eb51..b2ded05eb51 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-bad.rs
+++ b/src/test/ui/proc-macro/auxiliary/derive-bad.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-unstable-2.rs b/src/test/ui/proc-macro/auxiliary/derive-unstable-2.rs
index 2d492d341eb..2d492d341eb 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-unstable-2.rs
+++ b/src/test/ui/proc-macro/auxiliary/derive-unstable-2.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/derive-unstable.rs b/src/test/ui/proc-macro/auxiliary/derive-unstable.rs
index a7b5d1e3e54..a7b5d1e3e54 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/derive-unstable.rs
+++ b/src/test/ui/proc-macro/auxiliary/derive-unstable.rs
diff --git a/src/test/ui-fulldeps/proc-macro/auxiliary/edition-imports-2015.rs b/src/test/ui/proc-macro/auxiliary/edition-imports-2015.rs
index 5bb818f7d23..27c59b805e2 100644
--- a/src/test/ui-fulldeps/proc-macro/auxiliary/edition-imports-2015.rs
+++ b/src/test/ui/proc-macro/auxiliary/edition-imports-2015.rs
@@ -1,4 +1,5 @@
 // edition:2015
+// force-host
 // no-prefer-dynamic
 
 #![crate_type = "proc-macro"]
diff --git a/src/test/compile-fail/proc-macro/auxiliary/issue-41211.rs b/src/test/ui/proc-macro/auxiliary/issue-41211.rs
index 5365e8238e9..5365e8238e9 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/issue-41211.rs
+++ b/src/test/ui/proc-macro/auxiliary/issue-41211.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/issue_38586.rs b/src/test/ui/proc-macro/auxiliary/issue_38586.rs
index e1a7ffaa26c..e1a7ffaa26c 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/issue_38586.rs
+++ b/src/test/ui/proc-macro/auxiliary/issue_38586.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/issue_50493.rs b/src/test/ui/proc-macro/auxiliary/issue_50493.rs
index e71b792a48a..e71b792a48a 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/issue_50493.rs
+++ b/src/test/ui/proc-macro/auxiliary/issue_50493.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/more-gates.rs b/src/test/ui/proc-macro/auxiliary/more-gates.rs
index cc9420e1537..cc9420e1537 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/more-gates.rs
+++ b/src/test/ui/proc-macro/auxiliary/more-gates.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/proc-macro-gates.rs b/src/test/ui/proc-macro/auxiliary/proc-macro-gates.rs
index 7e4b7fe263d..7e4b7fe263d 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/proc-macro-gates.rs
+++ b/src/test/ui/proc-macro/auxiliary/proc-macro-gates.rs
diff --git a/src/test/compile-fail/proc-macro/auxiliary/test-macros.rs b/src/test/ui/proc-macro/auxiliary/test-macros.rs
index 0e4343a90d6..0e4343a90d6 100644
--- a/src/test/compile-fail/proc-macro/auxiliary/test-macros.rs
+++ b/src/test/ui/proc-macro/auxiliary/test-macros.rs
diff --git a/src/test/compile-fail/proc-macro/define-two.rs b/src/test/ui/proc-macro/define-two.rs
index f8c287b6b72..f8c287b6b72 100644
--- a/src/test/compile-fail/proc-macro/define-two.rs
+++ b/src/test/ui/proc-macro/define-two.rs
diff --git a/src/test/ui/proc-macro/define-two.stderr b/src/test/ui/proc-macro/define-two.stderr
new file mode 100644
index 00000000000..1ca2e0a3e3c
--- /dev/null
+++ b/src/test/ui/proc-macro/define-two.stderr
@@ -0,0 +1,14 @@
+error[E0428]: the name `A` is defined multiple times
+  --> $DIR/define-two.rs:25:21
+   |
+LL | #[proc_macro_derive(A)]
+   |                     - previous definition of the macro `A` here
+...
+LL | #[proc_macro_derive(A)] //~ ERROR the name `A` is defined multiple times
+   |                     ^ `A` redefined here
+   |
+   = note: `A` must be defined only once in the macro namespace of this module
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0428`.
diff --git a/src/test/compile-fail/proc-macro/derive-bad.rs b/src/test/ui/proc-macro/derive-bad.rs
index ac27e87ace1..ac27e87ace1 100644
--- a/src/test/compile-fail/proc-macro/derive-bad.rs
+++ b/src/test/ui/proc-macro/derive-bad.rs
diff --git a/src/test/ui/proc-macro/derive-bad.stderr b/src/test/ui/proc-macro/derive-bad.stderr
new file mode 100644
index 00000000000..57e72a07ee1
--- /dev/null
+++ b/src/test/ui/proc-macro/derive-bad.stderr
@@ -0,0 +1,14 @@
+error: expected `:`, found `}`
+  --> $DIR/derive-bad.rs:17:5
+   |
+LL |     A
+   |     ^ expected `:`
+
+error: proc-macro derive produced unparseable tokens
+  --> $DIR/derive-bad.rs:17:5
+   |
+LL |     A
+   |     ^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/compile-fail/proc-macro/derive-still-gated.rs b/src/test/ui/proc-macro/derive-still-gated.rs
index edf5cc7e9ae..edf5cc7e9ae 100644
--- a/src/test/compile-fail/proc-macro/derive-still-gated.rs
+++ b/src/test/ui/proc-macro/derive-still-gated.rs
diff --git a/src/test/ui/proc-macro/derive-still-gated.stderr b/src/test/ui/proc-macro/derive-still-gated.stderr
new file mode 100644
index 00000000000..4e5dd34b004
--- /dev/null
+++ b/src/test/ui/proc-macro/derive-still-gated.stderr
@@ -0,0 +1,11 @@
+error[E0658]: The attribute `derive_A` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642)
+  --> $DIR/derive-still-gated.rs:18:3
+   |
+LL | #[derive_A] //~ ERROR attribute `derive_A` is currently unknown
+   |   ^^^^^^^^
+   |
+   = help: add #![feature(custom_attribute)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui-fulldeps/proc-macro/edition-imports-2018.rs b/src/test/ui/proc-macro/edition-imports-2018.rs
index f8d6bc5e078..f8d6bc5e078 100644
--- a/src/test/ui-fulldeps/proc-macro/edition-imports-2018.rs
+++ b/src/test/ui/proc-macro/edition-imports-2018.rs
diff --git a/src/test/compile-fail/proc-macro/expand-to-unstable-2.rs b/src/test/ui/proc-macro/expand-to-unstable-2.rs
index e4fcbb117a5..e4fcbb117a5 100644
--- a/src/test/compile-fail/proc-macro/expand-to-unstable-2.rs
+++ b/src/test/ui/proc-macro/expand-to-unstable-2.rs
diff --git a/src/test/ui/proc-macro/expand-to-unstable-2.stderr b/src/test/ui/proc-macro/expand-to-unstable-2.stderr
new file mode 100644
index 00000000000..855e9051974
--- /dev/null
+++ b/src/test/ui/proc-macro/expand-to-unstable-2.stderr
@@ -0,0 +1,11 @@
+error[E0658]: unless otherwise specified, attributes with the prefix `rustc_` are reserved for internal compiler diagnostics (see issue #29642)
+  --> $DIR/expand-to-unstable-2.rs:18:10
+   |
+LL | #[derive(Unstable)]
+   |          ^^^^^^^^
+   |
+   = help: add #![feature(rustc_attrs)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/expand-to-unstable.rs b/src/test/ui/proc-macro/expand-to-unstable.rs
index 836e336fc22..836e336fc22 100644
--- a/src/test/compile-fail/proc-macro/expand-to-unstable.rs
+++ b/src/test/ui/proc-macro/expand-to-unstable.rs
diff --git a/src/test/ui/proc-macro/expand-to-unstable.stderr b/src/test/ui/proc-macro/expand-to-unstable.stderr
new file mode 100644
index 00000000000..e851b0e2bc3
--- /dev/null
+++ b/src/test/ui/proc-macro/expand-to-unstable.stderr
@@ -0,0 +1,11 @@
+error[E0658]: use of unstable library feature 'core_intrinsics': intrinsics are unlikely to ever be stabilized, instead they should be used through stabilized interfaces in the rest of the standard library
+  --> $DIR/expand-to-unstable.rs:18:10
+   |
+LL | #[derive(Unstable)]
+   |          ^^^^^^^^
+   |
+   = help: add #![feature(core_intrinsics)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/export-macro.rs b/src/test/ui/proc-macro/export-macro.rs
index d8bb3571c08..d8bb3571c08 100644
--- a/src/test/compile-fail/proc-macro/export-macro.rs
+++ b/src/test/ui/proc-macro/export-macro.rs
diff --git a/src/test/ui/proc-macro/export-macro.stderr b/src/test/ui/proc-macro/export-macro.stderr
new file mode 100644
index 00000000000..f82d5ab5f1c
--- /dev/null
+++ b/src/test/ui/proc-macro/export-macro.stderr
@@ -0,0 +1,10 @@
+error: cannot export macro_rules! macros from a `proc-macro` crate type currently
+  --> $DIR/export-macro.rs:19:1
+   |
+LL | / macro_rules! foo {
+LL | |     ($e:expr) => ($e)
+LL | | }
+   | |_^
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail/proc-macro/exports.rs b/src/test/ui/proc-macro/exports.rs
index 07e5723c1c1..07e5723c1c1 100644
--- a/src/test/compile-fail/proc-macro/exports.rs
+++ b/src/test/ui/proc-macro/exports.rs
diff --git a/src/test/ui/proc-macro/exports.stderr b/src/test/ui/proc-macro/exports.stderr
new file mode 100644
index 00000000000..3637d0fbd83
--- /dev/null
+++ b/src/test/ui/proc-macro/exports.stderr
@@ -0,0 +1,26 @@
+error: `proc-macro` crate types cannot export any items other than functions tagged with `#[proc_macro_derive]` currently
+  --> $DIR/exports.rs:17:1
+   |
+LL | pub fn a() {} //~ ERROR: cannot export any items
+   | ^^^^^^^^^^^^^
+
+error: `proc-macro` crate types cannot export any items other than functions tagged with `#[proc_macro_derive]` currently
+  --> $DIR/exports.rs:18:1
+   |
+LL | pub struct B; //~ ERROR: cannot export any items
+   | ^^^^^^^^^^^^^
+
+error: `proc-macro` crate types cannot export any items other than functions tagged with `#[proc_macro_derive]` currently
+  --> $DIR/exports.rs:19:1
+   |
+LL | pub enum C {} //~ ERROR: cannot export any items
+   | ^^^^^^^^^^^^^
+
+error: `proc-macro` crate types cannot export any items other than functions tagged with `#[proc_macro_derive]` currently
+  --> $DIR/exports.rs:20:1
+   |
+LL | pub mod d {} //~ ERROR: cannot export any items
+   | ^^^^^^^^^^^^
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/compile-fail/proc-macro/illegal-proc-macro-derive-use.rs b/src/test/ui/proc-macro/illegal-proc-macro-derive-use.rs
index f37980c5e0f..f37980c5e0f 100644
--- a/src/test/compile-fail/proc-macro/illegal-proc-macro-derive-use.rs
+++ b/src/test/ui/proc-macro/illegal-proc-macro-derive-use.rs
diff --git a/src/test/ui/proc-macro/illegal-proc-macro-derive-use.stderr b/src/test/ui/proc-macro/illegal-proc-macro-derive-use.stderr
new file mode 100644
index 00000000000..715ff0e20a9
--- /dev/null
+++ b/src/test/ui/proc-macro/illegal-proc-macro-derive-use.stderr
@@ -0,0 +1,14 @@
+error: the `#[proc_macro_derive]` attribute is only usable with crates of the `proc-macro` crate type
+  --> $DIR/illegal-proc-macro-derive-use.rs:13:1
+   |
+LL | #[proc_macro_derive(Foo)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: the `#[proc_macro_derive]` attribute may only be used on bare functions
+  --> $DIR/illegal-proc-macro-derive-use.rs:20:1
+   |
+LL | #[proc_macro_derive(Foo)]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
diff --git a/src/test/compile-fail/proc-macro/import.rs b/src/test/ui/proc-macro/import.rs
index fae2439344f..fae2439344f 100644
--- a/src/test/compile-fail/proc-macro/import.rs
+++ b/src/test/ui/proc-macro/import.rs
diff --git a/src/test/ui/proc-macro/import.stderr b/src/test/ui/proc-macro/import.stderr
new file mode 100644
index 00000000000..f3633b21583
--- /dev/null
+++ b/src/test/ui/proc-macro/import.stderr
@@ -0,0 +1,9 @@
+error[E0432]: unresolved import `derive_a::derive_a`
+  --> $DIR/import.rs:18:5
+   |
+LL | use derive_a::derive_a;
+   |     ^^^^^^^^^^^^^^^^^^ no `derive_a` in the root
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0432`.
diff --git a/src/test/compile-fail/proc-macro/issue-37788.rs b/src/test/ui/proc-macro/issue-37788.rs
index 691c2805801..691c2805801 100644
--- a/src/test/compile-fail/proc-macro/issue-37788.rs
+++ b/src/test/ui/proc-macro/issue-37788.rs
diff --git a/src/test/ui/proc-macro/issue-37788.stderr b/src/test/ui/proc-macro/issue-37788.stderr
new file mode 100644
index 00000000000..f5ddf9ba6b8
--- /dev/null
+++ b/src/test/ui/proc-macro/issue-37788.stderr
@@ -0,0 +1,17 @@
+error[E0308]: mismatched types
+  --> $DIR/issue-37788.rs:18:5
+   |
+LL | fn main() {
+   |           - expected `()` because of default return type
+LL |     // Test that constructing the `visible_parent_map` (in `cstore_impl.rs`) does not ICE.
+LL |     std::cell::Cell::new(0) //~ ERROR mismatched types
+   |     ^^^^^^^^^^^^^^^^^^^^^^^- help: try adding a semicolon: `;`
+   |     |
+   |     expected (), found struct `std::cell::Cell`
+   |
+   = note: expected type `()`
+              found type `std::cell::Cell<{integer}>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/compile-fail/proc-macro/issue-38586.rs b/src/test/ui/proc-macro/issue-38586.rs
index 649220ac401..649220ac401 100644
--- a/src/test/compile-fail/proc-macro/issue-38586.rs
+++ b/src/test/ui/proc-macro/issue-38586.rs
diff --git a/src/test/ui/proc-macro/issue-38586.stderr b/src/test/ui/proc-macro/issue-38586.stderr
new file mode 100644
index 00000000000..6ba2c0b269f
--- /dev/null
+++ b/src/test/ui/proc-macro/issue-38586.stderr
@@ -0,0 +1,9 @@
+error[E0425]: cannot find value `foo` in this scope
+  --> $DIR/issue-38586.rs:16:10
+   |
+LL | #[derive(A)] //~ ERROR `foo`
+   |          ^ not found in this scope
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/compile-fail/proc-macro/issue-41211.rs b/src/test/ui/proc-macro/issue-41211.rs
index e0922c452b5..e0922c452b5 100644
--- a/src/test/compile-fail/proc-macro/issue-41211.rs
+++ b/src/test/ui/proc-macro/issue-41211.rs
diff --git a/src/test/ui/proc-macro/issue-41211.stderr b/src/test/ui/proc-macro/issue-41211.stderr
new file mode 100644
index 00000000000..ba5fad432b7
--- /dev/null
+++ b/src/test/ui/proc-macro/issue-41211.stderr
@@ -0,0 +1,11 @@
+error[E0658]: The attribute `emit_unchanged` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642)
+  --> $DIR/issue-41211.rs:18:4
+   |
+LL | #![emit_unchanged]
+   |    ^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(custom_attribute)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/issue-50493.rs b/src/test/ui/proc-macro/issue-50493.rs
index 635da570497..635da570497 100644
--- a/src/test/compile-fail/proc-macro/issue-50493.rs
+++ b/src/test/ui/proc-macro/issue-50493.rs
diff --git a/src/test/ui/proc-macro/issue-50493.stderr b/src/test/ui/proc-macro/issue-50493.stderr
new file mode 100644
index 00000000000..3dcb5265535
--- /dev/null
+++ b/src/test/ui/proc-macro/issue-50493.stderr
@@ -0,0 +1,15 @@
+error: visibilities can only be restricted to ancestor modules
+  --> $DIR/issue-50493.rs:18:12
+   |
+LL |     pub(in restricted) field: usize, //~ visibilities can only be restricted to ancestor modules
+   |            ^^^^^^^^^^
+
+error[E0616]: field `field` of struct `Restricted` is private
+  --> $DIR/issue-50493.rs:16:10
+   |
+LL | #[derive(Derive)] //~ ERROR field `field` of struct `Restricted` is private
+   |          ^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0616`.
diff --git a/src/test/compile-fail/proc-macro/item-error.rs b/src/test/ui/proc-macro/item-error.rs
index 4133e75e3a6..4133e75e3a6 100644
--- a/src/test/compile-fail/proc-macro/item-error.rs
+++ b/src/test/ui/proc-macro/item-error.rs
diff --git a/src/test/ui/proc-macro/item-error.stderr b/src/test/ui/proc-macro/item-error.stderr
new file mode 100644
index 00000000000..d1932868797
--- /dev/null
+++ b/src/test/ui/proc-macro/item-error.stderr
@@ -0,0 +1,9 @@
+error[E0106]: missing lifetime specifier
+  --> $DIR/item-error.rs:20:8
+   |
+LL |     a: &u64
+   |        ^ expected lifetime parameter
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0106`.
diff --git a/src/test/compile-fail/proc-macro/lints_in_proc_macros.rs b/src/test/ui/proc-macro/lints_in_proc_macros.rs
index d49c6120271..d49c6120271 100644
--- a/src/test/compile-fail/proc-macro/lints_in_proc_macros.rs
+++ b/src/test/ui/proc-macro/lints_in_proc_macros.rs
diff --git a/src/test/ui/proc-macro/lints_in_proc_macros.stderr b/src/test/ui/proc-macro/lints_in_proc_macros.stderr
new file mode 100644
index 00000000000..42d9a307226
--- /dev/null
+++ b/src/test/ui/proc-macro/lints_in_proc_macros.stderr
@@ -0,0 +1,9 @@
+error[E0425]: cannot find value `foobar2` in this scope
+  --> $DIR/lints_in_proc_macros.rs:22:5
+   |
+LL |     bang_proc_macro2!();
+   |     ^^^^^^^^^^^^^^^^^^^^ did you mean `foobar`?
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/compile-fail/proc-macro/macros-in-extern.rs b/src/test/ui/proc-macro/macros-in-extern.rs
index 43d7077d022..43d7077d022 100644
--- a/src/test/compile-fail/proc-macro/macros-in-extern.rs
+++ b/src/test/ui/proc-macro/macros-in-extern.rs
diff --git a/src/test/ui/proc-macro/macros-in-extern.stderr b/src/test/ui/proc-macro/macros-in-extern.stderr
new file mode 100644
index 00000000000..5c51de45801
--- /dev/null
+++ b/src/test/ui/proc-macro/macros-in-extern.stderr
@@ -0,0 +1,27 @@
+error[E0658]: macro invocations in `extern {}` blocks are experimental (see issue #49476)
+  --> $DIR/macros-in-extern.rs:25:5
+   |
+LL |     #[no_output]
+   |     ^^^^^^^^^^^^
+   |
+   = help: add #![feature(macros_in_extern)] to the crate attributes to enable
+
+error[E0658]: macro invocations in `extern {}` blocks are experimental (see issue #49476)
+  --> $DIR/macros-in-extern.rs:29:5
+   |
+LL |     #[nop_attr]
+   |     ^^^^^^^^^^^
+   |
+   = help: add #![feature(macros_in_extern)] to the crate attributes to enable
+
+error[E0658]: macro invocations in `extern {}` blocks are experimental (see issue #49476)
+  --> $DIR/macros-in-extern.rs:33:5
+   |
+LL |     emit_input!(fn rust_dbg_extern_identity_u32(arg: u32) -> u32;);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(macros_in_extern)] to the crate attributes to enable
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/more-gates.rs b/src/test/ui/proc-macro/more-gates.rs
index 4c038179544..4c038179544 100644
--- a/src/test/compile-fail/proc-macro/more-gates.rs
+++ b/src/test/ui/proc-macro/more-gates.rs
diff --git a/src/test/ui/proc-macro/more-gates.stderr b/src/test/ui/proc-macro/more-gates.stderr
new file mode 100644
index 00000000000..d5f30d5817c
--- /dev/null
+++ b/src/test/ui/proc-macro/more-gates.stderr
@@ -0,0 +1,43 @@
+error[E0658]: procedural macros cannot expand to macro definitions (see issue #54727)
+  --> $DIR/more-gates.rs:17:1
+   |
+LL | #[attr2mac1]
+   | ^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot expand to macro definitions (see issue #54727)
+  --> $DIR/more-gates.rs:20:1
+   |
+LL | #[attr2mac2]
+   | ^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot expand to macro definitions (see issue #54727)
+  --> $DIR/more-gates.rs:24:1
+   |
+LL | mac2mac1!(); //~ ERROR: cannot expand to macro definitions
+   | ^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot expand to macro definitions (see issue #54727)
+  --> $DIR/more-gates.rs:25:1
+   |
+LL | mac2mac2!(); //~ ERROR: cannot expand to macro definitions
+   | ^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot expand to macro definitions (see issue #54727)
+  --> $DIR/more-gates.rs:27:1
+   |
+LL | tricky!();
+   | ^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error: aborting due to 5 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/no-macro-use-attr.rs b/src/test/ui/proc-macro/no-macro-use-attr.rs
index ab05ca28386..ab05ca28386 100644
--- a/src/test/compile-fail/proc-macro/no-macro-use-attr.rs
+++ b/src/test/ui/proc-macro/no-macro-use-attr.rs
diff --git a/src/test/ui/proc-macro/no-macro-use-attr.stderr b/src/test/ui/proc-macro/no-macro-use-attr.stderr
new file mode 100644
index 00000000000..447cb26f056
--- /dev/null
+++ b/src/test/ui/proc-macro/no-macro-use-attr.stderr
@@ -0,0 +1,20 @@
+warning: unused extern crate
+  --> $DIR/no-macro-use-attr.rs:16:1
+   |
+LL | extern crate derive_a;
+   | ^^^^^^^^^^^^^^^^^^^^^^ help: remove it
+   |
+note: lint level defined here
+  --> $DIR/no-macro-use-attr.rs:14:9
+   |
+LL | #![warn(unused_extern_crates)]
+   |         ^^^^^^^^^^^^^^^^^^^^
+
+error: compilation successful
+  --> $DIR/no-macro-use-attr.rs:20:1
+   |
+LL | fn main() {} //~ ERROR compilation successful
+   | ^^^^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail/proc-macro/proc-macro-attributes.rs b/src/test/ui/proc-macro/proc-macro-attributes.rs
index 6e52411500e..6e52411500e 100644
--- a/src/test/compile-fail/proc-macro/proc-macro-attributes.rs
+++ b/src/test/ui/proc-macro/proc-macro-attributes.rs
diff --git a/src/test/ui/proc-macro/proc-macro-attributes.stderr b/src/test/ui/proc-macro/proc-macro-attributes.stderr
new file mode 100644
index 00000000000..a1289c6356a
--- /dev/null
+++ b/src/test/ui/proc-macro/proc-macro-attributes.stderr
@@ -0,0 +1,11 @@
+error[E0658]: The attribute `C` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642)
+  --> $DIR/proc-macro-attributes.rs:17:3
+   |
+LL | #[C] //~ ERROR attribute `C` is currently unknown to the compiler
+   |   ^
+   |
+   = help: add #![feature(custom_attribute)] to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/proc-macro-gates.rs b/src/test/ui/proc-macro/proc-macro-gates.rs
index 5049a474dd2..5049a474dd2 100644
--- a/src/test/compile-fail/proc-macro/proc-macro-gates.rs
+++ b/src/test/ui/proc-macro/proc-macro-gates.rs
diff --git a/src/test/ui/proc-macro/proc-macro-gates.stderr b/src/test/ui/proc-macro/proc-macro-gates.stderr
new file mode 100644
index 00000000000..d5c85d97b54
--- /dev/null
+++ b/src/test/ui/proc-macro/proc-macro-gates.stderr
@@ -0,0 +1,137 @@
+error[E0658]: non-builtin inner attributes are unstable (see issue #54726)
+  --> $DIR/proc-macro-gates.rs:21:5
+   |
+LL |     #![a] //~ ERROR: non-builtin inner attributes are unstable
+   |     ^^^^^
+   |
+   = help: add #![feature(custom_inner_attributes)] to the crate attributes to enable
+
+error[E0658]: non-builtin inner attributes are unstable (see issue #54726)
+  --> $DIR/proc-macro-gates.rs:28:5
+   |
+LL |     #![a] //~ ERROR: custom attributes cannot be applied to modules
+   |     ^^^^^
+   |
+   = help: add #![feature(custom_inner_attributes)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to modules (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:24:1
+   |
+LL | #[a] //~ ERROR: custom attributes cannot be applied to modules
+   | ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to modules (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:28:5
+   |
+LL |     #![a] //~ ERROR: custom attributes cannot be applied to modules
+   |     ^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error: custom attribute invocations must be of the form #[foo] or #[foo(..)], the macro name must only be followed by a delimiter token
+  --> $DIR/proc-macro-gates.rs:32:1
+   |
+LL | #[a = y] //~ ERROR: must only be followed by a delimiter token
+   | ^^^^^^^^
+
+error[E0658]: custom attributes cannot be applied to statements (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:41:5
+   |
+LL |     #[a] //~ ERROR: custom attributes cannot be applied to statements
+   |     ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to statements (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:45:5
+   |
+LL |     #[a] //~ ERROR: custom attributes cannot be applied to statements
+   |     ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to statements (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:49:5
+   |
+LL |     #[a] //~ ERROR: custom attributes cannot be applied to statements
+   |     ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to expressions (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:53:14
+   |
+LL |     let _x = #[a] 2; //~ ERROR: custom attributes cannot be applied to expressions
+   |              ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to expressions (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:56:15
+   |
+LL |     let _x = [#[a] 2]; //~ ERROR: custom attributes cannot be applied to expressions
+   |               ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: custom attributes cannot be applied to expressions (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:59:14
+   |
+LL |     let _x = #[a] println!(); //~ ERROR: custom attributes cannot be applied to expressions
+   |              ^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot be expanded to types (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:63:13
+   |
+LL |     let _x: m!(u32) = 3; //~ ERROR: procedural macros cannot be expanded to types
+   |             ^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot be expanded to patterns (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:64:12
+   |
+LL |     if let m!(Some(_x)) = Some(3) {} //~ ERROR: procedural macros cannot be expanded to patterns
+   |            ^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot be expanded to statements (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:66:5
+   |
+LL |     m!(struct S;); //~ ERROR: procedural macros cannot be expanded to statements
+   |     ^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot be expanded to statements (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:67:5
+   |
+LL |     m!(let _x = 3;); //~ ERROR: procedural macros cannot be expanded to statements
+   |     ^^^^^^^^^^^^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot be expanded to expressions (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:69:14
+   |
+LL |     let _x = m!(3); //~ ERROR: procedural macros cannot be expanded to expressions
+   |              ^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error[E0658]: procedural macros cannot be expanded to expressions (see issue #54727)
+  --> $DIR/proc-macro-gates.rs:70:15
+   |
+LL |     let _x = [m!(3)]; //~ ERROR: procedural macros cannot be expanded to expressions
+   |               ^^^^^
+   |
+   = help: add #![feature(proc_macro_hygiene)] to the crate attributes to enable
+
+error: aborting due to 17 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/proc-macro-gates2.rs b/src/test/ui/proc-macro/proc-macro-gates2.rs
index dc182414a1d..dc182414a1d 100644
--- a/src/test/compile-fail/proc-macro/proc-macro-gates2.rs
+++ b/src/test/ui/proc-macro/proc-macro-gates2.rs
diff --git a/src/test/ui/proc-macro/proc-macro-gates2.stderr b/src/test/ui/proc-macro/proc-macro-gates2.stderr
new file mode 100644
index 00000000000..2c0f2b09f06
--- /dev/null
+++ b/src/test/ui/proc-macro/proc-macro-gates2.stderr
@@ -0,0 +1,19 @@
+error[E0658]: The attribute `a` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642)
+  --> $DIR/proc-macro-gates2.rs:23:11
+   |
+LL | fn _test6<#[a] T>() {}
+   |           ^^^^
+   |
+   = help: add #![feature(custom_attribute)] to the crate attributes to enable
+
+error[E0658]: The attribute `a` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642)
+  --> $DIR/proc-macro-gates2.rs:28:9
+   |
+LL |         #[a] //~ ERROR: unknown to the compiler
+   |         ^^^^
+   |
+   = help: add #![feature(custom_attribute)] to the crate attributes to enable
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/compile-fail/proc-macro/pub-at-crate-root.rs b/src/test/ui/proc-macro/pub-at-crate-root.rs
index e995eb549fa..e995eb549fa 100644
--- a/src/test/compile-fail/proc-macro/pub-at-crate-root.rs
+++ b/src/test/ui/proc-macro/pub-at-crate-root.rs
diff --git a/src/test/ui/proc-macro/pub-at-crate-root.stderr b/src/test/ui/proc-macro/pub-at-crate-root.stderr
new file mode 100644
index 00000000000..ba9a8605f1f
--- /dev/null
+++ b/src/test/ui/proc-macro/pub-at-crate-root.stderr
@@ -0,0 +1,32 @@
+error: `proc-macro` crate types cannot export any items other than functions tagged with `#[proc_macro_derive]` currently
+  --> $DIR/pub-at-crate-root.rs:18:1
+   |
+LL | / pub mod a { //~ `proc-macro` crate types cannot export any items
+LL | |     use proc_macro::TokenStream;
+LL | |
+LL | |     #[proc_macro_derive(B)]
+...  |
+LL | |     }
+LL | | }
+   | |_^
+
+error: functions tagged with `#[proc_macro_derive]` must currently reside in the root of the crate
+  --> $DIR/pub-at-crate-root.rs:22:5
+   |
+LL | /     pub fn bar(a: TokenStream) -> TokenStream {
+LL | |     //~^ ERROR: must currently reside in the root of the crate
+LL | |         a
+LL | |     }
+   | |_____^
+
+error: functions tagged with `#[proc_macro_derive]` must be `pub`
+  --> $DIR/pub-at-crate-root.rs:29:1
+   |
+LL | / fn bar(a: proc_macro::TokenStream) -> proc_macro::TokenStream {
+LL | | //~^ ERROR: functions tagged with `#[proc_macro_derive]` must be `pub`
+LL | |     a
+LL | | }
+   | |_^
+
+error: aborting due to 3 previous errors
+
diff --git a/src/test/compile-fail/proc-macro/shadow-builtin.rs b/src/test/ui/proc-macro/shadow-builtin.rs
index a5fcfde1dda..a5fcfde1dda 100644
--- a/src/test/compile-fail/proc-macro/shadow-builtin.rs
+++ b/src/test/ui/proc-macro/shadow-builtin.rs
diff --git a/src/test/ui/proc-macro/shadow-builtin.stderr b/src/test/ui/proc-macro/shadow-builtin.stderr
new file mode 100644
index 00000000000..6d04c907386
--- /dev/null
+++ b/src/test/ui/proc-macro/shadow-builtin.stderr
@@ -0,0 +1,8 @@
+error: cannot override a built-in #[derive] mode
+  --> $DIR/shadow-builtin.rs:20:21
+   |
+LL | #[proc_macro_derive(PartialEq)]
+   |                     ^^^^^^^^^
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail/proc-macro/shadow.rs b/src/test/ui/proc-macro/shadow.rs
index 9bff1c57ae4..9bff1c57ae4 100644
--- a/src/test/compile-fail/proc-macro/shadow.rs
+++ b/src/test/ui/proc-macro/shadow.rs
diff --git a/src/test/ui/proc-macro/shadow.stderr b/src/test/ui/proc-macro/shadow.stderr
new file mode 100644
index 00000000000..847fc73f9e0
--- /dev/null
+++ b/src/test/ui/proc-macro/shadow.stderr
@@ -0,0 +1,18 @@
+error[E0259]: the name `derive_a` is defined multiple times
+  --> $DIR/shadow.rs:16:1
+   |
+LL | extern crate derive_a;
+   | ---------------------- previous import of the extern crate `derive_a` here
+LL | #[macro_use]
+LL | extern crate derive_a; //~ ERROR the name `derive_a` is defined multiple times
+   | ^^^^^^^^^^^^^^^^^^^^^^ `derive_a` reimported here
+   |
+   = note: `derive_a` must be defined only once in the type namespace of this module
+help: you can use `as` to change the binding name of the import
+   |
+LL | extern crate derive_a as other_derive_a; //~ ERROR the name `derive_a` is defined multiple times
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0259`.
diff --git a/src/test/compile-fail/proc-macro/two-crate-types-1.rs b/src/test/ui/proc-macro/two-crate-types-1.rs
index 06bd3f9dd6a..06bd3f9dd6a 100644
--- a/src/test/compile-fail/proc-macro/two-crate-types-1.rs
+++ b/src/test/ui/proc-macro/two-crate-types-1.rs
diff --git a/src/test/ui/proc-macro/two-crate-types-1.stderr b/src/test/ui/proc-macro/two-crate-types-1.stderr
new file mode 100644
index 00000000000..deaba1cf272
--- /dev/null
+++ b/src/test/ui/proc-macro/two-crate-types-1.stderr
@@ -0,0 +1,4 @@
+error: cannot mix `proc-macro` crate type with others
+
+error: aborting due to previous error
+
diff --git a/src/test/compile-fail/proc-macro/two-crate-types-2.rs b/src/test/ui/proc-macro/two-crate-types-2.rs
index dd5e5acbec8..dd5e5acbec8 100644
--- a/src/test/compile-fail/proc-macro/two-crate-types-2.rs
+++ b/src/test/ui/proc-macro/two-crate-types-2.rs
diff --git a/src/test/ui/proc-macro/two-crate-types-2.stderr b/src/test/ui/proc-macro/two-crate-types-2.stderr
new file mode 100644
index 00000000000..deaba1cf272
--- /dev/null
+++ b/src/test/ui/proc-macro/two-crate-types-2.stderr
@@ -0,0 +1,4 @@
+error: cannot mix `proc-macro` crate type with others
+
+error: aborting due to previous error
+
diff --git a/src/tools/tidy/src/features.rs b/src/tools/tidy/src/features.rs
index b0bd5ba8dbd..ff8fa2f920e 100644
--- a/src/tools/tidy/src/features.rs
+++ b/src/tools/tidy/src/features.rs
@@ -61,12 +61,9 @@ pub fn check(path: &Path, bad: &mut bool, quiet: bool) {
 
     let mut contents = String::new();
 
-    super::walk_many(&[&path.join("test/ui-fulldeps"),
-                       &path.join("test/ui"),
-                       &path.join("test/compile-fail"),
-                       &path.join("test/compile-fail-fulldeps"),
-                       &path.join("test/parse-fail"),
-                       &path.join("test/ui"),],
+    super::walk_many(&[&path.join("test/ui"),
+                       &path.join("test/ui-fulldeps"),
+                       &path.join("test/compile-fail")],
                      &mut |path| super::filter_dirs(path),
                      &mut |file| {
         let filename = file.file_name().unwrap().to_string_lossy();