about summary refs log tree commit diff
diff options
context:
space:
mode:
authormejrs <59372212+mejrs@users.noreply.github.com>2025-05-03 17:22:52 +0200
committermejrs <59372212+mejrs@users.noreply.github.com>2025-05-03 17:22:52 +0200
commit9a574b0871746808d292f4f945b7854342118f35 (patch)
treef9a96f01f1f862030e085761a8f88528797808c3
parent6e23095adf9209614a45f7f75fea36dad7b92afb (diff)
downloadrust-9a574b0871746808d292f4f945b7854342118f35.tar.gz
rust-9a574b0871746808d292f4f945b7854342118f35.zip
Move some tests out of tests/ui
-rw-r--r--src/tools/tidy/src/issues.txt10
-rw-r--r--tests/ui/attributes/no_link/auxiliary/empty-crate-1.rs (renamed from tests/ui/auxiliary/issue-13560-1.rs)2
-rw-r--r--tests/ui/attributes/no_link/auxiliary/empty-crate-2.rs (renamed from tests/ui/auxiliary/issue-13560-2.rs)0
-rw-r--r--tests/ui/attributes/no_link/auxiliary/no_link-crate.rs6
-rw-r--r--tests/ui/attributes/no_link/multiple-crates-and-no_link.rs17
-rw-r--r--tests/ui/attributes/no_link/no-link-unknown-crate.rs19
-rw-r--r--tests/ui/attributes/no_link/no-link-unknown-crate.stderr (renamed from tests/ui/no-link-unknown-crate.stderr)2
-rw-r--r--tests/ui/auxiliary/inner_static.rs51
-rw-r--r--tests/ui/auxiliary/issue-13560-3.rs6
-rw-r--r--tests/ui/cross-crate/auxiliary/inline-cross-crate.rs (renamed from tests/ui/auxiliary/issue-18502.rs)0
-rw-r--r--tests/ui/cross-crate/auxiliary/llvm-miscompile-MarkValue-MaybeLive.rs (renamed from tests/ui/auxiliary/issue-76387.rs)0
-rw-r--r--tests/ui/cross-crate/inline-cross-crate.rs12
-rw-r--r--tests/ui/cross-crate/llvm-miscompile-MarkValue-MaybeLive.rs22
-rw-r--r--tests/ui/impl-privacy-xc-1.rs10
-rw-r--r--tests/ui/inner-static.rs14
-rw-r--r--tests/ui/issue-13560.rs13
-rw-r--r--tests/ui/issue-18502.rs8
-rw-r--r--tests/ui/issue-24106.rs8
-rw-r--r--tests/ui/issue-76387-llvm-miscompile.rs21
-rw-r--r--tests/ui/macros/auxiliary/fancy-panic.rs (renamed from tests/ui/auxiliary/fancy-panic.rs)0
-rw-r--r--tests/ui/macros/non-fmt-panic.fixed (renamed from tests/ui/non-fmt-panic.fixed)6
-rw-r--r--tests/ui/macros/non-fmt-panic.rs (renamed from tests/ui/non-fmt-panic.rs)6
-rw-r--r--tests/ui/macros/non-fmt-panic.stderr (renamed from tests/ui/non-fmt-panic.stderr)70
-rw-r--r--tests/ui/no-link-unknown-crate.rs4
-rw-r--r--tests/ui/pattern/auxiliary/cross-crate-enum-pattern.rs (renamed from tests/ui/auxiliary/issue-24106.rs)0
-rw-r--r--tests/ui/pattern/cross-crate-enum-pattern.rs13
-rw-r--r--tests/ui/privacy/auxiliary/impl-privacy-cross-crate-1.rs (renamed from tests/ui/auxiliary/impl_privacy_xc_1.rs)0
-rw-r--r--tests/ui/privacy/auxiliary/impl-privacy-cross-crate-2.rs (renamed from tests/ui/privacy/auxiliary/impl_privacy_xc_2.rs)0
-rw-r--r--tests/ui/privacy/impl-privacy-cross-crate-1.rs10
-rw-r--r--tests/ui/privacy/impl-privacy-cross-crate-2.rs10
-rw-r--r--tests/ui/privacy/impl-privacy-xc-2.rs10
-rw-r--r--tests/ui/statics/auxiliary/inner_static.rs67
-rw-r--r--tests/ui/statics/inner-static.rs30
33 files changed, 254 insertions, 193 deletions
diff --git a/src/tools/tidy/src/issues.txt b/src/tools/tidy/src/issues.txt
index e6b5aa59622..2f0158609e0 100644
--- a/src/tools/tidy/src/issues.txt
+++ b/src/tools/tidy/src/issues.txt
@@ -276,13 +276,7 @@ ui/auto-traits/issue-23080-2.rs
 ui/auto-traits/issue-23080.rs
 ui/auto-traits/issue-83857-ub.rs
 ui/auto-traits/issue-84075.rs
