Rollup merge of #95559 - lcnr:inferctxt-typeck, r=oli-obk
small type system refactoring
This commit is contained in:
commit
1e43cf46bd
8 changed files with 17 additions and 52 deletions
|
@ -49,7 +49,6 @@ impl<'cx, 'tcx> InferCtxt<'cx, 'tcx> {
|
|||
/// At the end of processing, the substitution S (once
|
||||
/// canonicalized) then represents the values that you computed
|
||||
/// for each of the canonical inputs to your query.
|
||||
|
||||
pub fn instantiate_canonical_with_fresh_inference_vars<T>(
|
||||
&self,
|
||||
span: Span,
|
||||
|
|
|
@ -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> {
|
||||
|
@ -558,9 +556,9 @@ impl<'tcx> fmt::Display for FixupError<'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
/// Helper type of a temporary returned by `tcx.infer_ctxt()`.
|
||||
/// Necessary because we can't write the following bound:
|
||||
/// `F: for<'b, 'tcx> where 'tcx FnOnce(InferCtxt<'b, 'tcx>)`.
|
||||
/// A temporary returned by `tcx.infer_ctxt()`. This is necessary
|
||||
/// for multiple `InferCtxt` to share the same `in_progress_typeck_results`
|
||||
/// without using `Rc` or something similar.
|
||||
pub struct InferCtxtBuilder<'tcx> {
|
||||
tcx: TyCtxt<'tcx>,
|
||||
fresh_typeck_results: Option<RefCell<ty::TypeckResults<'tcx>>>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue