diff options
| author | Michael Goulet <michael@errs.io> | 2024-03-31 21:03:59 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-03-31 21:03:59 -0400 |
| commit | 56dbeeb5ac05d8e34983db20453d72bdeb222cbe (patch) | |
| tree | b77eef40869a88e8e2dcb1a6781f311f55246dda | |
| parent | 88296bddf87d927228c5c8ff4d3ad6fa59ff9362 (diff) | |
| download | rust-56dbeeb5ac05d8e34983db20453d72bdeb222cbe.tar.gz rust-56dbeeb5ac05d8e34983db20453d72bdeb222cbe.zip | |
Add regression tests for 123303
| -rw-r--r-- | tests/ui/traits/stack-error-order-dependence-2.rs | 24 | ||||
| -rw-r--r-- | tests/ui/traits/stack-error-order-dependence.rs | 19 |
2 files changed, 43 insertions, 0 deletions
diff --git a/tests/ui/traits/stack-error-order-dependence-2.rs b/tests/ui/traits/stack-error-order-dependence-2.rs new file mode 100644 index 00000000000..323685aa15b --- /dev/null +++ b/tests/ui/traits/stack-error-order-dependence-2.rs @@ -0,0 +1,24 @@ +//@ check-pass +// Regression test for <https://github.com/rust-lang/rust/issues/123303>. +// This time EXCEPT without `dyn` builtin bounds :^) + +pub trait Trait: Supertrait {} + +trait Impossible {} +impl<F: ?Sized + Impossible> Trait for F {} + +pub trait Supertrait {} + +impl<T: ?Sized + Trait + Impossible> Supertrait for T {} + +fn needs_supertrait<T: ?Sized + Supertrait>() {} +fn needs_trait<T: ?Sized + Trait>() {} + +struct A; +impl Trait for A where A: Supertrait {} +impl Supertrait for A {} + +fn main() { + needs_supertrait::<A>(); + needs_trait::<A>(); +} diff --git a/tests/ui/traits/stack-error-order-dependence.rs b/tests/ui/traits/stack-error-order-dependence.rs new file mode 100644 index 00000000000..037c292a542 --- /dev/null +++ b/tests/ui/traits/stack-error-order-dependence.rs @@ -0,0 +1,19 @@ +//@ check-pass +// Regression test for <https://github.com/rust-lang/rust/issues/123303>. + +pub trait Trait: Supertrait {} + +trait Impossible {} +impl<F: ?Sized + Impossible> Trait for F {} + +pub trait Supertrait {} + +impl<T: ?Sized + Trait + Impossible> Supertrait for T {} + +fn needs_supertrait<T: ?Sized + Supertrait>() {} +fn needs_trait<T: ?Sized + Trait>() {} + +fn main() { + needs_supertrait::<dyn Trait>(); + needs_trait::<dyn Trait>(); +} |
