rust/compiler/rustc_trait_selection/src
Aaron Hill 40ef1d3223
Re-introduce concept of projection cache 'completion'
Instead of clearing out the cache entirely, we store
the intermediate evaluation result into the cache entry.
This accomplishes several things:

* We avoid the performance hit associated with re-evaluating
  the sub-obligations
* We avoid causing issues with incremental compilation, since
  the final evaluation result is always the same
* We avoid affecting other uses of the same `InferCtxt` which
  might care about 'side effects' from processing the sub-obligations
  (e,g. region constraints). Only code that is specifically aware
   of the new 'complete' code is affected
2021-12-18 19:07:14 -05:00
..
traits Re-introduce concept of projection cache 'completion' 2021-12-18 19:07:14 -05:00
autoderef.rs Revert "Auto merge of #91491 - spastorino:revert-91354, r=oli-obk" 2021-12-12 12:34:46 +08:00
infer.rs Revert "Auto merge of #91491 - spastorino:revert-91354, r=oli-obk" 2021-12-12 12:34:46 +08:00
lib.rs Re-introduce concept of projection cache 'completion' 2021-12-18 19:07:14 -05:00
opaque_types.rs Remove in_band_lifetimes from rustc_trait_selection 2021-12-15 21:52:30 +00:00