-ui/auxiliary/issue-13560-1.rs
-ui/auxiliary/issue-13560-2.rs
-ui/auxiliary/issue-13560-3.rs
 ui/auxiliary/issue-16822.rs
-ui/auxiliary/issue-18502.rs
-ui/auxiliary/issue-24106.rs
-ui/auxiliary/issue-76387.rs
 ui/bench/issue-32062.rs
 ui/binding/issue-40402-1.rs
 ui/binding/issue-40402-2.rs
@@ -1378,12 +1372,8 @@ ui/intrinsics/issue-28575.rs
 ui/intrinsics/issue-84297-reifying-copy.rs
 ui/invalid/issue-114435-layout-type-err.rs
 ui/issue-11881.rs
-ui/issue-13560.rs
 ui/issue-15924.rs
 ui/issue-16822.rs
-ui/issue-18502.rs
-ui/issue-24106.rs
-ui/issue-76387-llvm-miscompile.rs
 ui/issues-71798.rs
 ui/issues/auxiliary/issue-11224.rs
 ui/issues/auxiliary/issue-11508.rs
diff --git a/tests/ui/auxiliary/issue-13560-1.rs b/tests/ui/attributes/no_link/auxiliary/empty-crate-1.rs
index baca1567e1b..8bd2b3353b8 100644
--- a/tests/ui/auxiliary/issue-13560-1.rs
+++ b/tests/ui/attributes/no_link/auxiliary/empty-crate-1.rs
@@ -1,3 +1 @@
-//@ no-prefer-dynamic
-
 #![crate_type = "dylib"]
diff --git a/tests/ui/auxiliary/issue-13560-2.rs b/tests/ui/attributes/no_link/auxiliary/empty-crate-2.rs
index 1adaf2b0379..1adaf2b0379 100644
--- a/tests/ui/auxiliary/issue-13560-2.rs
+++ b/tests/ui/attributes/no_link/auxiliary/empty-crate-2.rs
diff --git a/tests/ui/attributes/no_link/auxiliary/no_link-crate.rs b/tests/ui/attributes/no_link/auxiliary/no_link-crate.rs
new file mode 100644
index 00000000000..1c3af5431cc
--- /dev/null
+++ b/tests/ui/attributes/no_link/auxiliary/no_link-crate.rs
@@ -0,0 +1,6 @@
+//@ no-prefer-dynamic
+
+#![crate_type = "rlib"]
+
+#[macro_use] #[no_link] extern crate empty_crate_1 as t1;
+#[macro_use] extern crate empty_crate_2 as t2;
diff --git a/tests/ui/attributes/no_link/multiple-crates-and-no_link.rs b/tests/ui/attributes/no_link/multiple-crates-and-no_link.rs
new file mode 100644
index 00000000000..0e6f1deb217
--- /dev/null
+++ b/tests/ui/attributes/no_link/multiple-crates-and-no_link.rs
@@ -0,0 +1,17 @@
+//! Regression test for #13560. Previously, it was possible to
+//! trigger an assert in crate numbering if a series of crates
+//! being loaded included a "syntax-only" extern crate.
+//! But it appears we don't mess with crate numbering for
+//! `#[no_link]` crates anymore, so this test doesn't seem
+//! to test anything now.
+
+//@ run-pass
+//@ needs-crate-type: dylib
+//@ aux-build:empty-crate-1.rs
+//@ aux-build:empty-crate-2.rs
+//@ aux-build:no_link-crate.rs
+
+extern crate empty_crate_2 as t2;
+extern crate no_link_crate as t3;
+
+fn main() {}
diff --git a/tests/ui/attributes/no_link/no-link-unknown-crate.rs b/tests/ui/attributes/no_link/no-link-unknown-crate.rs
new file mode 100644
index 00000000000..3a91fa27ee3
--- /dev/null
+++ b/tests/ui/attributes/no_link/no-link-unknown-crate.rs
@@ -0,0 +1,19 @@
+//! Unfortunately the development of `#[phase]` and `#[no_link]`
+//! predates Zulip, and thus has been lost in the sands of time.
+//! Understanding the true nature of this test has been left as
+//! an exercise for the reader.
+//!
+//! But we guess from the git history that originally this
+//! test was supposed to check that we error if we can't find
+//! an extern crate annotated with `#[phase(syntax)]`,
+//! see `macro-crate-unknown-crate.rs` in
+//! <https://github.com/rust-lang/rust/pull/11151>. Later, we changed
+//! `#[phase]` to `#![feature(plugin)]` and added a `#[no_link]`.
+//!
+//! I suppose that this now tests that we still error if we can't
+//! find a `#[no_link]` extern crate?
+
+#[no_link]
+extern crate doesnt_exist; //~ ERROR can't find crate
+
+fn main() {}
diff --git a/tests/ui/no-link-unknown-crate.stderr b/tests/ui/attributes/no_link/no-link-unknown-crate.stderr
index edc248db09e..999b013866c 100644
--- a/tests/ui/no-link-unknown-crate.stderr
+++ b/tests/ui/attributes/no_link/no-link-unknown-crate.stderr
@@ -1,5 +1,5 @@
 error[E0463]: can't find crate for `doesnt_exist`
