Make inductive cycles in coherence ambiguous always
This commit is contained in:
parent
0ee9cfd54d
commit
8abf133c4b
6 changed files with 27 additions and 155 deletions
|
@ -239,20 +239,16 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
// Sets the `TreatInductiveCycleAs` mode temporarily in the selection context
|
||||
pub fn with_treat_inductive_cycle_as<T>(
|
||||
&mut self,
|
||||
treat_inductive_cycle: TreatInductiveCycleAs,
|
||||
f: impl FnOnce(&mut Self) -> T,
|
||||
) -> T {
|
||||
pub fn with_treat_inductive_cycle_as_ambig(
|
||||
infcx: &'cx InferCtxt<'tcx>,
|
||||
) -> SelectionContext<'cx, 'tcx> {
|
||||
// Should be executed in a context where caching is disabled,
|
||||
// otherwise the cache is poisoned with the temporary result.
|
||||
assert!(self.is_intercrate());
|
||||
let treat_inductive_cycle =
|
||||
std::mem::replace(&mut self.treat_inductive_cycle, treat_inductive_cycle);
|
||||
let value = f(self);
|
||||
self.treat_inductive_cycle = treat_inductive_cycle;
|
||||
value
|
||||
assert!(infcx.intercrate);
|
||||
SelectionContext {
|
||||
treat_inductive_cycle: TreatInductiveCycleAs::Ambig,
|
||||
..SelectionContext::new(infcx)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn with_query_mode(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue