diff --git a/tests/ui/codegen/trait-objects-slice-coercion.rs b/tests/ui/codegen/trait-objects-slice-coercion.rs new file mode 100644 index 0000000000000..59282e3616b7d --- /dev/null +++ b/tests/ui/codegen/trait-objects-slice-coercion.rs @@ -0,0 +1,12 @@ +//! Regression test for . +//! This used to trigger LLVM assertion +//! `SrcTy must be larger than DestTy for Trunc` +//! because of a redundant truncate call when value is boolean. +//@ run-pass + +trait Tc {} +impl Tc for bool {} + +fn main() { + let _: &[&dyn Tc] = &[&true]; +} diff --git a/tests/ui/issues/issue-41298.rs b/tests/ui/coherence/inherent-impls-with-same-fn-ptr-return.rs similarity index 54% rename from tests/ui/issues/issue-41298.rs rename to tests/ui/coherence/inherent-impls-with-same-fn-ptr-return.rs index 6008110712348..9c6c5a3178961 100644 --- a/tests/ui/issues/issue-41298.rs +++ b/tests/ui/coherence/inherent-impls-with-same-fn-ptr-return.rs @@ -1,4 +1,8 @@ +//! Regression test for . +//! Two impl blocks with same generics caused ICE during coherence overlap +//! check. //@ check-pass + #![allow(dead_code)] struct Function { t: T, f: F } diff --git a/tests/ui/issues/issue-41849-variance-req.rs b/tests/ui/consts/const-eval/variance-const-eval-cycle.rs similarity index 70% rename from tests/ui/issues/issue-41849-variance-req.rs rename to tests/ui/consts/const-eval/variance-const-eval-cycle.rs index 1da844ab4bf0b..03251f38126ee 100644 --- a/tests/ui/issues/issue-41849-variance-req.rs +++ b/tests/ui/consts/const-eval/variance-const-eval-cycle.rs @@ -1,6 +1,9 @@ +//! Regression test for . +//! Evaluating const required to evaluate trait, which required variance +//! information, which required const to be evaluated. //@ run-pass + #![allow(dead_code)] -// Regression test for #41849. use std::ops::Mul; diff --git a/tests/ui/issues/issue-41742.rs b/tests/ui/indexing/index-with-wrong-type.rs similarity index 74% rename from tests/ui/issues/issue-41742.rs rename to tests/ui/indexing/index-with-wrong-type.rs index afe311b4d1785..c783287ac4273 100644 --- a/tests/ui/issues/issue-41742.rs +++ b/tests/ui/indexing/index-with-wrong-type.rs @@ -1,3 +1,6 @@ +//! Regression test for . +//! Test indexing with the wrong type doesn't cause ICE. + use std::ops::{Index, IndexMut}; struct S; diff --git a/tests/ui/issues/issue-41742.stderr b/tests/ui/indexing/index-with-wrong-type.stderr similarity index 83% rename from tests/ui/issues/issue-41742.stderr rename to tests/ui/indexing/index-with-wrong-type.stderr index 47c7e5dc11ff7..d1196b2d3b522 100644 --- a/tests/ui/issues/issue-41742.stderr +++ b/tests/ui/indexing/index-with-wrong-type.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/issue-41742.rs:24:7 + --> $DIR/index-with-wrong-type.rs:27:7 | LL | H["?"].f(); | ^^^ expected `u32`, found `&str` diff --git a/tests/ui/issues/issue-41677.rs b/tests/ui/inference/bivariant-param.rs similarity index 59% rename from tests/ui/issues/issue-41677.rs rename to tests/ui/inference/bivariant-param.rs index 211d1176363f5..b63dd19e577ad 100644 --- a/tests/ui/issues/issue-41677.rs +++ b/tests/ui/inference/bivariant-param.rs @@ -1,8 +1,8 @@ +//! Regression test for . +//! The local variable was winding up with a type `Receiver` where +//! `?T` was unconstrained, because we failed to enforce the WF obligations +//! and `?T` is a bivariant type parameter position. //@ run-pass -// Regression test for #41677. The local variable was winding up with -// a type `Receiver` where `?T` was unconstrained, because we -// failed to enforce the WF obligations and `?T` is a bivariant type -// parameter position. #![allow(unused_variables, dead_code)] diff --git a/tests/ui/inference/infer-result-type-through-dead-code.rs b/tests/ui/inference/infer-result-type-through-dead-code.rs new file mode 100644 index 0000000000000..b4497f8d8bc49 --- /dev/null +++ b/tests/ui/inference/infer-result-type-through-dead-code.rs @@ -0,0 +1,14 @@ +//! Regression test for . +//! The key here is that the error type of the `Ok` call ought to be +//! constrained to `String`, even though it is dead-code. +//@ check-pass + +#![allow(dead_code)] +#![allow(unreachable_code)] + +fn main() {} + +fn t() -> Result<(), String> { + return Err("".into()); + Ok(()) +} diff --git a/tests/ui/issues/issue-39984.rs b/tests/ui/issues/issue-39984.rs deleted file mode 100644 index eff5d69bf84b1..0000000000000 --- a/tests/ui/issues/issue-39984.rs +++ /dev/null @@ -1,14 +0,0 @@ -//@ check-pass -#![allow(dead_code)] -#![allow(unreachable_code)] -// Regression test for issue #39984. -// -// The key here is that the error type of the `Ok` call ought to be -// constrained to `String`, even though it is dead-code. - -fn main() {} - -fn t() -> Result<(), String> { - return Err("".into()); - Ok(()) -} diff --git a/tests/ui/issues/issue-41479.rs b/tests/ui/issues/issue-41479.rs deleted file mode 100644 index c8ebad6c5e071..0000000000000 --- a/tests/ui/issues/issue-41479.rs +++ /dev/null @@ -1,9 +0,0 @@ -//@ run-pass -fn split(pair: (A, B)) { - let _a = pair.0; - let _b = pair.1; -} - -fn main() { - split(((), ((), ()))); -} diff --git a/tests/ui/issues/issue-41744.rs b/tests/ui/issues/issue-41744.rs deleted file mode 100644 index af360d9580771..0000000000000 --- a/tests/ui/issues/issue-41744.rs +++ /dev/null @@ -1,7 +0,0 @@ -//@ run-pass -trait Tc {} -impl Tc for bool {} - -fn main() { - let _: &[&dyn Tc] = &[&true]; -} diff --git a/tests/ui/issues/issue-4025.rs b/tests/ui/lifetimes/if-else-branches-lifetime-coercion.rs similarity index 78% rename from tests/ui/issues/issue-4025.rs rename to tests/ui/lifetimes/if-else-branches-lifetime-coercion.rs index c75421fb82f15..c740291b50f3b 100644 --- a/tests/ui/issues/issue-4025.rs +++ b/tests/ui/lifetimes/if-else-branches-lifetime-coercion.rs @@ -1,9 +1,9 @@ +//! Regression test for . +//! `if` expression requires both paths to have a common supertype. //@ check-pass + #![allow(dead_code)] #![allow(unused_mut)] -/* -# if b { x } else { y } requires identical types for x and y -*/ fn print1(b: bool, s1: &str, s2: &str) { println!("{}", if b { s1 } else { s2 }); diff --git a/tests/ui/issues/issue-40288-2.rs b/tests/ui/lifetimes/lifetime-errors/mut-slice-struct-lifetime-transmute.rs similarity index 80% rename from tests/ui/issues/issue-40288-2.rs rename to tests/ui/lifetimes/lifetime-errors/mut-slice-struct-lifetime-transmute.rs index 032a2e65ff07e..270dc989ff538 100644 --- a/tests/ui/issues/issue-40288-2.rs +++ b/tests/ui/lifetimes/lifetime-errors/mut-slice-struct-lifetime-transmute.rs @@ -1,3 +1,7 @@ +//! Regression test for . +//! We were subtyping in the wrong direction, allowing any lifetime to +//! become 'static, which made use-after-free possible. + fn prove_static(_: &'static T) {} fn lifetime_transmute_slice<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T { diff --git a/tests/ui/issues/issue-40288-2.stderr b/tests/ui/lifetimes/lifetime-errors/mut-slice-struct-lifetime-transmute.stderr similarity index 87% rename from tests/ui/issues/issue-40288-2.stderr rename to tests/ui/lifetimes/lifetime-errors/mut-slice-struct-lifetime-transmute.stderr index 81cb7cdd51ff6..d65ca848f7ae9 100644 --- a/tests/ui/issues/issue-40288-2.stderr +++ b/tests/ui/lifetimes/lifetime-errors/mut-slice-struct-lifetime-transmute.stderr @@ -1,5 +1,5 @@ error[E0621]: explicit lifetime required in the type of `y` - --> $DIR/issue-40288-2.rs:9:5 + --> $DIR/mut-slice-struct-lifetime-transmute.rs:13:5 | LL | out[0] | ^^^^^^ lifetime `'a` required @@ -10,7 +10,7 @@ LL | fn lifetime_transmute_slice<'a, T: ?Sized>(x: &'a T, y: &'a T) -> &'a T { | ++ error[E0621]: explicit lifetime required in the type of `y` - --> $DIR/issue-40288-2.rs:24:5 + --> $DIR/mut-slice-struct-lifetime-transmute.rs:28:5 | LL | out.head | ^^^^^^^^ lifetime `'a` required diff --git a/tests/ui/tuple/nested-zst-tuple-fields.rs b/tests/ui/tuple/nested-zst-tuple-fields.rs new file mode 100644 index 0000000000000..f160f25a5eeac --- /dev/null +++ b/tests/ui/tuple/nested-zst-tuple-fields.rs @@ -0,0 +1,12 @@ +//! Regression test for . +//! Field access on zst tuple items used to trigger LLVM assertion. +//@ run-pass + +fn split(pair: (A, B)) { + let _a = pair.0; + let _b = pair.1; +} + +fn main() { + split(((), ((), ()))); +} diff --git a/tests/ui/issues/issue-41604.rs b/tests/ui/typeck/method-call-on-computed-array-index.rs similarity index 54% rename from tests/ui/issues/issue-41604.rs rename to tests/ui/typeck/method-call-on-computed-array-index.rs index 3cd16a2a598ba..928be8c31efdd 100644 --- a/tests/ui/issues/issue-41604.rs +++ b/tests/ui/typeck/method-call-on-computed-array-index.rs @@ -1,4 +1,7 @@ +//! Regression test for . +//! This used to ICE. //@ run-pass + struct B; impl B {