-  --> $DIR/no-link-unknown-crate.rs:2:1
+  --> $DIR/no-link-unknown-crate.rs:17:1
    |
 LL | extern crate doesnt_exist;
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
diff --git a/tests/ui/auxiliary/inner_static.rs b/tests/ui/auxiliary/inner_static.rs
deleted file mode 100644
index 42dcd379d41..00000000000
--- a/tests/ui/auxiliary/inner_static.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-pub struct A<T> { pub v: T }
-pub struct B<T> { pub v: T }
-
-pub mod test {
-    pub struct A<T> { pub v: T }
-
-    impl<T> A<T> {
-        pub fn foo(&self) -> isize {
-            static a: isize = 5;
-            return a
-        }
-
-        pub fn bar(&self) -> isize {
-            static a: isize = 6;
-            return a;
-        }
-    }
-}
-
-impl<T> A<T> {
-    pub fn foo(&self) -> isize {
-        static a: isize = 1;
-        return a
-    }
-
-    pub fn bar(&self) -> isize {
-        static a: isize = 2;
-        return a;
-    }
-}
-
-impl<T> B<T> {
-    pub fn foo(&self) -> isize {
-        static a: isize = 3;
-        return a
-    }
-
-    pub fn bar(&self) -> isize {
-        static a: isize = 4;
-        return a;
-    }
-}
-
-pub fn foo() -> isize {
-    let a = A { v: () };
-    let b = B { v: () };
-    let c = test::A { v: () };
-    return a.foo() + a.bar() +
-           b.foo() + b.bar() +
-           c.foo() + c.bar();
-}
diff --git a/tests/ui/auxiliary/issue-13560-3.rs b/tests/ui/auxiliary/issue-13560-3.rs
deleted file mode 100644
index 4aab2ddc73a..00000000000
--- a/tests/ui/auxiliary/issue-13560-3.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-//@ no-prefer-dynamic
-
-#![crate_type = "rlib"]
-
-#[macro_use] #[no_link] extern crate issue_13560_1 as t1;
-#[macro_use] extern crate issue_13560_2 as t2;
diff --git a/tests/ui/auxiliary/issue-18502.rs b/tests/ui/cross-crate/auxiliary/inline-cross-crate.rs
index 4d4230607aa..4d4230607aa 100644
--- a/tests/ui/auxiliary/issue-18502.rs
+++ b/tests/ui/cross-crate/auxiliary/inline-cross-crate.rs
diff --git a/tests/ui/auxiliary/issue-76387.rs b/tests/ui/cross-crate/auxiliary/llvm-miscompile-MarkValue-MaybeLive.rs
index d540bceff93..d540bceff93 100644
--- a/tests/ui/auxiliary/issue-76387.rs
+++ b/tests/ui/cross-crate/auxiliary/llvm-miscompile-MarkValue-MaybeLive.rs
diff --git a/tests/ui/cross-crate/inline-cross-crate.rs b/tests/ui/cross-crate/inline-cross-crate.rs
new file mode 100644
index 00000000000..273aa8f8f0d
--- /dev/null
+++ b/tests/ui/cross-crate/inline-cross-crate.rs
@@ -0,0 +1,12 @@
+//! Dpn't ice on using an inlined function from another crate
+//! See <https://github.com/rust-lang/rust/issues/18502> and
+//! <https://github.com/rust-lang/rust/issues/18501>
+
+//@ run-pass
+//@ aux-build:inline-cross-crate.rs
+
+extern crate inline_cross_crate as fmt;
+
+fn main() {
+    ::fmt::baz();
+}
diff --git a/tests/ui/cross-crate/llvm-miscompile-MarkValue-MaybeLive.rs b/tests/ui/cross-crate/llvm-miscompile-MarkValue-MaybeLive.rs
new file mode 100644
index 00000000000..95d022ddd96
--- /dev/null
+++ b/tests/ui/cross-crate/llvm-miscompile-MarkValue-MaybeLive.rs
@@ -0,0 +1,22 @@
+//! Regression test for <https://github.com/rust-lang/rust/issues/76387>
+//! Tests that LLVM doesn't miscompile this
+//! See upstream fix: <https://reviews.llvm.org/D88529>.
+
+//@ compile-flags: -C opt-level=3
+//@ aux-build: llvm-miscompile-MarkValue-MaybeLive.rs
+//@ run-pass
+
+extern crate llvm_miscompile_MarkValue_MaybeLive;
+
+use llvm_miscompile_MarkValue_MaybeLive::FatPtr;
+
+fn print(data: &[u8]) {
+    println!("{:#?}", data);
+}
+
+fn main() {
+    let ptr = FatPtr::new(20);
+    let data = unsafe { std::slice::from_raw_parts(ptr.as_ptr(), ptr.len()) };
+
+    print(data);
+}
diff --git a/tests/ui/impl-privacy-xc-1.rs b/tests/ui/impl-privacy-xc-1.rs
deleted file mode 100644
index 6a10986739c..00000000000
--- a/tests/ui/impl-privacy-xc-1.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//@ run-pass
-//@ aux-build:impl_privacy_xc_1.rs
-
-
-extern crate impl_privacy_xc_1;
-
-pub fn main() {
-    let fish = impl_privacy_xc_1::Fish { x: 1 };
-    fish.swim();
-}
diff --git a/tests/ui/inner-static.rs b/tests/ui/inner-static.rs
deleted file mode 100644
index 9455ec5712f..00000000000
--- a/tests/ui/inner-static.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-//@ run-pass
-//@ aux-build:inner_static.rs
-
-
-extern crate inner_static;
-
-pub fn main() {
-    let a = inner_static::A::<()> { v: () };
-    let b = inner_static::B::<()> { v: () };
-    let c = inner_static::test::A::<()> { v: () };
-    assert_eq!(a.bar(), 2);
-    assert_eq!(b.bar(), 4);
-    assert_eq!(c.bar(), 6);
-}
diff --git a/tests/ui/issue-13560.rs b/tests/ui/issue-13560.rs
deleted file mode 100644
index 6174fa9324b..00000000000
--- a/tests/ui/issue-13560.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-//@ run-pass
-//@ ignore-cross-compile (needs dylibs and compiletest doesn't have a more specific header)
-//@ aux-build:issue-13560-1.rs
-//@ aux-build:issue-13560-2.rs
-//@ aux-build:issue-13560-3.rs
-
-// Regression test for issue #13560, the test itself is all in the dependent
-// libraries. The fail which previously failed to compile is the one numbered 3.
-
-extern crate issue_13560_2 as t2;
-extern crate issue_13560_3 as t3;
-
-fn main() {}
diff --git a/tests/ui/issue-18502.rs b/tests/ui/issue-18502.rs
deleted file mode 100644
index 3e2c37ee8aa..00000000000
--- a/tests/ui/issue-18502.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ run-pass
-//@ aux-build:issue-18502.rs
-
-extern crate issue_18502 as fmt;
-
-fn main() {
-    ::fmt::baz();
-}
diff --git a/tests/ui/issue-24106.rs b/tests/ui/issue-24106.rs
deleted file mode 100644
index 4f7b299b12f..00000000000
--- a/tests/ui/issue-24106.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ run-pass
-//@ aux-build:issue-24106.rs
-
-extern crate issue_24106;
-
-fn main() {
-    issue_24106::go::<()>();
-}
diff --git a/tests/ui/issue-76387-llvm-miscompile.rs b/tests/ui/issue-76387-llvm-miscompile.rs
deleted file mode 100644
index d674ebb5eaf..00000000000
--- a/tests/ui/issue-76387-llvm-miscompile.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-//@ compile-flags: -C opt-level=3
-//@ aux-build: issue-76387.rs
-//@ run-pass
-
-// Regression test for issue #76387
-// Tests that LLVM doesn't miscompile this
-
-extern crate issue_76387;
-
-use issue_76387::FatPtr;
-
-fn print(data: &[u8]) {
-    println!("{:#?}", data);
-}
-
-fn main() {
-    let ptr = FatPtr::new(20);
-    let data = unsafe { std::slice::from_raw_parts(ptr.as_ptr(), ptr.len()) };
-
-    print(data);
-}
diff --git a/tests/ui/auxiliary/fancy-panic.rs b/tests/ui/macros/auxiliary/fancy-panic.rs
index 35be93b0590..35be93b0590 100644
--- a/tests/ui/auxiliary/fancy-panic.rs
+++ b/tests/ui/macros/auxiliary/fancy-panic.rs
diff --git a/tests/ui/non-fmt-panic.fixed b/tests/ui/macros/non-fmt-panic.fixed
index fa9a1ad89bd..b102dba1731 100644
--- a/tests/ui/non-fmt-panic.fixed
+++ b/tests/ui/macros/non-fmt-panic.fixed
@@ -1,3 +1,9 @@
+//! The non_fmt_panics lint detects panic!(..) invocations where
+//! the first argument is not a formatting string.
+//!
+//! Also, this test checks that this is not emitted if it originates
+//! in an external macro.
+
 //@ run-rustfix
 //@ rustfix-only-machine-applicable
 //@ build-pass (FIXME(62277): should be check-pass)
