You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Auto merge of #119849 - lcnr:eagerly-instantiate-binders, r=compiler-errors
more eagerly instantiate binders
The old solver sometimes incorrectly used `sub`, change it to explicitly instantiate binders and use `eq` instead. While doing so I also moved the instantiation before the normalize calls. This caused some observable changes, will explain these inline. This PR therefore requires a crater run and an FCP.
r? types
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
8
8
= note: `#[warn(incomplete_features)]` on by default
9
9
10
-
error[E0308]: mismatched types
10
+
error: implementation of `Send` is not general enough
11
11
--> $DIR/issue-110963-early.rs:14:5
12
12
|
13
13
LL | / spawn(async move {
@@ -16,17 +16,12 @@ LL | | if !hc.check().await {
16
16
LL | | log_health_check_failure().await;
17
17
LL | | }
18
18
LL | | });
19
-
| |______^ one type is more general than the other
19
+
| |______^ implementation of `Send` is not general enough
20
20
|
21
-
= note: expected trait `Send`
22
-
found trait `for<'a> Send`
23
-
note: the lifetime requirement is introduced here
24
-
--> $DIR/issue-110963-early.rs:34:17
25
-
|
26
-
LL | F: Future + Send + 'static,
27
-
| ^^^^
21
+
= note: `Send` would have to be implemented for the type `impl Future<Output = bool> { <HC as HealthCheck>::check<'0>() }`, for any two lifetimes `'0` and `'1`...
22
+
= note: ...but `Send` is actually implemented for the type `impl Future<Output = bool> { <HC as HealthCheck>::check<'2>() }`, for some specific lifetime `'2`
28
23
29
-
error[E0308]: mismatched types
24
+
error: implementation of `Send` is not general enough
30
25
--> $DIR/issue-110963-early.rs:14:5
31
26
|
32
27
LL | / spawn(async move {
@@ -35,17 +30,11 @@ LL | | if !hc.check().await {
35
30
LL | | log_health_check_failure().await;
36
31
LL | | }
37
32
LL | | });
38
-
| |______^ one type is more general than the other
39
-
|
40
-
= note: expected trait `Send`
41
-
found trait `for<'a> Send`
42
-
note: the lifetime requirement is introduced here
43
-
--> $DIR/issue-110963-early.rs:34:17
33
+
| |______^ implementation of `Send` is not general enough
44
34
|
45
-
LL | F: Future + Send + 'static,
46
-
| ^^^^
35
+
= note: `Send` would have to be implemented for the type `impl Future<Output = bool> { <HC as HealthCheck>::check<'0>() }`, for any two lifetimes `'0` and `'1`...
36
+
= note: ...but `Send` is actually implemented for the type `impl Future<Output = bool> { <HC as HealthCheck>::check<'2>() }`, for some specific lifetime `'2`
47
37
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
48
38
49
39
error: aborting due to 2 previous errors; 1 warning emitted
50
40
51
-
For more information about this error, try `rustc --explain E0308`.
0 commit comments