From fca5ba904c8fbba5be52e5e034b2339f893114b8 Mon Sep 17 00:00:00 2001 From: Viktor Kuksgauzen <47536339+Kuksgauzen@users.noreply.github.com> Date: Tue, 13 Oct 2026 20:41:55 +0400 Subject: [PATCH] Add regression test for higher-ranked param env normalization ICE --- ...r-ranked-param-env-normalization-155977.rs | 19 +++++++++++++++++++ ...nked-param-env-normalization-155977.stderr | 18 ++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.rs create mode 100644 tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.stderr diff --git a/tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.rs b/tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.rs new file mode 100644 index 0000000000000..0d45d1ce9b1c4 --- /dev/null +++ b/tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.rs @@ -0,0 +1,19 @@ +//@ compile-flags: -Znext-solver + +// Regression test for #155977: the new solver used to ICE while normalizing +// a higher-ranked where-clause in the param env. +// Fixed by eager param-env normalization in #156976. + +trait Trait { + type Output; +} + +fn walk2() +//~^ ERROR the trait bound +where + for<'a> F: 'a, + for<'a> >::Output: 'a, +{ +} + +fn main() {} diff --git a/tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.stderr b/tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.stderr new file mode 100644 index 0000000000000..1889e3be86aba --- /dev/null +++ b/tests/ui/traits/next-solver/normalize/higher-ranked-param-env-normalization-155977.stderr @@ -0,0 +1,18 @@ +error[E0277]: the trait bound `for<'a> F: Trait<&'a u32>` is not satisfied + --> $DIR/higher-ranked-param-env-normalization-155977.rs:11:1 + | +LL | / fn walk2() +LL | | +LL | | where +LL | | for<'a> F: 'a, +LL | | for<'a> >::Output: 'a, + | |______________________________________________^ the trait `for<'a> Trait<&'a u32>` is not implemented for `F` + | +help: consider further restricting type parameter `F` with trait `Trait` + | +LL | for<'a> F: 'a + for<'a> Trait<&'a u32>, + | ++++++++++++++++++++++++ + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0277`.