remove unify_key::replace_if_possible
This commit is contained in:
parent
18fae7b2e5
commit
c2b5a7ea52
6 changed files with 11 additions and 43 deletions
|
@ -27,15 +27,12 @@ use super::glb::Glb;
|
|||
use super::lub::Lub;
|
||||
use super::sub::Sub;
|
||||
use super::type_variable::TypeVariableValue;
|
||||
use super::unify_key::replace_if_possible;
|
||||
use super::unify_key::{ConstVarValue, ConstVariableValue};
|
||||
use super::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
|
||||
use super::{InferCtxt, MiscVariable, TypeTrace};
|
||||
|
||||
use crate::traits::{Obligation, PredicateObligations};
|
||||
|
||||
use rustc_data_structures::sso::SsoHashMap;
|
||||
use rustc_hir::def_id::DefId;
|
||||
use rustc_middle::infer::unify_key::{ConstVarValue, ConstVariableValue};
|
||||
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
|
||||
use rustc_middle::traits::ObligationCause;
|
||||
use rustc_middle::ty::error::{ExpectedFound, TypeError};
|
||||
use rustc_middle::ty::relate::{self, Relate, RelateResult, TypeRelation};
|
||||
|
@ -140,8 +137,8 @@ impl<'infcx, 'tcx> InferCtxt<'infcx, 'tcx> {
|
|||
return Ok(a);
|
||||
}
|
||||
|
||||
let a = replace_if_possible(&mut self.inner.borrow_mut().const_unification_table(), a);
|
||||
let b = replace_if_possible(&mut self.inner.borrow_mut().const_unification_table(), b);
|
||||
let a = self.shallow_resolve(a);
|
||||
let b = self.shallow_resolve(b);
|
||||
|
||||
let a_is_expected = relation.a_is_expected();
|
||||
|
||||
|
|
|
@ -30,17 +30,13 @@
|
|||
//! solving a set of constraints. In contrast, the type inferencer assigns a value to each type
|
||||
//! variable only once, and it does so as soon as it can, so it is reasonable to ask what the type
|
||||
//! inferencer knows "so far".
|
||||
|
||||
use super::InferCtxt;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_middle::infer::unify_key::ToType;
|
||||
use rustc_middle::ty::fold::TypeFolder;
|
||||
use rustc_middle::ty::{self, Ty, TyCtxt, TypeFoldable};
|
||||
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
|
||||
use std::collections::hash_map::Entry;
|
||||
|
||||
use super::unify_key::ToType;
|
||||
use super::InferCtxt;
|
||||
|
||||
pub struct TypeFreshener<'a, 'tcx> {
|
||||
infcx: &'a InferCtxt<'a, 'tcx>,
|
||||
ty_freshen_count: u32,
|
||||
|
|
|
@ -70,8 +70,6 @@ mod sub;
|
|||
pub mod type_variable;
|
||||
mod undo_log;
|
||||
|
||||
pub use rustc_middle::infer::unify_key;
|
||||
|
||||
#[must_use]
|
||||
#[derive(Debug)]
|
||||
pub struct InferOk<'tcx, T> {
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
use crate::ty::{self, InferConst, Ty, TyCtxt};
|
||||
use rustc_data_structures::snapshot_vec;
|
||||
use rustc_data_structures::undo_log::UndoLogs;
|
||||
use rustc_data_structures::unify::{
|
||||
self, EqUnifyValue, InPlace, NoError, UnificationTable, UnifyKey, UnifyValue,
|
||||
};
|
||||
use crate::ty::{self, Ty, TyCtxt};
|
||||
use rustc_data_structures::unify::{EqUnifyValue, NoError, UnifyKey, UnifyValue};
|
||||
use rustc_span::def_id::DefId;
|
||||
use rustc_span::symbol::Symbol;
|
||||
use rustc_span::Span;
|
||||
|
||||
use std::cmp;
|
||||
use std::marker::PhantomData;
|
||||
|
||||
|
@ -167,21 +162,3 @@ impl<'tcx> UnifyValue for ConstVarValue<'tcx> {
|
|||
}
|
||||
|
||||
impl<'tcx> EqUnifyValue for ty::Const<'tcx> {}
|
||||
|
||||
pub fn replace_if_possible<'tcx, V, L>(
|
||||
table: &mut UnificationTable<InPlace<ty::ConstVid<'tcx>, V, L>>,
|
||||
c: ty::Const<'tcx>,
|
||||
) -> ty::Const<'tcx>
|
||||
where
|
||||
V: snapshot_vec::VecLike<unify::Delegate<ty::ConstVid<'tcx>>>,
|
||||
L: UndoLogs<snapshot_vec::UndoLog<unify::Delegate<ty::ConstVid<'tcx>>>>,
|
||||
{
|
||||
if let ty::ConstKind::Infer(InferConst::Var(vid)) = c.val() {
|
||||
match table.probe_value(vid).val.known() {
|
||||
Some(c) => c,
|
||||
None => c,
|
||||
}
|
||||
} else {
|
||||
c
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ use rustc_hir as hir;
|
|||
use rustc_hir::def_id::DefId;
|
||||
use rustc_infer::infer;
|
||||
use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind};
|
||||
use rustc_infer::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
|
||||
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
|
||||
use rustc_middle::ty::fold::TypeFoldable;
|
||||
use rustc_middle::ty::subst::GenericArgKind;
|
||||
use rustc_middle::ty::{self, Const, Ty, TyCtxt};
|
||||
|
|
|
@ -15,8 +15,8 @@ use rustc_hir::def::Namespace;
|
|||
use rustc_infer::infer::canonical::OriginalQueryValues;
|
||||
use rustc_infer::infer::canonical::{Canonical, QueryResponse};
|
||||
use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind};
|
||||
use rustc_infer::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
|
||||
use rustc_infer::infer::{self, InferOk, TyCtxtInferExt};
|
||||
use rustc_middle::infer::unify_key::{ConstVariableOrigin, ConstVariableOriginKind};
|
||||
use rustc_middle::middle::stability;
|
||||
use rustc_middle::ty::fast_reject::{simplify_type, TreatParams};
|
||||
use rustc_middle::ty::subst::{InternalSubsts, Subst, SubstsRef};
|
||||
|
|
Loading…
Add table
Reference in a new issue