diff options
| author | Matthew Jasper <mjjasper1@gmail.com> | 2020-12-20 18:13:05 +0000 |
|---|---|---|
| committer | Matthew Jasper <mjjasper1@gmail.com> | 2020-12-20 21:47:51 +0000 |
| commit | 2e92b13a606ba2f073c789dfd6c33f889f04c8cf (patch) | |
| tree | 65d4dc0e2251bc3a5d08aa4d8360909074b5d3ca /compiler/rustc_trait_selection/src/traits/select | |
| parent | 77fce67733d2a1403f17b382dfbd3802003172a6 (diff) | |
| download | rust-2e92b13a606ba2f073c789dfd6c33f889f04c8cf.tar.gz rust-2e92b13a606ba2f073c789dfd6c33f889f04c8cf.zip | |
Prevent caching projections in the case of cycles
When normalizing a projection which results in a cycle, we would cache the result of `project_type` without the nested obligations (because they're not needed for inference). This would result in the nested obligations only being handled once in fulfill, which would avoid the cycle error. Fixes #79714, a regresion from #79305 caused by the removal of `get_paranoid_cache_value_obligation`.
Diffstat (limited to 'compiler/rustc_trait_selection/src/traits/select')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/select/mod.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/select/mod.rs b/compiler/rustc_trait_selection/src/traits/select/mod.rs index f1c86eab095..a8f81445b03 100644 --- a/compiler/rustc_trait_selection/src/traits/select/mod.rs +++ b/compiler/rustc_trait_selection/src/traits/select/mod.rs @@ -291,6 +291,10 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> { self.infcx.tcx } + pub(super) fn query_mode(&self) -> TraitQueryMode { + self.query_mode + } + /////////////////////////////////////////////////////////////////////////// // Selection // |
