Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/regression/new_solver.rs')
-rw-r--r--crates/hir-ty/src/tests/regression/new_solver.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/regression/new_solver.rs b/crates/hir-ty/src/tests/regression/new_solver.rs
index 4df788638a..595f285bd9 100644
--- a/crates/hir-ty/src/tests/regression/new_solver.rs
+++ b/crates/hir-ty/src/tests/regression/new_solver.rs
@@ -116,3 +116,34 @@ fn main() {
"#]],
);
}
+
+#[test]
+fn no_infinite_loop_on_super_predicates_elaboration() {
+ check_infer(
+ r#"
+//- minicore: sized
+trait DimMax<Other: Dimension> {
+ type Output: Dimension;
+}
+
+trait Dimension: DimMax<<Self as Dimension>:: Smaller, Output = Self> {
+ type Smaller: Dimension;
+}
+
+fn test<T, U>(t: T)
+where
+ T: DimMax<U>,
+ U: Dimension,
+{
+ let t: <T as DimMax<U>>::Output = loop {};
+}
+"#,
+ expect![[r#"
+ 182..183 't': T
+ 230..280 '{ ... {}; }': ()
+ 240..241 't': <T as DimMax<U>>::Output
+ 270..277 'loop {}': !
+ 275..277 '{}': ()
+ "#]],
+ )
+}