]> git.lizzy.rs Git - rust.git/commitdiff
Add test for #8686
authorFlorian Diebold <flodiebold@gmail.com>
Thu, 29 Apr 2021 18:00:21 +0000 (20:00 +0200)
committerFlorian Diebold <flodiebold@gmail.com>
Thu, 29 Apr 2021 18:00:21 +0000 (20:00 +0200)
crates/hir_ty/src/tests/regression.rs

index 9cd9f473d74f0bdff0119cb81d0ea8003186f462..add12c6dbe9f4f64b283e2e78b21120185558b56 100644 (file)
@@ -1012,3 +1012,33 @@ fn clone_iter<T>(s: Iter<T>) {
         "#,
     )
 }
+
+#[test]
+fn issue_8686() {
+    check_infer(
+        r#"
+pub trait Try: FromResidual {
+    type Output;
+    type Residual;
+}
+pub trait FromResidual<R = <Self as Try>::Residual> {
+     fn from_residual(residual: R) -> Self;
+}
+
+struct ControlFlow<B, C>;
+impl<B, C> Try for ControlFlow<B, C> {
+    type Output = C;
+    type Residual = ControlFlow<B, !>;
+}
+impl<B, C> FromResidual for ControlFlow<B, C> {
+    fn from_residual(r: ControlFlow<B, !>) -> Self { ControlFlow }
+}
+
+fn test() {
+    ControlFlow::from_residual(ControlFlow::<u32, !>);
+}
+        "#,
+        expect![[r#"
+        "#]],
+    );
+}