diff options
| author | lcnr <rust@lcnr.de> | 2025-09-29 13:57:41 +0200 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2025-09-29 15:28:33 +0200 |
| commit | 0f2b79c36dcc4ec66125d6fa87694c7f5d39ebe8 (patch) | |
| tree | 4eedcaa3f9eb9f9b86233838320dcd6b66dcc2d6 /tests/ui/traits | |
| parent | 098a56890f25eaca5063988b0b0840fad83db250 (diff) | |
| download | rust-0f2b79c36dcc4ec66125d6fa87694c7f5d39ebe8.tar.gz rust-0f2b79c36dcc4ec66125d6fa87694c7f5d39ebe8.zip | |
add tests
Diffstat (limited to 'tests/ui/traits')
| -rw-r--r-- | tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-1.rs | 25 | ||||
| -rw-r--r-- | tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-2.rs | 14 |
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-1.rs b/tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-1.rs new file mode 100644 index 00000000000..e35e48dfcec --- /dev/null +++ b/tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-1.rs @@ -0,0 +1,25 @@ +//@ ignore-compare-mode-next-solver +//@ compile-flags: -Znext-solver +//@ check-pass + +// Regression test for trait-system-refactor-initiative#220. Builtin `Fn`-trait +// candidates required `for<'latebound> Output<'latebound>: Sized` which ended +// up resulting in overflow if the return type is an opaque in the defining scope. +// +// We now eagerly instantiate the binder of the function definition which avoids +// that overflow by relating the lifetime of the opaque to something from the +// input. +fn flat_map<T, F, I, G>(_: F, _: G) +where + F: FnOnce(T) -> I, + I: Iterator, + G: Fn(<I as Iterator>::Item) -> usize, +{ +} + +fn rarw<'a>(_: &'a ()) -> impl Iterator<Item = &'a str> { + flat_map(rarw, |x| x.len()); + std::iter::empty() +} + +fn main() {} diff --git a/tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-2.rs b/tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-2.rs new file mode 100644 index 00000000000..1d64e422d89 --- /dev/null +++ b/tests/ui/traits/next-solver/opaques/overflow-hr-fn-trait-sized-2.rs @@ -0,0 +1,14 @@ +//@ ignore-compare-mode-next-solver +//@ compile-flags: -Znext-solver +//@ check-pass + +// Regression test for trait-system-refactor-initiative#204, see +// the sibling test for more details. + +fn constrain<'a, F: FnOnce(&'a ())>(_: F) {} +fn foo<'a>(_: &'a ()) -> impl Sized + use<'a> { + constrain(foo); + () +} + +fn main() {} |
