Revamp the fulfillment cache tracking to only cache trait-refs, which
was the major use-case, and to update the dep-graph. Other kinds of predicates are now excluded from the cache because there is no easy way to make a good dep-graph node for them, and because they are not believed to be that useful. :) Fixes #30741. (However, the test still gives wrong result for trans, for an independent reason which is fixed in the next commit.)
This commit is contained in:
parent
b5f85cffc8
commit
0bdefd7064
6 changed files with 80 additions and 32 deletions
|
|
@ -41,7 +41,7 @@ mod y {
|
|||
}
|
||||
|
||||
// FIXME(#30741) tcx fulfillment cache not tracked
|
||||
#[rustc_then_this_would_need(TypeckItemBody)] //~ ERROR no path
|
||||
#[rustc_then_this_would_need(TypeckItemBody)] //~ ERROR OK
|
||||
#[rustc_then_this_would_need(TransCrateItem)] //~ ERROR no path
|
||||
pub fn take_foo_with_char() {
|
||||
take_foo::<char>('a');
|
||||
|
|
@ -54,7 +54,7 @@ mod y {
|
|||
}
|
||||
|
||||
// FIXME(#30741) tcx fulfillment cache not tracked
|
||||
#[rustc_then_this_would_need(TypeckItemBody)] //~ ERROR no path
|
||||
#[rustc_then_this_would_need(TypeckItemBody)] //~ ERROR OK
|
||||
#[rustc_then_this_would_need(TransCrateItem)] //~ ERROR no path
|
||||
pub fn take_foo_with_u32() {
|
||||
take_foo::<u32>(22);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue