From f4502b8f0eeb0e2f078745cfbbe41b5763be9449 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Mon, 9 Jun 2025 00:49:05 +0500 Subject: cleaned up some tests --- .../ui/allocator/empty-alloc-nonnull-guarantee.rs | 18 +++++++++++ tests/ui/diverging-fn-tail-35849.rs | 8 ----- tests/ui/diverging-fn-tail-35849.stderr | 15 --------- tests/ui/double-ref.rs | 35 -------------------- tests/ui/double-type-import.rs | 13 -------- tests/ui/double-type-import.stderr | 13 -------- tests/ui/early-ret-binop-add.rs | 10 ------ tests/ui/elide-errors-on-mismatched-tuple.rs | 18 ----------- tests/ui/elide-errors-on-mismatched-tuple.stderr | 14 -------- tests/ui/elided-test.rs | 5 --- tests/ui/elided-test.stderr | 9 ------ tests/ui/else-if.rs | 20 ------------ tests/ui/empty-allocation-non-null.rs | 14 -------- tests/ui/expr/early-return-in-binop.rs | 19 +++++++++++ tests/ui/imports/duplicate-use-bindings.rs | 15 +++++++++ tests/ui/imports/duplicate-use-bindings.stderr | 13 ++++++++ .../ui/mismatched_types/elide-on-tuple-mismatch.rs | 25 +++++++++++++++ .../elide-on-tuple-mismatch.stderr | 14 ++++++++ tests/ui/parser/reference-whitespace-parsing.rs | 37 ++++++++++++++++++++++ .../ui/test-attrs/test-function-elided-no-main.rs | 8 +++++ .../test-attrs/test-function-elided-no-main.stderr | 9 ++++++ tests/ui/transmute/diverging-fn-transmute.rs | 10 ++++++ tests/ui/transmute/diverging-fn-transmute.stderr | 15 +++++++++ 23 files changed, 183 insertions(+), 174 deletions(-) create mode 100644 tests/ui/allocator/empty-alloc-nonnull-guarantee.rs delete mode 100644 tests/ui/diverging-fn-tail-35849.rs delete mode 100644 tests/ui/diverging-fn-tail-35849.stderr delete mode 100644 tests/ui/double-ref.rs delete mode 100644 tests/ui/double-type-import.rs delete mode 100644 tests/ui/double-type-import.stderr 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/elide-errors-on-mismatched-tuple.stderr delete mode 100644 tests/ui/elided-test.rs delete mode 100644 tests/ui/elided-test.stderr delete mode 100644 tests/ui/else-if.rs delete mode 100644 tests/ui/empty-allocation-non-null.rs create mode 100644 tests/ui/expr/early-return-in-binop.rs create mode 100644 tests/ui/imports/duplicate-use-bindings.rs create mode 100644 tests/ui/imports/duplicate-use-bindings.stderr create mode 100644 tests/ui/mismatched_types/elide-on-tuple-mismatch.rs create mode 100644 tests/ui/mismatched_types/elide-on-tuple-mismatch.stderr create mode 100644 tests/ui/parser/reference-whitespace-parsing.rs 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 create mode 100644 tests/ui/transmute/diverging-fn-transmute.stderr diff --git a/tests/ui/allocator/empty-alloc-nonnull-guarantee.rs b/tests/ui/allocator/empty-alloc-nonnull-guarantee.rs new file mode 100644 index 00000000000..f4081306c77 --- /dev/null +++ b/tests/ui/allocator/empty-alloc-nonnull-guarantee.rs @@ -0,0 +1,18 @@ +//! 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() { + assert!(Some(Box::new(())).is_some()); + + let xs: Box<[()]> = Box::<[(); 0]>::new([]); + assert!(Some(xs).is_some()); + + struct Foo; + assert!(Some(Box::new(Foo)).is_some()); + + let ys: Box<[Foo]> = Box::<[Foo; 0]>::new([]); + assert!(Some(ys).is_some()); +} diff --git a/tests/ui/diverging-fn-tail-35849.rs b/tests/ui/diverging-fn-tail-35849.rs deleted file mode 100644 index f21ce2973e9..00000000000 --- 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/diverging-fn-tail-35849.stderr b/tests/ui/diverging-fn-tail-35849.stderr deleted file mode 100644 index 614f9b9cb5d..00000000000 --- a/tests/ui/diverging-fn-tail-35849.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0308]: mismatched types - --> $DIR/diverging-fn-tail-35849.rs:3:9 - | -LL | fn assert_sizeof() -> ! { - | - expected `!` because of return type -LL | unsafe { -LL | ::std::mem::transmute::(panic!()) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `!`, found `[u8; 8]` - | - = note: expected type `!` - found array `[u8; 8]` - -error: aborting due to 1 previous error - -For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/double-ref.rs b/tests/ui/double-ref.rs deleted file mode 100644 index eecf68ff209..00000000000 --- a/tests/ui/double-ref.rs +++ /dev/null @@ -1,35 +0,0 @@ -//@ run-pass - -#![allow(dead_code)] - -fn check_expr() { - let _: & usize = &1; - let _: & & usize = &&1; - let _: & & & usize = &&&1; - let _: & & & usize = & &&1; - let _: & & & & usize = &&&&1; - let _: & & & & usize = & &&&1; - let _: & & & & & usize = &&&&&1; -} - -fn check_ty() { - let _: &usize = & 1; - let _: &&usize = & & 1; - let _: &&&usize = & & & 1; - let _: & &&usize = & & & 1; - let _: &&&&usize = & & & & 1; - let _: & &&&usize = & & & & 1; - let _: &&&&&usize = & & & & & 1; -} - -fn check_pat() { - let &_ = & 1_usize; - let &&_ = & & 1_usize; - let &&&_ = & & & 1_usize; - let & &&_ = & & & 1_usize; - let &&&&_ = & & & & 1_usize; - let & &&&_ = & & & & 1_usize; - let &&&&&_ = & & & & & 1_usize; -} - -pub fn main() {} diff --git a/tests/ui/double-type-import.rs b/tests/ui/double-type-import.rs deleted file mode 100644 index 6b1eb65d5ae..00000000000 --- a/tests/ui/double-type-import.rs +++ /dev/null @@ -1,13 +0,0 @@ -mod foo { - pub use self::bar::X; - use self::bar::X; - //~^ ERROR the name `X` is defined multiple times - - mod bar { - pub struct X; - } -} - -fn main() { - let _ = foo::X; -} diff --git a/tests/ui/double-type-import.stderr b/tests/ui/double-type-import.stderr deleted file mode 100644 index 8a8fe05ec19..00000000000 --- a/tests/ui/double-type-import.stderr +++ /dev/null @@ -1,13 +0,0 @@ -error[E0252]: the name `X` is defined multiple times - --> $DIR/double-type-import.rs:3:9 - | -LL | pub use self::bar::X; - | ------------ previous import of the type `X` here -LL | use self::bar::X; - | ^^^^^^^^^^^^ `X` reimported here - | - = note: `X` must be defined only once in the type namespace of this module - -error: aborting due to 1 previous error - -For more information about this error, try `rustc --explain E0252`. diff --git a/tests/ui/early-ret-binop-add.rs b/tests/ui/early-ret-binop-add.rs deleted file mode 100644 index 3fec66f35fb..00000000000 --- 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 7d87b0a7756..00000000000 --- 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/elide-errors-on-mismatched-tuple.stderr b/tests/ui/elide-errors-on-mismatched-tuple.stderr deleted file mode 100644 index f852a223b42..00000000000 --- a/tests/ui/elide-errors-on-mismatched-tuple.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error[E0308]: mismatched types - --> $DIR/elide-errors-on-mismatched-tuple.rs:14:9 - | -LL | let (a, b, c) = (A::new(), A::new()); // This tuple is 2 elements, should be three - | ^^^^^^^^^ -------------------- this expression has type `(A, A)` - | | - | expected a tuple with 2 elements, found one with 3 elements - | - = note: expected tuple `(A, A)` - found tuple `(_, _, _)` - -error: aborting due to 1 previous error - -For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/elided-test.rs b/tests/ui/elided-test.rs deleted file mode 100644 index 2bedc25e17b..00000000000 --- 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 7aebe5d8264..00000000000 --- 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 2161b28c58c..00000000000 --- 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/empty-allocation-non-null.rs b/tests/ui/empty-allocation-non-null.rs deleted file mode 100644 index 45035a42a5f..00000000000 --- a/tests/ui/empty-allocation-non-null.rs +++ /dev/null @@ -1,14 +0,0 @@ -//@ run-pass - -pub fn main() { - assert!(Some(Box::new(())).is_some()); - - let xs: Box<[()]> = Box::<[(); 0]>::new([]); - assert!(Some(xs).is_some()); - - struct Foo; - assert!(Some(Box::new(Foo)).is_some()); - - let ys: Box<[Foo]> = Box::<[Foo; 0]>::new([]); - assert!(Some(ys).is_some()); -} 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 00000000000..389d25210f7 --- /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/imports/duplicate-use-bindings.rs b/tests/ui/imports/duplicate-use-bindings.rs new file mode 100644 index 00000000000..8cec23ea732 --- /dev/null +++ b/tests/ui/imports/duplicate-use-bindings.rs @@ -0,0 +1,15 @@ +//! Test that duplicate use bindings in same namespace produce error + +mod foo { + pub use self::bar::X; + use self::bar::X; + //~^ ERROR the name `X` is defined multiple times + + mod bar { + pub struct X; + } +} + +fn main() { + let _ = foo::X; +} diff --git a/tests/ui/imports/duplicate-use-bindings.stderr b/tests/ui/imports/duplicate-use-bindings.stderr new file mode 100644 index 00000000000..1d4f1fc82db --- /dev/null +++ b/tests/ui/imports/duplicate-use-bindings.stderr @@ -0,0 +1,13 @@ +error[E0252]: the name `X` is defined multiple times + --> $DIR/duplicate-use-bindings.rs:5:9 + | +LL | pub use self::bar::X; + | ------------ previous import of the type `X` here +LL | use self::bar::X; + | ^^^^^^^^^^^^ `X` reimported here + | + = note: `X` must be defined only once in the type namespace of this module + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0252`. 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 00000000000..c36d041d296 --- /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/mismatched_types/elide-on-tuple-mismatch.stderr b/tests/ui/mismatched_types/elide-on-tuple-mismatch.stderr new file mode 100644 index 00000000000..7de45eb40ca --- /dev/null +++ b/tests/ui/mismatched_types/elide-on-tuple-mismatch.stderr @@ -0,0 +1,14 @@ +error[E0308]: mismatched types + --> $DIR/elide-on-tuple-mismatch.rs:19:9 + | +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 + | + = note: expected tuple `(A, A)` + found tuple `(_, _, _)` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0308`. diff --git a/tests/ui/parser/reference-whitespace-parsing.rs b/tests/ui/parser/reference-whitespace-parsing.rs new file mode 100644 index 00000000000..7109c5911ae --- /dev/null +++ b/tests/ui/parser/reference-whitespace-parsing.rs @@ -0,0 +1,37 @@ +//! Test parsing of multiple references with various whitespace arrangements + +//@ run-pass + +#![allow(dead_code)] + +fn check_expr() { + let _: & usize = &1; + let _: & & usize = &&1; + let _: & & & usize = &&&1; + let _: & & & usize = & &&1; + let _: & & & & usize = &&&&1; + let _: & & & & usize = & &&&1; + let _: & & & & & usize = &&&&&1; +} + +fn check_ty() { + let _: &usize = & 1; + let _: &&usize = & & 1; + let _: &&&usize = & & & 1; + let _: & &&usize = & & & 1; + let _: &&&&usize = & & & & 1; + let _: & &&&usize = & & & & 1; + let _: &&&&&usize = & & & & & 1; +} + +fn check_pat() { + let &_ = & 1_usize; + let &&_ = & & 1_usize; + let &&&_ = & & & 1_usize; + let & &&_ = & & & 1_usize; + let &&&&_ = & & & & 1_usize; + let & &&&_ = & & & & 1_usize; + let &&&&&_ = & & & & & 1_usize; +} + +pub fn main() {} 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 00000000000..97654581567 --- /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 00000000000..0bae690be2b --- /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 00000000000..aca82037a0c --- /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/transmute/diverging-fn-transmute.stderr b/tests/ui/transmute/diverging-fn-transmute.stderr new file mode 100644 index 00000000000..b9aeae7ed62 --- /dev/null +++ b/tests/ui/transmute/diverging-fn-transmute.stderr @@ -0,0 +1,15 @@ +error[E0308]: mismatched types + --> $DIR/diverging-fn-transmute.rs:5:9 + | +LL | fn assert_sizeof() -> ! { + | - expected `!` because of return type +LL | unsafe { +LL | ::std::mem::transmute::(panic!()) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `!`, found `[u8; 8]` + | + = note: expected type `!` + found array `[u8; 8]` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0308`. -- cgit 1.4.1-3-g733a5