diff --git a/tests/ui/traits/next-solver/normalize-erased-closure-in-async-151299.rs b/tests/ui/traits/next-solver/normalize-erased-closure-in-async-151299.rs new file mode 100644 index 0000000000000..c60d1157202a3 --- /dev/null +++ b/tests/ui/traits/next-solver/normalize-erased-closure-in-async-151299.rs @@ -0,0 +1,14 @@ +// Regression test for . +// An invalid `impl Future` awaited inside a nested async block used to ICE with +// "Failed to normalize" in normalize_erasing_regions. +//@ edition: 2024 +//@ compile-flags: -Zvalidate-mir -Znext-solver=globally + +fn invalid_future() -> impl Future {} +//~^ ERROR `()` is not a future + +fn create_complex_future() -> impl Future { + async { &|| async { invalid_future().await } } +} + +fn main() {} diff --git a/tests/ui/traits/next-solver/normalize-erased-closure-in-async-151299.stderr b/tests/ui/traits/next-solver/normalize-erased-closure-in-async-151299.stderr new file mode 100644 index 0000000000000..6400da02b249d --- /dev/null +++ b/tests/ui/traits/next-solver/normalize-erased-closure-in-async-151299.stderr @@ -0,0 +1,11 @@ +error[E0277]: `()` is not a future + --> $DIR/normalize-erased-closure-in-async-151299.rs:7:24 + | +LL | fn invalid_future() -> impl Future {} + | ^^^^^^^^^^^ `()` is not a future + | + = help: the trait `Future` is not implemented for `()` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0277`.