diff options
| author | Michael Goulet <michael@errs.io> | 2025-03-13 21:17:46 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2025-03-13 21:17:46 +0000 |
| commit | c0230f4a2904e968f4afd833e44db1f4ebe29b21 (patch) | |
| tree | 3162558adf0cd0bb2716d82ca1148b532cc3369c | |
| parent | aebbd424607b7797f231bc09f44226fcd3040d7e (diff) | |
| download | rust-c0230f4a2904e968f4afd833e44db1f4ebe29b21.tar.gz rust-c0230f4a2904e968f4afd833e44db1f4ebe29b21.zip | |
Flesh out tests
| -rw-r--r-- | tests/ui/traits/incomplete-infer-via-sized-wc.current.stderr | 9 | ||||
| -rw-r--r-- | tests/ui/traits/incomplete-infer-via-sized-wc.next.stderr | 9 | ||||
| -rw-r--r-- | tests/ui/traits/incomplete-infer-via-sized-wc.rs | 19 | ||||
| -rw-r--r-- | tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc-2.rs | 28 | ||||
| -rw-r--r-- | tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.current.stderr (renamed from tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.stderr) | 6 | ||||
| -rw-r--r-- | tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.next.stderr | 25 | ||||
| -rw-r--r-- | tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.rs | 9 |
7 files changed, 101 insertions, 4 deletions
diff --git a/tests/ui/traits/incomplete-infer-via-sized-wc.current.stderr b/tests/ui/traits/incomplete-infer-via-sized-wc.current.stderr new file mode 100644 index 00000000000..f4930bf890c --- /dev/null +++ b/tests/ui/traits/incomplete-infer-via-sized-wc.current.stderr @@ -0,0 +1,9 @@ +error[E0282]: type annotations needed + --> $DIR/incomplete-infer-via-sized-wc.rs:15:5 + | +LL | is_sized::<MaybeSized<_>>(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the function `is_sized` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0282`. diff --git a/tests/ui/traits/incomplete-infer-via-sized-wc.next.stderr b/tests/ui/traits/incomplete-infer-via-sized-wc.next.stderr new file mode 100644 index 00000000000..f4930bf890c --- /dev/null +++ b/tests/ui/traits/incomplete-infer-via-sized-wc.next.stderr @@ -0,0 +1,9 @@ +error[E0282]: type annotations needed + --> $DIR/incomplete-infer-via-sized-wc.rs:15:5 + | +LL | is_sized::<MaybeSized<_>>(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type of the type parameter `T` declared on the function `is_sized` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0282`. diff --git a/tests/ui/traits/incomplete-infer-via-sized-wc.rs b/tests/ui/traits/incomplete-infer-via-sized-wc.rs new file mode 100644 index 00000000000..9dcddea3551 --- /dev/null +++ b/tests/ui/traits/incomplete-infer-via-sized-wc.rs @@ -0,0 +1,19 @@ +//@ revisions: current next +//@ ignore-compare-mode-next-solver (explicit revisions) +//@[next] compile-flags: -Znext-solver + +// Exercises change in <https://github.com/rust-lang/rust/pull/138176>. + +struct MaybeSized<T: ?Sized>(T); + +fn is_sized<T: Sized>() -> Box<T> { todo!() } + +fn foo<T: ?Sized>() +where + MaybeSized<T>: Sized, +{ + is_sized::<MaybeSized<_>>(); + //~^ ERROR type annotations needed +} + +fn main() {} diff --git a/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc-2.rs b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc-2.rs new file mode 100644 index 00000000000..8a8f7b933b5 --- /dev/null +++ b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc-2.rs @@ -0,0 +1,28 @@ +//@ check-pass +//@ revisions: current next +//@ ignore-compare-mode-next-solver (explicit revisions) +//@[next] compile-flags: -Znext-solver + +// Exercises change in <https://github.com/rust-lang/rust/pull/138176>. + +trait Trait<T>: Sized {} +impl<T> Trait<T> for T {} + +fn is_sized<T: Sized>() {} + +fn normal_ref<'a, 'b, T>() +where + &'a u32: Trait<T>, +{ + is_sized::<&'b u32>(); +} + +struct MyRef<'a, U: ?Sized = ()>(&'a u32, U); +fn my_ref<'a, 'b, T>() +where + MyRef<'a>: Trait<T>, +{ + is_sized::<MyRef<'b>>(); +} + +fn main() {} diff --git a/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.stderr b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.current.stderr index a54574f743f..dd9393fae85 100644 --- a/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.stderr +++ b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.current.stderr @@ -1,5 +1,5 @@ error[E0308]: mismatched types - --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:7:23 + --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:13:23 | LL | (MyType<'a, T>,): Sized, | ^^^^^ lifetime mismatch @@ -7,14 +7,14 @@ LL | (MyType<'a, T>,): Sized, = note: expected trait `<MyType<'a, T> as Sized>` found trait `<MyType<'static, T> as Sized>` note: the lifetime `'a` as defined here... - --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:5:8 + --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:11:8 | LL | fn foo<'a, T: ?Sized>() | ^^ = note: ...does not necessarily outlive the static lifetime error: lifetime may not live long enough - --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:15:5 + --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:22:5 | LL | fn foo<'a, T: ?Sized>() | -- lifetime `'a` defined here diff --git a/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.next.stderr b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.next.stderr new file mode 100644 index 00000000000..05861877d41 --- /dev/null +++ b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.next.stderr @@ -0,0 +1,25 @@ +error[E0478]: lifetime bound not satisfied + --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:13:23 + | +LL | (MyType<'a, T>,): Sized, + | ^^^^^ + | +note: lifetime parameter instantiated with the lifetime `'a` as defined here + --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:11:8 + | +LL | fn foo<'a, T: ?Sized>() + | ^^ + = note: but lifetime parameter must outlive the static lifetime + +error: lifetime may not live long enough + --> $DIR/lifetime-incomplete-prefer-sized-builtin-over-wc.rs:22:5 + | +LL | fn foo<'a, T: ?Sized>() + | -- lifetime `'a` defined here +... +LL | is_sized::<(MyType<'a, T>,)>(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static` + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0478`. diff --git a/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.rs b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.rs index cc3303dccd5..ae7a6c9bba3 100644 --- a/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.rs +++ b/tests/ui/traits/lifetime-incomplete-prefer-sized-builtin-over-wc.rs @@ -1,3 +1,9 @@ +//@ revisions: current next +//@ ignore-compare-mode-next-solver (explicit revisions) +//@[next] compile-flags: -Znext-solver + +// Exercises change in <https://github.com/rust-lang/rust/pull/138176>. + struct MyType<'a, T: ?Sized>(&'a (), T); fn is_sized<T>() {} @@ -5,7 +11,8 @@ fn is_sized<T>() {} fn foo<'a, T: ?Sized>() where (MyType<'a, T>,): Sized, - //~^ ERROR mismatched types + //[current]~^ ERROR mismatched types + //[next]~^^ ERROR lifetime bound not satisfied MyType<'static, T>: Sized, { // Preferring the builtin `Sized` impl of tuples |
