From f4502b8f0eeb0e2f078745cfbbe41b5763be9449 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Mon, 9 Jun 2025 00:49:05 +0500 Subject: [PATCH] cleaned up some tests --- .../empty-alloc-nonnull-guarantee.rs} | 4 +++ tests/ui/diverging-fn-tail-35849.rs | 8 ------ tests/ui/early-ret-binop-add.rs | 10 -------- tests/ui/elide-errors-on-mismatched-tuple.rs | 18 ------------- tests/ui/elided-test.rs | 5 ---- tests/ui/elided-test.stderr | 9 ------- tests/ui/else-if.rs | 20 --------------- tests/ui/expr/early-return-in-binop.rs | 19 ++++++++++++++ .../duplicate-use-bindings.rs} | 2 ++ .../duplicate-use-bindings.stderr} | 2 +- .../elide-on-tuple-mismatch.rs | 25 +++++++++++++++++++ .../elide-on-tuple-mismatch.stderr} | 4 +-- .../reference-whitespace-parsing.rs} | 2 ++ .../test-function-elided-no-main.rs | 8 ++++++ .../test-function-elided-no-main.stderr | 9 +++++++ tests/ui/transmute/diverging-fn-transmute.rs | 10 ++++++++ .../diverging-fn-transmute.stderr} | 2 +- 17 files changed, 83 insertions(+), 74 deletions(-) rename tests/ui/{empty-allocation-non-null.rs => allocator/empty-alloc-nonnull-guarantee.rs} (66%) delete mode 100644 tests/ui/diverging-fn-tail-35849.rs delete mode 100644 tests/ui/early-ret-binop-add.rs delete mode 100644 tests/ui/elide-errors-on-mismatched-tuple.rs delete mode 100644 tests/ui/elided-test.rs delete mode 100644 tests/ui/elided-test.stderr delete mode 100644 tests/ui/else-if.rs create mode 100644 tests/ui/expr/early-return-in-binop.rs rename tests/ui/{double-type-import.rs => imports/duplicate-use-bindings.rs} (73%) rename tests/ui/{double-type-import.stderr => imports/duplicate-use-bindings.stderr} (91%) create mode 100644 tests/ui/mismatched_types/elide-on-tuple-mismatch.rs rename tests/ui/{elide-errors-on-mismatched-tuple.stderr => mismatched_types/elide-on-tuple-mismatch.stderr} (73%) rename tests/ui/{double-ref.rs => parser/reference-whitespace-parsing.rs} (91%) create mode 100644 tests/ui/test-attrs/test-function-elided-no-main.rs create mode 100644 tests/ui/test-attrs/test-function-elided-no-main.stderr create mode 100644 tests/ui/transmute/diverging-fn-transmute.rs rename tests/ui/{diverging-fn-tail-35849.stderr => transmute/diverging-fn-transmute.stderr} (91%) diff --git a/tests/ui/empty-allocation-non-null.rs b/tests/ui/allocator/empty-alloc-nonnull-guarantee.rs similarity index 66% rename from tests/ui/empty-allocation-non-null.rs rename to tests/ui/allocator/empty-alloc-nonnull-guarantee.rs index 45035a42a5f85..f4081306c77fc 100644 --- a/tests/ui/empty-allocation-non-null.rs +++ b/tests/ui/allocator/empty-alloc-nonnull-guarantee.rs @@ -1,3 +1,7 @@ +//! Check that the default global Rust allocator produces non-null Box allocations for ZSTs. +//! +//! See https://github.com/rust-lang/rust/issues/11998 + //@ run-pass pub fn main() { diff --git a/tests/ui/diverging-fn-tail-35849.rs b/tests/ui/diverging-fn-tail-35849.rs deleted file mode 100644 index f21ce2973e95a..0000000000000 --- a/tests/ui/diverging-fn-tail-35849.rs +++ /dev/null @@ -1,8 +0,0 @@ -fn assert_sizeof() -> ! { - unsafe { - ::std::mem::transmute::(panic!()) - //~^ ERROR mismatched types - } -} - -fn main() { } diff --git a/tests/ui/early-ret-binop-add.rs b/tests/ui/early-ret-binop-add.rs deleted file mode 100644 index 3fec66f35fb8b..0000000000000 --- a/tests/ui/early-ret-binop-add.rs +++ /dev/null @@ -1,10 +0,0 @@ -//@ run-pass - -#![allow(dead_code)] -#![allow(unreachable_code)] - -use std::ops::Add; - -fn wsucc + Copy>(n: T) -> T { n + { return n } } - -pub fn main() { } diff --git a/tests/ui/elide-errors-on-mismatched-tuple.rs b/tests/ui/elide-errors-on-mismatched-tuple.rs deleted file mode 100644 index 7d87b0a7756b1..0000000000000 --- a/tests/ui/elide-errors-on-mismatched-tuple.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Hide irrelevant E0277 errors (#50333) - -trait T {} - -struct A; -impl T for A {} -impl A { - fn new() -> Self { - Self {} - } -} - -fn main() { - let (a, b, c) = (A::new(), A::new()); // This tuple is 2 elements, should be three - //~^ ERROR mismatched types - let ts: Vec<&dyn T> = vec![&a, &b, &c]; - // There is no E0277 error above, as `a`, `b` and `c` are `TyErr` -} diff --git a/tests/ui/elided-test.rs b/tests/ui/elided-test.rs deleted file mode 100644 index 2bedc25e17bb5..0000000000000 --- a/tests/ui/elided-test.rs +++ /dev/null @@ -1,5 +0,0 @@ -// Since we're not compiling a test runner this function should be elided -// and the build will fail because main doesn't exist -#[test] -fn main() { -} //~ ERROR `main` function not found in crate `elided_test` diff --git a/tests/ui/elided-test.stderr b/tests/ui/elided-test.stderr deleted file mode 100644 index 7aebe5d8264d1..0000000000000 --- a/tests/ui/elided-test.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0601]: `main` function not found in crate `elided_test` - --> $DIR/elided-test.rs:5:2 - | -LL | } - | ^ consider adding a `main` function to `$DIR/elided-test.rs` - -error: aborting due to 1 previous error - -For more information about this error, try `rustc --explain E0601`. diff --git a/tests/ui/else-if.rs b/tests/ui/else-if.rs deleted file mode 100644 index 2161b28c58c93..0000000000000 --- a/tests/ui/else-if.rs +++ /dev/null @@ -1,20 +0,0 @@ -//@ run-pass - -pub fn main() { - if 1 == 2 { - assert!((false)); - } else if 2 == 3 { - assert!((false)); - } else if 3 == 4 { assert!((false)); } else { assert!((true)); } - if 1 == 2 { assert!((false)); } else if 2 == 2 { assert!((true)); } - if 1 == 2 { - assert!((false)); - } else if 2 == 2 { - if 1 == 1 { - assert!((true)); - } else { if 2 == 1 { assert!((false)); } else { assert!((false)); } } - } - if 1 == 2 { - assert!((false)); - } else { if 1 == 2 { assert!((false)); } else { assert!((true)); } } -} diff --git a/tests/ui/expr/early-return-in-binop.rs b/tests/ui/expr/early-return-in-binop.rs new file mode 100644 index 0000000000000..389d25210f77a --- /dev/null +++ b/tests/ui/expr/early-return-in-binop.rs @@ -0,0 +1,19 @@ +//! Test early return within binary operation expressions + +//@ run-pass + +#![allow(dead_code)] +#![allow(unreachable_code)] + +use std::ops::Add; + +/// Function that performs addition with an early return in the right operand +fn add_with_early_return + Copy>(n: T) -> T { + n + { return n } +} + +pub fn main() { + // Test with different numeric types to ensure generic behavior works + let _result1 = add_with_early_return(42i32); + let _result2 = add_with_early_return(3.14f64); +} diff --git a/tests/ui/double-type-import.rs b/tests/ui/imports/duplicate-use-bindings.rs similarity index 73% rename from tests/ui/double-type-import.rs rename to tests/ui/imports/duplicate-use-bindings.rs index 6b1eb65d5ae5b..8cec23ea73225 100644 --- a/tests/ui/double-type-import.rs +++ b/tests/ui/imports/duplicate-use-bindings.rs @@ -1,3 +1,5 @@ +//! Test that duplicate use bindings in same namespace produce error + mod foo { pub use self::bar::X; use self::bar::X; diff --git a/tests/ui/double-type-import.stderr b/tests/ui/imports/duplicate-use-bindings.stderr similarity index 91% rename from tests/ui/double-type-import.stderr rename to tests/ui/imports/duplicate-use-bindings.stderr index 8a8fe05ec1928..1d4f1fc82db40 100644 --- a/tests/ui/double-type-import.stderr +++ b/tests/ui/imports/duplicate-use-bindings.stderr @@ -1,5 +1,5 @@ error[E0252]: the name `X` is defined multiple times - --> $DIR/double-type-import.rs:3:9 + --> $DIR/duplicate-use-bindings.rs:5:9 | LL | pub use self::bar::X; | ------------ previous import of the type `X` here diff --git a/tests/ui/mismatched_types/elide-on-tuple-mismatch.rs b/tests/ui/mismatched_types/elide-on-tuple-mismatch.rs new file mode 100644 index 0000000000000..c36d041d29611 --- /dev/null +++ b/tests/ui/mismatched_types/elide-on-tuple-mismatch.rs @@ -0,0 +1,25 @@ +//! Regression test for issue #50333: elide irrelevant E0277 errors on tuple mismatch + +// Hide irrelevant E0277 errors (#50333) + +trait T {} + +struct A; + +impl T for A {} + +impl A { + fn new() -> Self { + Self {} + } +} + +fn main() { + // This creates a tuple type mismatch: 2-element tuple destructured into 3 variables + let (a, b, c) = (A::new(), A::new()); + //~^ ERROR mismatched types + + // This line should NOT produce an E0277 error about `Sized` trait bounds, + // because `a`, `b`, and `c` are `TyErr` due to the mismatch above + let _ts: Vec<&dyn T> = vec![&a, &b, &c]; +} diff --git a/tests/ui/elide-errors-on-mismatched-tuple.stderr b/tests/ui/mismatched_types/elide-on-tuple-mismatch.stderr similarity index 73% rename from tests/ui/elide-errors-on-mismatched-tuple.stderr rename to tests/ui/mismatched_types/elide-on-tuple-mismatch.stderr index f852a223b425f..7de45eb40ca92 100644 --- a/tests/ui/elide-errors-on-mismatched-tuple.stderr +++ b/tests/ui/mismatched_types/elide-on-tuple-mismatch.stderr @@ -1,7 +1,7 @@ error[E0308]: mismatched types - --> $DIR/elide-errors-on-mismatched-tuple.rs:14:9 + --> $DIR/elide-on-tuple-mismatch.rs:19:9 | -LL | let (a, b, c) = (A::new(), A::new()); // This tuple is 2 elements, should be three +LL | let (a, b, c) = (A::new(), A::new()); | ^^^^^^^^^ -------------------- this expression has type `(A, A)` | | | expected a tuple with 2 elements, found one with 3 elements diff --git a/tests/ui/double-ref.rs b/tests/ui/parser/reference-whitespace-parsing.rs similarity index 91% rename from tests/ui/double-ref.rs rename to tests/ui/parser/reference-whitespace-parsing.rs index eecf68ff209cb..7109c5911aef9 100644 --- a/tests/ui/double-ref.rs +++ b/tests/ui/parser/reference-whitespace-parsing.rs @@ -1,3 +1,5 @@ +//! Test parsing of multiple references with various whitespace arrangements + //@ run-pass #![allow(dead_code)] diff --git a/tests/ui/test-attrs/test-function-elided-no-main.rs b/tests/ui/test-attrs/test-function-elided-no-main.rs new file mode 100644 index 0000000000000..97654581567da --- /dev/null +++ b/tests/ui/test-attrs/test-function-elided-no-main.rs @@ -0,0 +1,8 @@ +//! Test that #[test] functions are elided when not running tests, causing missing main error + +#[test] +fn main() { + // This function would normally serve as main, but since it's marked with #[test], + // it gets elided when not running tests +} +//~^ ERROR `main` function not found in crate `test_function_elided_no_main` diff --git a/tests/ui/test-attrs/test-function-elided-no-main.stderr b/tests/ui/test-attrs/test-function-elided-no-main.stderr new file mode 100644 index 0000000000000..0bae690be2b13 --- /dev/null +++ b/tests/ui/test-attrs/test-function-elided-no-main.stderr @@ -0,0 +1,9 @@ +error[E0601]: `main` function not found in crate `test_function_elided_no_main` + --> $DIR/test-function-elided-no-main.rs:7:2 + | +LL | } + | ^ consider adding a `main` function to `$DIR/test-function-elided-no-main.rs` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0601`. diff --git a/tests/ui/transmute/diverging-fn-transmute.rs b/tests/ui/transmute/diverging-fn-transmute.rs new file mode 100644 index 0000000000000..aca82037a0c2c --- /dev/null +++ b/tests/ui/transmute/diverging-fn-transmute.rs @@ -0,0 +1,10 @@ +//! Regression test for issue #35849: transmute with panic in diverging function + +fn assert_sizeof() -> ! { + unsafe { + ::std::mem::transmute::(panic!()) + //~^ ERROR mismatched types + } +} + +fn main() {} diff --git a/tests/ui/diverging-fn-tail-35849.stderr b/tests/ui/transmute/diverging-fn-transmute.stderr similarity index 91% rename from tests/ui/diverging-fn-tail-35849.stderr rename to tests/ui/transmute/diverging-fn-transmute.stderr index 614f9b9cb5d20..b9aeae7ed62b1 100644 --- a/tests/ui/diverging-fn-tail-35849.stderr +++ b/tests/ui/transmute/diverging-fn-transmute.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/diverging-fn-tail-35849.rs:3:9 + --> $DIR/diverging-fn-transmute.rs:5:9 | LL | fn assert_sizeof() -> ! { | - expected `!` because of return type