add ParamEnv to the trait_cache key
This commit is contained in:
parent
dcb4378e18
commit
77d3ca1bad
1 changed files with 4 additions and 4 deletions
|
@ -38,17 +38,17 @@ impl<'a, 'tcx> TyCtxt<'a, 'tcx, 'tcx> {
|
|||
{
|
||||
// Remove any references to regions; this helps improve caching.
|
||||
let trait_ref = self.erase_regions(&trait_ref);
|
||||
let param_env = ty::ParamEnv::empty(Reveal::All);
|
||||
|
||||
self.trans_trait_caches.trait_cache.memoize(trait_ref, || {
|
||||
self.trans_trait_caches.trait_cache.memoize((param_env, trait_ref), || {
|
||||
debug!("trans::fulfill_obligation(trait_ref={:?}, def_id={:?})",
|
||||
trait_ref, trait_ref.def_id());
|
||||
(param_env, trait_ref), trait_ref.def_id());
|
||||
|
||||
// Do the initial selection for the obligation. This yields the
|
||||
// shallow result we are looking for -- that is, what specific impl.
|
||||
self.infer_ctxt().enter(|infcx| {
|
||||
let mut selcx = SelectionContext::new(&infcx);
|
||||
|
||||
let param_env = ty::ParamEnv::empty(Reveal::All);
|
||||
let obligation_cause = ObligationCause::misc(span,
|
||||
ast::DUMMY_NODE_ID);
|
||||
let obligation = Obligation::new(obligation_cause,
|
||||
|
@ -167,7 +167,7 @@ pub struct TraitSelectionCache<'tcx> {
|
|||
}
|
||||
|
||||
impl<'tcx> DepTrackingMapConfig for TraitSelectionCache<'tcx> {
|
||||
type Key = ty::PolyTraitRef<'tcx>;
|
||||
type Key = (ty::ParamEnv<'tcx>, ty::PolyTraitRef<'tcx>);
|
||||
type Value = Vtable<'tcx, ()>;
|
||||
fn to_dep_kind() -> DepKind {
|
||||
DepKind::TraitSelect
|
||||
|
|
Loading…
Reference in a new issue