diff --git a/tests/ui/non-fmt-panic.rs b/tests/ui/macros/non-fmt-panic.rs
index 451a0c76018..9277529c6d4 100644
--- a/tests/ui/non-fmt-panic.rs
+++ b/tests/ui/macros/non-fmt-panic.rs
@@ -1,3 +1,9 @@
+//! The non_fmt_panics lint detects panic!(..) invocations where
+//! the first argument is not a formatting string.
+//!
+//! Also, this test checks that this is not emitted if it originates
+//! in an external macro.
+
 //@ run-rustfix
 //@ rustfix-only-machine-applicable
 //@ build-pass (FIXME(62277): should be check-pass)
diff --git a/tests/ui/non-fmt-panic.stderr b/tests/ui/macros/non-fmt-panic.stderr
index 0134a8ddf29..30b63cb46e2 100644
--- a/tests/ui/non-fmt-panic.stderr
+++ b/tests/ui/macros/non-fmt-panic.stderr
@@ -1,5 +1,5 @@
 warning: panic message contains a brace
-  --> $DIR/non-fmt-panic.rs:13:29
+  --> $DIR/non-fmt-panic.rs:19:29
    |
 LL |     panic!("here's a brace: {");
    |                             ^
@@ -12,7 +12,7 @@ LL |     panic!("{}", "here's a brace: {");
    |            +++++
 
 warning: panic message contains a brace
