From 4b6c3d923f9c9ec869bfc77e6c08e98f9de87ac8 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Sun, 29 Jun 2025 22:47:01 +0500 Subject: [PATCH 1/2] moved & deleted some tests --- .../ui/{newlambdas.rs => closures/basic-closure-syntax.rs} | 0 .../newtype-with-generics.rs} | 0 .../{new-impl-syntax.rs => impl-trait/basic-trait-impl.rs} | 0 tests/ui/new-import-syntax.rs | 5 ----- tests/ui/new-style-constants.rs | 7 ------- .../unicode-escape-sequences.rs} | 0 tests/ui/{newtype.rs => structs/basic-newtype-pattern.rs} | 0 .../{no_send-enum.rs => traits/enum-negative-send-impl.rs} | 0 .../enum-negative-send-impl.stderr} | 0 .../enum-negative-sync-impl.rs} | 0 .../enum-negative-sync-impl.stderr} | 0 tests/ui/{no_send-rc.rs => traits/rc-not-send.rs} | 0 tests/ui/{no_send-rc.stderr => traits/rc-not-send.stderr} | 0 .../struct-negative-sync-impl.rs} | 0 .../struct-negative-sync-impl.stderr} | 0 15 files changed, 12 deletions(-) rename tests/ui/{newlambdas.rs => closures/basic-closure-syntax.rs} (100%) rename tests/ui/{newtype-polymorphic.rs => generics/newtype-with-generics.rs} (100%) rename tests/ui/{new-impl-syntax.rs => impl-trait/basic-trait-impl.rs} (100%) delete mode 100644 tests/ui/new-import-syntax.rs delete mode 100644 tests/ui/new-style-constants.rs rename tests/ui/{new-unicode-escapes.rs => parser/unicode-escape-sequences.rs} (100%) rename tests/ui/{newtype.rs => structs/basic-newtype-pattern.rs} (100%) rename tests/ui/{no_send-enum.rs => traits/enum-negative-send-impl.rs} (100%) rename tests/ui/{no_send-enum.stderr => traits/enum-negative-send-impl.stderr} (100%) rename tests/ui/{no_share-enum.rs => traits/enum-negative-sync-impl.rs} (100%) rename tests/ui/{no_share-enum.stderr => traits/enum-negative-sync-impl.stderr} (100%) rename tests/ui/{no_send-rc.rs => traits/rc-not-send.rs} (100%) rename tests/ui/{no_send-rc.stderr => traits/rc-not-send.stderr} (100%) rename tests/ui/{no_share-struct.rs => traits/struct-negative-sync-impl.rs} (100%) rename tests/ui/{no_share-struct.stderr => traits/struct-negative-sync-impl.stderr} (100%) diff --git a/tests/ui/newlambdas.rs b/tests/ui/closures/basic-closure-syntax.rs similarity index 100% rename from tests/ui/newlambdas.rs rename to tests/ui/closures/basic-closure-syntax.rs diff --git a/tests/ui/newtype-polymorphic.rs b/tests/ui/generics/newtype-with-generics.rs similarity index 100% rename from tests/ui/newtype-polymorphic.rs rename to tests/ui/generics/newtype-with-generics.rs diff --git a/tests/ui/new-impl-syntax.rs b/tests/ui/impl-trait/basic-trait-impl.rs similarity index 100% rename from tests/ui/new-impl-syntax.rs rename to tests/ui/impl-trait/basic-trait-impl.rs diff --git a/tests/ui/new-import-syntax.rs b/tests/ui/new-import-syntax.rs deleted file mode 100644 index 547900fab6128..0000000000000 --- a/tests/ui/new-import-syntax.rs +++ /dev/null @@ -1,5 +0,0 @@ -//@ run-pass - -pub fn main() { - println!("Hello world!"); -} diff --git a/tests/ui/new-style-constants.rs b/tests/ui/new-style-constants.rs deleted file mode 100644 index e33a2da38785e..0000000000000 --- a/tests/ui/new-style-constants.rs +++ /dev/null @@ -1,7 +0,0 @@ -//@ run-pass - -static FOO: isize = 3; - -pub fn main() { - println!("{}", FOO); -} diff --git a/tests/ui/new-unicode-escapes.rs b/tests/ui/parser/unicode-escape-sequences.rs similarity index 100% rename from tests/ui/new-unicode-escapes.rs rename to tests/ui/parser/unicode-escape-sequences.rs diff --git a/tests/ui/newtype.rs b/tests/ui/structs/basic-newtype-pattern.rs similarity index 100% rename from tests/ui/newtype.rs rename to tests/ui/structs/basic-newtype-pattern.rs diff --git a/tests/ui/no_send-enum.rs b/tests/ui/traits/enum-negative-send-impl.rs similarity index 100% rename from tests/ui/no_send-enum.rs rename to tests/ui/traits/enum-negative-send-impl.rs diff --git a/tests/ui/no_send-enum.stderr b/tests/ui/traits/enum-negative-send-impl.stderr similarity index 100% rename from tests/ui/no_send-enum.stderr rename to tests/ui/traits/enum-negative-send-impl.stderr diff --git a/tests/ui/no_share-enum.rs b/tests/ui/traits/enum-negative-sync-impl.rs similarity index 100% rename from tests/ui/no_share-enum.rs rename to tests/ui/traits/enum-negative-sync-impl.rs diff --git a/tests/ui/no_share-enum.stderr b/tests/ui/traits/enum-negative-sync-impl.stderr similarity index 100% rename from tests/ui/no_share-enum.stderr rename to tests/ui/traits/enum-negative-sync-impl.stderr diff --git a/tests/ui/no_send-rc.rs b/tests/ui/traits/rc-not-send.rs similarity index 100% rename from tests/ui/no_send-rc.rs rename to tests/ui/traits/rc-not-send.rs diff --git a/tests/ui/no_send-rc.stderr b/tests/ui/traits/rc-not-send.stderr similarity index 100% rename from tests/ui/no_send-rc.stderr rename to tests/ui/traits/rc-not-send.stderr diff --git a/tests/ui/no_share-struct.rs b/tests/ui/traits/struct-negative-sync-impl.rs similarity index 100% rename from tests/ui/no_share-struct.rs rename to tests/ui/traits/struct-negative-sync-impl.rs diff --git a/tests/ui/no_share-struct.stderr b/tests/ui/traits/struct-negative-sync-impl.stderr similarity index 100% rename from tests/ui/no_share-struct.stderr rename to tests/ui/traits/struct-negative-sync-impl.stderr From bf5910d9bb0c5cc3e4fb1a1a9ed3d73e26793c71 Mon Sep 17 00:00:00 2001 From: Kivooeo Date: Sun, 29 Jun 2025 23:13:37 +0500 Subject: [PATCH 2/2] cleaned up some tests --- tests/ui/closures/basic-closure-syntax.rs | 33 +++++++++++++--- tests/ui/generics/newtype-with-generics.rs | 39 +++++++++++-------- tests/ui/impl-trait/basic-trait-impl.rs | 8 ++-- tests/ui/parser/unicode-escape-sequences.rs | 6 +++ tests/ui/structs/basic-newtype-pattern.rs | 24 ++++++------ tests/ui/traits/enum-negative-send-impl.rs | 14 ++++--- .../ui/traits/enum-negative-send-impl.stderr | 24 ++++++------ tests/ui/traits/enum-negative-sync-impl.rs | 14 +++++-- .../ui/traits/enum-negative-sync-impl.stderr | 24 ++++++------ tests/ui/traits/rc-not-send.rs | 8 ++-- tests/ui/traits/rc-not-send.stderr | 18 ++++----- tests/ui/traits/struct-negative-sync-impl.rs | 19 ++++++--- .../traits/struct-negative-sync-impl.stderr | 18 ++++----- 13 files changed, 152 insertions(+), 97 deletions(-) diff --git a/tests/ui/closures/basic-closure-syntax.rs b/tests/ui/closures/basic-closure-syntax.rs index 75e851fb73a28..1d968f8cf4af7 100644 --- a/tests/ui/closures/basic-closure-syntax.rs +++ b/tests/ui/closures/basic-closure-syntax.rs @@ -1,14 +1,35 @@ -//@ run-pass -// Tests for the new |args| expr lambda syntax +//! Test basic closure syntax and usage with generic functions. +//! +//! This test checks that closure syntax works correctly for: +//! - Closures with parameters and return values +//! - Closures without parameters (both expression and block forms) +//! - Integration with generic functions and FnOnce trait bounds +//@ run-pass -fn f(i: isize, f: F) -> isize where F: FnOnce(isize) -> isize { f(i) } +fn f(i: isize, f: F) -> isize +where + F: FnOnce(isize) -> isize, +{ + f(i) +} -fn g(_g: G) where G: FnOnce() { } +fn g(_g: G) +where + G: FnOnce(), +{ +} pub fn main() { + // Closure with parameter that returns the same value assert_eq!(f(10, |a| a), 10); - g(||()); + + // Closure without parameters - expression form + g(|| ()); + + // Test closure reuse in generic context assert_eq!(f(10, |a| a), 10); - g(||{}); + + // Closure without parameters - block form + g(|| {}); } diff --git a/tests/ui/generics/newtype-with-generics.rs b/tests/ui/generics/newtype-with-generics.rs index 146d49fdf6819..c5e200e4bc4c4 100644 --- a/tests/ui/generics/newtype-with-generics.rs +++ b/tests/ui/generics/newtype-with-generics.rs @@ -1,27 +1,32 @@ -//@ run-pass - -#![allow(non_camel_case_types)] +//! Test newtype pattern with generic parameters. +//@ run-pass #[derive(Clone)] -struct myvec(Vec ); +struct MyVec(Vec); -fn myvec_deref(mv: myvec) -> Vec { - let myvec(v) = mv; - return v.clone(); +fn extract_inner_vec(wrapper: MyVec) -> Vec { + let MyVec(inner_vec) = wrapper; + inner_vec.clone() } -fn myvec_elt(mv: myvec) -> X { - let myvec(v) = mv; - return v.into_iter().next().unwrap(); +fn get_first_element(wrapper: MyVec) -> T { + let MyVec(inner_vec) = wrapper; + inner_vec.into_iter().next().unwrap() } pub fn main() { - let mv = myvec(vec![1, 2, 3]); - let mv_clone = mv.clone(); - let mv_clone = myvec_deref(mv_clone); - assert_eq!(mv_clone[1], 2); - assert_eq!(myvec_elt(mv.clone()), 1); - let myvec(v) = mv; - assert_eq!(v[2], 3); + let my_vec = MyVec(vec![1, 2, 3]); + let cloned_vec = my_vec.clone(); + + // Test extracting inner vector + let extracted = extract_inner_vec(cloned_vec); + assert_eq!(extracted[1], 2); + + // Test getting first element + assert_eq!(get_first_element(my_vec.clone()), 1); + + // Test direct destructuring + let MyVec(inner) = my_vec; + assert_eq!(inner[2], 3); } diff --git a/tests/ui/impl-trait/basic-trait-impl.rs b/tests/ui/impl-trait/basic-trait-impl.rs index 124d604e6a87a..2706c9c179879 100644 --- a/tests/ui/impl-trait/basic-trait-impl.rs +++ b/tests/ui/impl-trait/basic-trait-impl.rs @@ -1,10 +1,12 @@ +//! Test basic trait implementation syntax for both simple and generic types. + //@ run-pass use std::fmt; struct Thingy { x: isize, - y: isize + y: isize, } impl fmt::Debug for Thingy { @@ -14,10 +16,10 @@ impl fmt::Debug for Thingy { } struct PolymorphicThingy { - x: T + x: T, } -impl fmt::Debug for PolymorphicThingy { +impl fmt::Debug for PolymorphicThingy { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{:?}", self.x) } diff --git a/tests/ui/parser/unicode-escape-sequences.rs b/tests/ui/parser/unicode-escape-sequences.rs index 867a50da081c7..8b084866f196e 100644 --- a/tests/ui/parser/unicode-escape-sequences.rs +++ b/tests/ui/parser/unicode-escape-sequences.rs @@ -1,6 +1,12 @@ +//! Test ES6-style Unicode escape sequences in string literals. +//! +//! Regression test for RFC 446 implementation. +//! See . + //@ run-pass pub fn main() { + // Basic Unicode escape - snowman character let s = "\u{2603}"; assert_eq!(s, "☃"); diff --git a/tests/ui/structs/basic-newtype-pattern.rs b/tests/ui/structs/basic-newtype-pattern.rs index 8a07c67eb4f9c..38ccd0ea8e0c2 100644 --- a/tests/ui/structs/basic-newtype-pattern.rs +++ b/tests/ui/structs/basic-newtype-pattern.rs @@ -1,23 +1,25 @@ +//! Test basic newtype pattern functionality. + //@ run-pass -#![allow(non_camel_case_types)] #[derive(Copy, Clone)] -struct mytype(Mytype); +struct Counter(CounterData); #[derive(Copy, Clone)] -struct Mytype { - compute: fn(mytype) -> isize, +struct CounterData { + compute: fn(Counter) -> isize, val: isize, } -fn compute(i: mytype) -> isize { - let mytype(m) = i; - return m.val + 20; +fn compute_value(counter: Counter) -> isize { + let Counter(data) = counter; + data.val + 20 } pub fn main() { - let myval = mytype(Mytype{compute: compute, val: 30}); - println!("{}", compute(myval)); - let mytype(m) = myval; - assert_eq!((m.compute)(myval), 50); + let my_counter = Counter(CounterData { compute: compute_value, val: 30 }); + + // Test destructuring and function pointer call + let Counter(data) = my_counter; + assert_eq!((data.compute)(my_counter), 50); } diff --git a/tests/ui/traits/enum-negative-send-impl.rs b/tests/ui/traits/enum-negative-send-impl.rs index bd560649b990e..6bff42e999919 100644 --- a/tests/ui/traits/enum-negative-send-impl.rs +++ b/tests/ui/traits/enum-negative-send-impl.rs @@ -1,3 +1,7 @@ +//! Test that enums inherit Send/!Send properties from their variants. +//! +//! Uses the unstable `negative_impls` feature to explicitly opt-out of Send. + #![feature(negative_impls)] use std::marker::Send; @@ -5,14 +9,14 @@ use std::marker::Send; struct NoSend; impl !Send for NoSend {} -enum Foo { - A(NoSend) +enum Container { + WithNoSend(NoSend), } -fn bar(_: T) {} +fn requires_send(_: T) {} fn main() { - let x = Foo::A(NoSend); - bar(x); + let container = Container::WithNoSend(NoSend); + requires_send(container); //~^ ERROR `NoSend` cannot be sent between threads safely } diff --git a/tests/ui/traits/enum-negative-send-impl.stderr b/tests/ui/traits/enum-negative-send-impl.stderr index 3b66c7db545e1..1992becccf40e 100644 --- a/tests/ui/traits/enum-negative-send-impl.stderr +++ b/tests/ui/traits/enum-negative-send-impl.stderr @@ -1,22 +1,22 @@ error[E0277]: `NoSend` cannot be sent between threads safely - --> $DIR/no_send-enum.rs:16:9 + --> $DIR/enum-negative-send-impl.rs:20:19 | -LL | bar(x); - | --- ^ `NoSend` cannot be sent between threads safely +LL | requires_send(container); + | ------------- ^^^^^^^^^ `NoSend` cannot be sent between threads safely | | | required by a bound introduced by this call | - = help: within `Foo`, the trait `Send` is not implemented for `NoSend` -note: required because it appears within the type `Foo` - --> $DIR/no_send-enum.rs:8:6 + = help: within `Container`, the trait `Send` is not implemented for `NoSend` +note: required because it appears within the type `Container` + --> $DIR/enum-negative-send-impl.rs:12:6 | -LL | enum Foo { - | ^^^ -note: required by a bound in `bar` - --> $DIR/no_send-enum.rs:12:11 +LL | enum Container { + | ^^^^^^^^^ +note: required by a bound in `requires_send` + --> $DIR/enum-negative-send-impl.rs:16:21 | -LL | fn bar(_: T) {} - | ^^^^ required by this bound in `bar` +LL | fn requires_send(_: T) {} + | ^^^^ required by this bound in `requires_send` error: aborting due to 1 previous error diff --git a/tests/ui/traits/enum-negative-sync-impl.rs b/tests/ui/traits/enum-negative-sync-impl.rs index 44bf1913e7aac..aa81a9fbbf9a9 100644 --- a/tests/ui/traits/enum-negative-sync-impl.rs +++ b/tests/ui/traits/enum-negative-sync-impl.rs @@ -1,3 +1,7 @@ +//! Test that enums inherit Sync/!Sync properties from their variants. +//! +//! Uses the unstable `negative_impls` feature to explicitly opt-out of Sync. + #![feature(negative_impls)] use std::marker::Sync; @@ -5,12 +9,14 @@ use std::marker::Sync; struct NoSync; impl !Sync for NoSync {} -enum Foo { A(NoSync) } +enum Container { + WithNoSync(NoSync), +} -fn bar(_: T) {} +fn requires_sync(_: T) {} fn main() { - let x = Foo::A(NoSync); - bar(x); + let container = Container::WithNoSync(NoSync); + requires_sync(container); //~^ ERROR `NoSync` cannot be shared between threads safely [E0277] } diff --git a/tests/ui/traits/enum-negative-sync-impl.stderr b/tests/ui/traits/enum-negative-sync-impl.stderr index 89939216d5b16..a97b7a36a7bec 100644 --- a/tests/ui/traits/enum-negative-sync-impl.stderr +++ b/tests/ui/traits/enum-negative-sync-impl.stderr @@ -1,22 +1,22 @@ error[E0277]: `NoSync` cannot be shared between threads safely - --> $DIR/no_share-enum.rs:14:9 + --> $DIR/enum-negative-sync-impl.rs:20:19 | -LL | bar(x); - | --- ^ `NoSync` cannot be shared between threads safely +LL | requires_sync(container); + | ------------- ^^^^^^^^^ `NoSync` cannot be shared between threads safely | | | required by a bound introduced by this call | - = help: within `Foo`, the trait `Sync` is not implemented for `NoSync` -note: required because it appears within the type `Foo` - --> $DIR/no_share-enum.rs:8:6 + = help: within `Container`, the trait `Sync` is not implemented for `NoSync` +note: required because it appears within the type `Container` + --> $DIR/enum-negative-sync-impl.rs:12:6 | -LL | enum Foo { A(NoSync) } - | ^^^ -note: required by a bound in `bar` - --> $DIR/no_share-enum.rs:10:11 +LL | enum Container { + | ^^^^^^^^^ +note: required by a bound in `requires_sync` + --> $DIR/enum-negative-sync-impl.rs:16:21 | -LL | fn bar(_: T) {} - | ^^^^ required by this bound in `bar` +LL | fn requires_sync(_: T) {} + | ^^^^ required by this bound in `requires_sync` error: aborting due to 1 previous error diff --git a/tests/ui/traits/rc-not-send.rs b/tests/ui/traits/rc-not-send.rs index f31db15ef2eb6..83084c6173a00 100644 --- a/tests/ui/traits/rc-not-send.rs +++ b/tests/ui/traits/rc-not-send.rs @@ -1,9 +1,11 @@ +//! Test that `Rc` does not implement `Send`. + use std::rc::Rc; -fn bar(_: T) {} +fn requires_send(_: T) {} fn main() { - let x = Rc::new(5); - bar(x); + let rc_value = Rc::new(5); + requires_send(rc_value); //~^ ERROR `Rc<{integer}>` cannot be sent between threads safely } diff --git a/tests/ui/traits/rc-not-send.stderr b/tests/ui/traits/rc-not-send.stderr index 1430a7a29ea26..d6171a39ad047 100644 --- a/tests/ui/traits/rc-not-send.stderr +++ b/tests/ui/traits/rc-not-send.stderr @@ -1,21 +1,21 @@ error[E0277]: `Rc<{integer}>` cannot be sent between threads safely - --> $DIR/no_send-rc.rs:7:9 + --> $DIR/rc-not-send.rs:9:19 | -LL | bar(x); - | --- ^ `Rc<{integer}>` cannot be sent between threads safely +LL | requires_send(rc_value); + | ------------- ^^^^^^^^ `Rc<{integer}>` cannot be sent between threads safely | | | required by a bound introduced by this call | = help: the trait `Send` is not implemented for `Rc<{integer}>` -note: required by a bound in `bar` - --> $DIR/no_send-rc.rs:3:11 +note: required by a bound in `requires_send` + --> $DIR/rc-not-send.rs:5:21 | -LL | fn bar(_: T) {} - | ^^^^ required by this bound in `bar` +LL | fn requires_send(_: T) {} + | ^^^^ required by this bound in `requires_send` help: consider dereferencing here | -LL | bar(*x); - | + +LL | requires_send(*rc_value); + | + error: aborting due to 1 previous error diff --git a/tests/ui/traits/struct-negative-sync-impl.rs b/tests/ui/traits/struct-negative-sync-impl.rs index 7d8a36a76f274..d32846276f626 100644 --- a/tests/ui/traits/struct-negative-sync-impl.rs +++ b/tests/ui/traits/struct-negative-sync-impl.rs @@ -1,14 +1,21 @@ +//! Test negative Sync implementation on structs. +//! +//! Uses the unstable `negative_impls` feature to explicitly opt-out of Sync. + #![feature(negative_impls)] use std::marker::Sync; -struct Foo { a: isize } -impl !Sync for Foo {} +struct NotSync { + value: isize, +} + +impl !Sync for NotSync {} -fn bar(_: T) {} +fn requires_sync(_: T) {} fn main() { - let x = Foo { a: 5 }; - bar(x); - //~^ ERROR `Foo` cannot be shared between threads safely [E0277] + let not_sync = NotSync { value: 5 }; + requires_sync(not_sync); + //~^ ERROR `NotSync` cannot be shared between threads safely [E0277] } diff --git a/tests/ui/traits/struct-negative-sync-impl.stderr b/tests/ui/traits/struct-negative-sync-impl.stderr index 9c7a921b8d8ba..c5fd13f42e50e 100644 --- a/tests/ui/traits/struct-negative-sync-impl.stderr +++ b/tests/ui/traits/struct-negative-sync-impl.stderr @@ -1,17 +1,17 @@ -error[E0277]: `Foo` cannot be shared between threads safely - --> $DIR/no_share-struct.rs:12:9 +error[E0277]: `NotSync` cannot be shared between threads safely + --> $DIR/struct-negative-sync-impl.rs:19:19 | -LL | bar(x); - | --- ^ `Foo` cannot be shared between threads safely +LL | requires_sync(not_sync); + | ------------- ^^^^^^^^ `NotSync` cannot be shared between threads safely | | | required by a bound introduced by this call | - = help: the trait `Sync` is not implemented for `Foo` -note: required by a bound in `bar` - --> $DIR/no_share-struct.rs:8:11 + = help: the trait `Sync` is not implemented for `NotSync` +note: required by a bound in `requires_sync` + --> $DIR/struct-negative-sync-impl.rs:15:21 | -LL | fn bar(_: T) {} - | ^^^^ required by this bound in `bar` +LL | fn requires_sync(_: T) {} + | ^^^^ required by this bound in `requires_sync` error: aborting due to 1 previous error