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`.