-  --> $DIR/non-fmt-panic.rs:14:35
+  --> $DIR/non-fmt-panic.rs:20:35
    |
 LL |     unreachable!("here's a brace: {");
    |                                   ^
@@ -24,7 +24,7 @@ LL |     unreachable!("{}", "here's a brace: {");
    |                  +++++
 
 warning: panic message contains a brace
-  --> $DIR/non-fmt-panic.rs:15:31
+  --> $DIR/non-fmt-panic.rs:21:31
    |
 LL |     std::panic!("another one: }");
    |                               ^
@@ -36,7 +36,7 @@ LL |     std::panic!("{}", "another one: }");
    |                 +++++
 
 warning: panic message contains an unused formatting placeholder
-  --> $DIR/non-fmt-panic.rs:16:25
+  --> $DIR/non-fmt-panic.rs:22:25
    |
 LL |     core::panic!("Hello {}");
    |                         ^^
@@ -52,7 +52,7 @@ LL |     core::panic!("{}", "Hello {}");
    |                  +++++
 
 warning: panic message contains unused formatting placeholders
-  --> $DIR/non-fmt-panic.rs:17:21
+  --> $DIR/non-fmt-panic.rs:23:21
    |
 LL |     assert!(false, "{:03x} {test} bla");
    |                     ^^^^^^ ^^^^^^
@@ -68,7 +68,7 @@ LL |     assert!(false, "{}", "{:03x} {test} bla");
    |                    +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:19:20
+  --> $DIR/non-fmt-panic.rs:25:20
    |
 LL |     assert!(false, S);
    |                    ^
@@ -81,7 +81,7 @@ LL |     assert!(false, "{}", S);
    |                    +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:21:20
+  --> $DIR/non-fmt-panic.rs:27:20
    |
 LL |     assert!(false, 123);
    |                    ^^^
@@ -94,7 +94,7 @@ LL |     assert!(false, "{}", 123);
    |                    +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:23:20
+  --> $DIR/non-fmt-panic.rs:29:20
    |
 LL |     assert!(false, Some(123));
    |                    ^^^^^^^^^
@@ -107,7 +107,7 @@ LL |     assert!(false, "{:?}", Some(123));
    |                    +++++++
 
 warning: panic message contains braces
-  --> $DIR/non-fmt-panic.rs:25:27
+  --> $DIR/non-fmt-panic.rs:31:27
    |
 LL |     debug_assert!(false, "{{}} bla");
    |                           ^^^^
@@ -119,7 +119,7 @@ LL |     debug_assert!(false, "{}", "{{}} bla");
    |                          +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:26:12
+  --> $DIR/non-fmt-panic.rs:32:12
    |
 LL |     panic!(C);
    |            ^
@@ -132,7 +132,7 @@ LL |     panic!("{}", C);
    |            +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:27:12
+  --> $DIR/non-fmt-panic.rs:33:12
    |
 LL |     panic!(S);
    |            ^
@@ -145,7 +145,7 @@ LL |     panic!("{}", S);
    |            +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:28:18
+  --> $DIR/non-fmt-panic.rs:34:18
    |
 LL |     unreachable!(S);
    |                  ^
