bors
1b3a32958b
Auto merge of #122385 - lcnr:analyze-obligations-for-infer, r=compiler-errors
...
`obligations_for_self_ty`: use `ProofTreeVisitor` for nested goals
As always, dealing with proof trees continues to be a hacked together mess. After this PR and #124380 the only remaining blocker for core is https://github.com/rust-lang/trait-system-refactor-initiative/issues/90 . There is also a `ProofTreeVisitor` issue causing an ICE when compiling `alloc` which I will handle in a separate PR. This issue likely affects coherence diagnostics more generally.
The core idea is to extend the proof tree visitor to support visiting nested candidates without using a `probe`. We then simply recurse into nested candidates if they are the only potentially applicable candidate for a given goal and check whether the self type matches the expected one.
For that to work, we need to improve `CanonicalState` to also handle unconstrained inference variables created inside of the trait solver. This is done by extending the `var_values` of `CanoncalState` with each fresh inference variables. Furthermore, we also store the state of all inference variables at the end of each probe. When recursing into `InspectCandidates` we then unify the values of all these states.
r? `@compiler-errors`
2024-04-26 15:37:05 +00:00
..
2024-04-21 20:10:12 -04:00
2024-03-20 13:00:34 -04:00
2023-06-26 09:56:28 +00:00
2024-03-27 14:02:15 +00:00
2024-02-16 20:02:50 +00:00
2024-03-03 18:53:35 +00:00
2024-02-16 20:02:50 +00:00
2024-03-08 20:56:25 +00:00
2024-03-10 21:18:41 -04:00
2024-04-26 15:37:05 +00:00
2024-03-14 12:17:00 -04:00
2024-03-23 17:48:57 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-03-03 18:53:35 +00:00
2024-04-04 14:25:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-03-10 23:30:53 +08:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2024-02-01 03:30:26 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-06-19 15:39:55 +02:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-04-10 00:41:27 +00:00
2024-04-10 00:41:27 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-01-02 14:17:56 +00:00
2024-01-02 14:17:56 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-03-10 21:18:41 -04:00
2024-03-10 21:18:41 -04:00
2024-03-10 21:18:41 -04:00
2023-10-04 02:04:14 +00:00
2023-11-24 19:15:52 +01:00
2023-07-23 14:13:52 -04:00
2024-01-30 21:28:18 +00:00
2024-03-12 15:27:08 -04:00
2024-03-12 15:27:08 -04:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-14 10:37:56 +00:00
2023-01-14 10:37:56 +00:00
2024-02-16 20:02:50 +00:00
2024-03-24 10:57:20 +01:00
2024-03-24 10:57:20 +01:00
2024-03-24 10:57:20 +01:00
2024-03-24 10:57:20 +01:00
2024-03-24 10:57:20 +01:00
2024-03-24 10:57:20 +01:00
2023-06-27 17:52:26 +09:30
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 20:03:29 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2023-01-11 09:32:08 +00:00
2023-12-07 23:00:46 -05:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2023-01-11 09:32:08 +00:00
2024-03-21 16:36:17 +00:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-04-07 17:38:07 -03:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2024-03-03 16:30:48 -03:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-03-03 16:30:48 -03:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-05-12 00:10:52 +00:00
2024-03-03 16:30:48 -03:00
2024-03-03 16:30:48 -03:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-04-20 15:06:17 -03:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-03-10 21:18:41 -04:00
2024-02-16 20:02:50 +00:00
2024-01-09 21:08:16 +00:00
2024-03-07 14:26:31 +00:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-02-13 20:27:43 +00:00
2024-02-14 21:04:51 +00:00
2024-02-14 21:04:51 +00:00
2024-03-10 23:30:53 +08:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2024-01-09 21:08:16 +00:00
2024-01-09 21:08:16 +00:00
2023-01-11 09:32:08 +00:00
2023-10-29 23:55:46 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2024-02-14 11:00:30 +00:00
2024-03-07 06:27:09 +00:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-10-13 19:18:46 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-04-10 00:41:27 +00:00
2024-02-05 10:17:31 +00:00
2024-02-05 10:17:31 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-06-19 15:39:55 +02:00
2023-06-19 15:39:55 +02:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-01 03:30:26 +00:00
2023-01-11 09:32:08 +00:00
2023-12-05 17:15:46 +00:00
2024-01-09 21:08:16 +00:00
2024-01-09 21:08:16 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-01-30 21:28:18 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-09-21 22:20:58 +02:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-03-07 06:27:09 +00:00
2024-03-07 06:27:09 +00:00
2024-02-14 11:00:30 +00:00
2024-02-14 11:00:30 +00:00
2023-12-17 16:49:00 +08:00
2024-02-22 18:04:55 +00:00
2024-02-16 20:02:50 +00:00
2023-02-22 08:40:47 -07:00
2024-02-22 18:05:28 +00:00
2024-02-16 20:02:50 +00:00
2024-04-04 16:01:13 -04:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2024-03-21 16:36:17 +00:00
2024-01-12 16:33:29 +00:00
2024-01-12 16:33:29 +00:00
2024-01-30 19:07:18 +00:00
2024-04-21 20:10:12 -04:00
2023-01-11 09:32:08 +00:00
2024-02-22 18:05:27 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2023-10-04 02:04:14 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-07 10:42:01 +08:00
2024-04-25 10:03:17 -04:00
2024-04-25 10:03:17 -04:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-03-10 21:18:41 -04:00
2024-03-10 21:18:41 -04:00
2024-03-10 21:18:41 -04:00
2024-02-16 09:29:39 +00:00
2024-02-16 09:29:39 +00:00
2024-02-16 20:02:50 +00:00
2023-10-04 02:04:14 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-28 14:13:42 +00:00
2024-03-01 19:02:34 +00:00
2024-02-16 20:02:50 +00:00
2024-04-07 23:21:45 -04:00
2024-04-07 23:21:45 -04:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2024-03-10 23:23:46 -04:00
2024-04-06 23:25:58 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2023-11-24 19:15:52 +01:00
2023-12-05 22:24:33 +00:00
2024-03-27 14:02:15 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-01-05 09:30:27 +00:00
2024-01-05 10:00:59 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2024-02-08 08:10:43 +00:00
2024-02-08 08:10:43 +00:00
2024-03-20 17:29:58 +00:00
2024-03-20 17:29:58 +00:00
2024-03-31 21:03:59 -04:00
2024-03-31 21:03:59 -04:00
2023-01-11 09:32:08 +00:00
2024-01-24 02:53:15 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-22 18:18:33 +01:00
2024-02-22 18:18:33 +01:00
2024-03-21 00:07:44 +00:00
2024-03-21 00:07:44 +00:00
2023-10-04 02:04:14 +00:00
2023-10-04 02:04:14 +00:00
2023-10-04 02:04:14 +00:00
2023-10-04 02:04:14 +00:00
2023-01-11 09:32:08 +00:00
2024-02-01 03:30:26 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-01-11 09:32:08 +00:00
2023-02-23 10:27:06 -07:00
2023-10-29 23:55:46 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-01-13 18:20:24 +00:00
2024-04-21 20:10:12 -04:00
2023-11-12 13:51:16 +01:00
2023-11-24 19:15:52 +01:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-03-25 20:20:01 +01:00
2024-03-25 20:20:01 +01:00
2023-06-26 09:56:28 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2023-11-24 19:15:52 +01:00
2023-06-26 09:56:28 +00:00
2023-06-26 09:56:28 +00:00
2023-06-26 09:56:28 +00:00
2023-11-24 19:15:52 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-01-30 21:28:18 +00:00
2023-01-11 09:32:08 +00:00
2024-02-09 20:47:50 -08:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-01-11 09:32:08 +00:00
2023-11-24 19:15:52 +01:00
2024-02-22 18:18:33 +01:00
2024-02-22 18:18:33 +01:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2024-02-16 20:02:50 +00:00
2023-04-02 19:42:30 -04:00
2023-12-07 23:00:46 -05:00