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
don't completely reset `HeadUsages`
This is really subtle ☠️ I've actually went and added testing for `search_graph.ignore_candidate_head_usages` to https://github.com/lcnr/search_graph_fuzz now. I should have done that when I originally implemented but didn't quite know how to do so back then.
The search graph is far too subtle to think through it manually. I've added the affected proof tree to https://github.com/rust-lang/trait-system-refactor-initiative/blob/main/notes/next-solver/search-graph/general.md#keeping-provisional-cache-entries-on-rerun. It's
- A
- B
- C (depends on B and gets dropped when rerunning)
- D (does not depend on B so we keep it around when rerunning)
- C (irrevant candidate)
- A
- B
- D
- C (irrevant candidate)
- D
- A
- rerun
- C (use provisional cache entry which doesn't depend on B)
- D (use provisional cache entry which doesn't depend on B)
Fixes the ICE in rust-lang/trait-system-refactor-initiative#246 (comment). I think this issue is brittle enough that adding that as a test isn't really useful. Any small change to the search graph will prevent it from testing this. We do test this fix via the fuzzer.
r? `@BoxyUwU`
0 commit comments