diff options
| author | bors <bors@rust-lang.org> | 2021-05-06 15:19:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-05-06 15:19:39 +0000 |
| commit | d44f647ffcff0e1ff2c0f45b6a0ce9796d80f1ca (patch) | |
| tree | 11e72654b4a65b93a5c4249357b092a0c4293f26 /compiler/rustc_data_structures/src | |
| parent | 109248a4eb99bc83684c94ca4ef36f2fadc17e2a (diff) | |
| parent | ccc820e1f8eb8d8d142bd93d578bb5c7d9bb6775 (diff) | |
| download | rust-d44f647ffcff0e1ff2c0f45b6a0ce9796d80f1ca.tar.gz rust-d44f647ffcff0e1ff2c0f45b6a0ce9796d80f1ca.zip | |
Auto merge of #84982 - Dylan-DPC:rollup-q4cbec2, r=Dylan-DPC
Rollup of 8 pull requests
Successful merges:
- #83507 (Implement RFC 2951: Native link modifiers)
- #84328 (Stablize {HashMap,BTreeMap}::into_{keys,values})
- #84712 (Simplify chdir implementation and minimize unsafe block)
- #84851 (:arrow_up: rust-analyzer)
- #84923 (Only compute Obligation `cache_key` once in `register_obligation_at`)
- #84945 (E0583: Include secondary path in error message)
- #84949 (Fix typo in `MaybeUninit::array_assume_init` safety comment)
- #84950 (Revert PR 83866)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_data_structures/src')
| -rw-r--r-- | compiler/rustc_data_structures/src/obligation_forest/mod.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/rustc_data_structures/src/obligation_forest/mod.rs b/compiler/rustc_data_structures/src/obligation_forest/mod.rs index a5b2df1da5d..29d685ab530 100644 --- a/compiler/rustc_data_structures/src/obligation_forest/mod.rs +++ b/compiler/rustc_data_structures/src/obligation_forest/mod.rs @@ -336,12 +336,13 @@ impl<O: ForestObligation> ObligationForest<O> { // Returns Err(()) if we already know this obligation failed. fn register_obligation_at(&mut self, obligation: O, parent: Option<usize>) -> Result<(), ()> { - if self.done_cache.contains(&obligation.as_cache_key()) { + let cache_key = obligation.as_cache_key(); + if self.done_cache.contains(&cache_key) { debug!("register_obligation_at: ignoring already done obligation: {:?}", obligation); return Ok(()); } - match self.active_cache.entry(obligation.as_cache_key()) { + match self.active_cache.entry(cache_key.clone()) { Entry::Occupied(o) => { let node = &mut self.nodes[*o.get()]; if let Some(parent_index) = parent { @@ -365,7 +366,7 @@ impl<O: ForestObligation> ObligationForest<O> { && self .error_cache .get(&obligation_tree_id) - .map(|errors| errors.contains(&obligation.as_cache_key())) + .map(|errors| errors.contains(&cache_key)) .unwrap_or(false); if already_failed { |