@@ -158,7 +158,7 @@ LL |     unreachable!("{}", S);
    |                  +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:29:18
+  --> $DIR/non-fmt-panic.rs:35:18
    |
 LL |     unreachable!(S);
    |                  ^
@@ -171,7 +171,7 @@ LL |     unreachable!("{}", S);
    |                  +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:30:17
+  --> $DIR/non-fmt-panic.rs:36:17
    |
 LL |     std::panic!(123);
    |                 ^^^
@@ -189,7 +189,7 @@ LL +     std::panic::panic_any(123);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:31:18
+  --> $DIR/non-fmt-panic.rs:37:18
    |
 LL |     core::panic!(&*"abc");
    |                  ^^^^^^^
@@ -202,7 +202,7 @@ LL |     core::panic!("{}", &*"abc");
    |                  +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:32:12
+  --> $DIR/non-fmt-panic.rs:38:12
    |
 LL |     panic!(Some(123));
    |            ^^^^^^^^^
@@ -220,7 +220,7 @@ LL +     std::panic::panic_any(Some(123));
    |
 
 warning: panic message contains an unused formatting placeholder
-  --> $DIR/non-fmt-panic.rs:33:12
+  --> $DIR/non-fmt-panic.rs:39:12
    |
 LL |     panic!(concat!("{", "}"));
    |            ^^^^^^^^^^^^^^^^^
@@ -236,7 +236,7 @@ LL |     panic!("{}", concat!("{", "}"));
    |            +++++
 
 warning: panic message contains braces
-  --> $DIR/non-fmt-panic.rs:34:5
+  --> $DIR/non-fmt-panic.rs:40:5
    |
 LL |     panic!(concat!("{", "{"));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -248,7 +248,7 @@ LL |     panic!("{}", concat!("{", "{"));
    |            +++++
 
 warning: panic message contains an unused formatting placeholder
-  --> $DIR/non-fmt-panic.rs:36:37
+  --> $DIR/non-fmt-panic.rs:42:37
    |
 LL |     fancy_panic::fancy_panic!("test {} 123");
    |                                     ^^
@@ -256,7 +256,7 @@ LL |     fancy_panic::fancy_panic!("test {} 123");
    = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:46:12
+  --> $DIR/non-fmt-panic.rs:52:12
    |
 LL |     panic!(a!());
    |            ^^^^
@@ -274,7 +274,7 @@ LL +     std::panic::panic_any(a!());
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:47:18
+  --> $DIR/non-fmt-panic.rs:53:18
    |
 LL |     unreachable!(a!());
    |                  ^^^^
@@ -287,7 +287,7 @@ LL |     unreachable!("{}", a!());
    |                  +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:49:12
+  --> $DIR/non-fmt-panic.rs:55:12
    |
 LL |     panic!(format!("{}", 1));
    |            ^^^^^^^^^^^^^^^^
@@ -302,7 +302,7 @@ LL +     panic!("{}", 1);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:50:18
+  --> $DIR/non-fmt-panic.rs:56:18
    |
 LL |     unreachable!(format!("{}", 1));
    |                  ^^^^^^^^^^^^^^^^
@@ -317,7 +317,7 @@ LL +     unreachable!("{}", 1);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:51:20
+  --> $DIR/non-fmt-panic.rs:57:20
    |
 LL |     assert!(false, format!("{}", 1));
    |                    ^^^^^^^^^^^^^^^^
@@ -332,7 +332,7 @@ LL +     assert!(false, "{}", 1);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:52:26
+  --> $DIR/non-fmt-panic.rs:58:26
    |
 LL |     debug_assert!(false, format!("{}", 1));
    |                          ^^^^^^^^^^^^^^^^
@@ -347,7 +347,7 @@ LL +     debug_assert!(false, "{}", 1);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:54:12
+  --> $DIR/non-fmt-panic.rs:60:12
    |
 LL |     panic![123];
    |            ^^^
@@ -365,7 +365,7 @@ LL +     std::panic::panic_any(123);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:55:12
+  --> $DIR/non-fmt-panic.rs:61:12
    |
 LL |     panic!{123};
    |            ^^^
@@ -383,7 +383,7 @@ LL +     std::panic::panic_any(123);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:72:12
+  --> $DIR/non-fmt-panic.rs:78:12
    |
 LL |     panic!(v);
    |     ------ ^
@@ -394,7 +394,7 @@ LL |     panic!(v);
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:73:20
+  --> $DIR/non-fmt-panic.rs:79:20
    |
 LL |     assert!(false, v);
    |                    ^
@@ -403,7 +403,7 @@ LL |     assert!(false, v);
    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/panic-macro-consistency.html>
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:77:12
+  --> $DIR/non-fmt-panic.rs:83:12
    |
 LL |     panic!(v);
    |            ^
