summaryrefslogtreecommitdiffstats
path: root/src/test/ui/associated-types/param-env-normalize-cycle.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/associated-types/param-env-normalize-cycle.rs')
-rw-r--r--src/test/ui/associated-types/param-env-normalize-cycle.rs39
1 files changed, 0 insertions, 39 deletions
diff --git a/src/test/ui/associated-types/param-env-normalize-cycle.rs b/src/test/ui/associated-types/param-env-normalize-cycle.rs
deleted file mode 100644
index 12db595ed..000000000
--- a/src/test/ui/associated-types/param-env-normalize-cycle.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-// Minimized case from typenum that didn't compile because:
-// - We tried to normalize the ParamEnv of the second impl
-// - This requires trying to normalize `GrEq<Self, Square<Square<U>>>`
-// - This requires proving `Square<Square<U>>: Sized` so that the first impl
-// applies
-// - This requires Providing `Square<Square<U>>` is well-formed, so that we
-// can use the `Sized` bound on `Mul::Output`
-// - This requires proving `Square<U>: Mul`
-// - But first we tried normalizing the whole obligation, including the
-// ParamEnv, which leads to a cycle error.
-
-// check-pass
-
-trait PrivateSquareRoot {}
-
-pub trait Mul<Rhs = Self> {
- type Output;
-}
-
-pub trait IsGreaterOrEqual<Rhs> {
- type Output;
-}
-
-pub type Square<A> = <A as Mul>::Output;
-pub type GrEq<A, B> = <A as IsGreaterOrEqual<B>>::Output;
-
-impl<A, B> IsGreaterOrEqual<B> for A {
- type Output = ();
-}
-
-impl<U> PrivateSquareRoot for U
-where
- U: Mul,
- Square<U>: Mul,
- GrEq<Self, Square<Square<U>>>: Sized,
-{
-}
-
-fn main() {}