File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -1012,3 +1012,33 @@ fn lifetime_from_chalk_during_deref() {
1012
1012
"# ,
1013
1013
)
1014
1014
}
1015
+
1016
+ #[ test]
1017
+ fn issue_8686 ( ) {
1018
+ check_infer (
1019
+ r#"
1020
+ pub trait Try: FromResidual {
1021
+ type Output;
1022
+ type Residual;
1023
+ }
1024
+ pub trait FromResidual<R = <Self as Try>::Residual> {
1025
+ fn from_residual(residual: R) -> Self;
1026
+ }
1027
+
1028
+ struct ControlFlow<B, C>;
1029
+ impl<B, C> Try for ControlFlow<B, C> {
1030
+ type Output = C;
1031
+ type Residual = ControlFlow<B, !>;
1032
+ }
1033
+ impl<B, C> FromResidual for ControlFlow<B, C> {
1034
+ fn from_residual(r: ControlFlow<B, !>) -> Self { ControlFlow }
1035
+ }
1036
+
1037
+ fn test() {
1038
+ ControlFlow::from_residual(ControlFlow::<u32, !>);
1039
+ }
1040
+ "# ,
1041
+ expect ! [ [ r#"
1042
+ "# ] ] ,
1043
+ ) ;
1044
+ }
You can’t perform that action at this time.
0 commit comments