@@ -421,7 +421,7 @@ LL +     std::panic::panic_any(v);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:78:20
+  --> $DIR/non-fmt-panic.rs:84:20
    |
 LL |     assert!(false, v);
    |                    ^
@@ -434,7 +434,7 @@ LL |     assert!(false, "{:?}", v);
    |                    +++++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:82:12
+  --> $DIR/non-fmt-panic.rs:88:12
    |
 LL |     panic!(v);
    |            ^
@@ -452,7 +452,7 @@ LL +     std::panic::panic_any(v);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:83:20
+  --> $DIR/non-fmt-panic.rs:89:20
    |
 LL |     assert!(false, v);
    |                    ^
@@ -465,7 +465,7 @@ LL |     assert!(false, "{}", v);
    |                    +++++
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:87:12
+  --> $DIR/non-fmt-panic.rs:93:12
    |
 LL |     panic!(v);
    |            ^
@@ -483,7 +483,7 @@ LL +     std::panic::panic_any(v);
    |
 
 warning: panic message is not a string literal
-  --> $DIR/non-fmt-panic.rs:88:20
+  --> $DIR/non-fmt-panic.rs:94:20
    |
 LL |     assert!(false, v);
    |                    ^
diff --git a/tests/ui/no-link-unknown-crate.rs b/tests/ui/no-link-unknown-crate.rs
deleted file mode 100644
index c7da2e41832..00000000000
--- a/tests/ui/no-link-unknown-crate.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-#[no_link]
-extern crate doesnt_exist; //~ ERROR can't find crate
-
-fn main() {}
diff --git a/tests/ui/auxiliary/issue-24106.rs b/tests/ui/pattern/auxiliary/cross-crate-enum-pattern.rs
index 2c6a6034806..2c6a6034806 100644
--- a/tests/ui/auxiliary/issue-24106.rs
+++ b/tests/ui/pattern/auxiliary/cross-crate-enum-pattern.rs
diff --git a/tests/ui/pattern/cross-crate-enum-pattern.rs b/tests/ui/pattern/cross-crate-enum-pattern.rs
new file mode 100644
index 00000000000..254caf99277
--- /dev/null
+++ b/tests/ui/pattern/cross-crate-enum-pattern.rs
@@ -0,0 +1,13 @@
+//! Test that we can match on enum constants across crates.
+//!
+//! Regression test for <https://github.com/rust-lang/rust/issues/24106>.
+
+
+//@ run-pass
+//@ aux-build:cross-crate-enum-pattern.rs
+
+extern crate cross_crate_enum_pattern;
+
+fn main() {
+    cross_crate_enum_pattern::go::<()>();
+}
diff --git a/tests/ui/auxiliary/impl_privacy_xc_1.rs b/tests/ui/privacy/auxiliary/impl-privacy-cross-crate-1.rs
index 367b8ec8b88..367b8ec8b88 100644
--- a/tests/ui/auxiliary/impl_privacy_xc_1.rs
+++ b/tests/ui/privacy/auxiliary/impl-privacy-cross-crate-1.rs
diff --git a/tests/ui/privacy/auxiliary/impl_privacy_xc_2.rs b/tests/ui/privacy/auxiliary/impl-privacy-cross-crate-2.rs
index 5f9c2268167..5f9c2268167 100644
--- a/tests/ui/privacy/auxiliary/impl_privacy_xc_2.rs
+++ b/tests/ui/privacy/auxiliary/impl-privacy-cross-crate-2.rs
diff --git a/tests/ui/privacy/impl-privacy-cross-crate-1.rs b/tests/ui/privacy/impl-privacy-cross-crate-1.rs
new file mode 100644
index 00000000000..6b2ef3ccc78
--- /dev/null
+++ b/tests/ui/privacy/impl-privacy-cross-crate-1.rs
@@ -0,0 +1,10 @@
+//@ run-pass
+//@ aux-build:impl-privacy-cross-crate-1.rs
+
+
+extern crate impl_privacy_cross_crate_1;
+
+pub fn main() {
+    let fish = impl_privacy_cross_crate_1::Fish { x: 1 };
+    fish.swim();
+}
diff --git a/tests/ui/privacy/impl-privacy-cross-crate-2.rs b/tests/ui/privacy/impl-privacy-cross-crate-2.rs
new file mode 100644
index 00000000000..fa07e6e8cce
--- /dev/null
+++ b/tests/ui/privacy/impl-privacy-cross-crate-2.rs
@@ -0,0 +1,10 @@
+//@ run-pass
+//@ aux-build:impl-privacy-cross-crate-2.rs
+
+extern crate impl_privacy_cross_crate_2;
+
+pub fn main() {
+    let fish1 = impl_privacy_cross_crate_2::Fish { x: 1 };
+    let fish2 = impl_privacy_cross_crate_2::Fish { x: 2 };
+    if fish1.eq(&fish2) { println!("yes") } else { println!("no") };
+}
diff --git a/tests/ui/privacy/impl-privacy-xc-2.rs b/tests/ui/privacy/impl-privacy-xc-2.rs
deleted file mode 100644
index da345ba2072..00000000000
--- a/tests/ui/privacy/impl-privacy-xc-2.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//@ run-pass
-//@ aux-build:impl_privacy_xc_2.rs
-
-extern crate impl_privacy_xc_2;
-
-pub fn main() {
-    let fish1 = impl_privacy_xc_2::Fish { x: 1 };
-    let fish2 = impl_privacy_xc_2::Fish { x: 2 };
-    if fish1.eq(&fish2) { println!("yes") } else { println!("no") };
-}
diff --git a/tests/ui/statics/auxiliary/inner_static.rs b/tests/ui/statics/auxiliary/inner_static.rs
new file mode 100644
index 00000000000..1c62046438f
--- /dev/null
+++ b/tests/ui/statics/auxiliary/inner_static.rs
@@ -0,0 +1,67 @@
+//! Test for inner statics with the same name.
+//!
+//! Before, the path name for all items defined in methods of traits and impls never
+//! took into account the name of the method. This meant that if you had two statics
+//! of the same name in two different methods the statics would end up having the
+//! same symbol named (even after mangling) because the path components leading to
+//! the symbol were exactly the same (just __extensions__ and the static name).
+//!
+//! It turns out that if you add the symbol "A" twice to LLVM, it automatically
+//! makes the second one "A1" instead of "A". What this meant is that in local crate
+//! compilations we never found this bug. Even across crates, this was never a
+//! problem. The problem arises when you have generic methods that don't get
+//! generated at compile-time of a library. If the statics were re-added to LLVM by
+//! a client crate of a library in a different order, you would reference different
+//! constants (the integer suffixes wouldn't be guaranteed to be the same).
+
+pub struct A<T> { pub v: T }
+pub struct B<T> { pub v: T }
+
+pub mod test {
+    pub struct A<T> { pub v: T }
+
+    impl<T> A<T> {
+        pub fn foo(&self) -> isize {
+            static a: isize = 5;
+            return a
+        }
+
+        pub fn bar(&self) -> isize {
+            static a: isize = 6;
+            return a;
+        }
+    }
+}
+
+impl<T> A<T> {
+    pub fn foo(&self) -> isize {
+        static a: isize = 1;
+        return a
+    }
+
+    pub fn bar(&self) -> isize {
+        static a: isize = 2;
+        return a;
+    }
+}
+
+impl<T> B<T> {
+    pub fn foo(&self) -> isize {
+        static a: isize = 3;
+        return a
+    }
+
+    pub fn bar(&self) -> isize {
+        static a: isize = 4;
+        return a;
+    }
+}
+
+pub fn foo() -> isize {
+    let a = A { v: () };
+    let b = B { v: () };
+    let c = test::A { v: () };
+    return a.foo() + a.bar() +
+           b.foo() + b.bar() +
+           c.foo() + c.bar();
+}
diff --git a/tests/ui/statics/inner-static.rs b/tests/ui/statics/inner-static.rs
new file mode 100644
index 00000000000..1916435c46a
--- /dev/null
+++ b/tests/ui/statics/inner-static.rs
@@ -0,0 +1,30 @@
+//! Test for inner statics with the same name.
+//!
+//! Before, the path name for all items defined in methods of traits and impls never
+//! took into account the name of the method. This meant that if you had two statics
+//! of the same name in two different methods the statics would end up having the
+//! same symbol named (even after mangling) because the path components leading to
+//! the symbol were exactly the same (just __extensions__ and the static name).
+//!
+//! It turns out that if you add the symbol "A" twice to LLVM, it automatically
+//! makes the second one "A1" instead of "A". What this meant is that in local crate
+//! compilations we never found this bug. Even across crates, this was never a
+//! problem. The problem arises when you have generic methods that don't get
+//! generated at compile-time of a library. If the statics were re-added to LLVM by
+//! a client crate of a library in a different order, you would reference different
+//! constants (the integer suffixes wouldn't be guaranteed to be the same).
+
+//@ run-pass
+//@ aux-build:inner_static.rs
+
+
+extern crate inner_static;
+
+pub fn main() {
+    let a = inner_static::A::<()> { v: () };
+    let b = inner_static::B::<()> { v: () };
+    let c = inner_static::test::A::<()> { v: () };
+    assert_eq!(a.bar(), 2);
+    assert_eq!(b.bar(), 4);
+    assert_eq!(c.bar(), 6);
+}