about summary refs log tree commit diff
path: root/compiler/rustc_infer/src/infer/combine.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-05-04 20:40:02 +0000
committerMichael Goulet <michael@errs.io>2023-05-15 16:40:42 +0000
commitc270b0a8a844f0bac1ee1acd8a1ebabc0cee65e7 (patch)
treed5e2d8f81675c1fdf38b52ea47d6e309c40396c9 /compiler/rustc_infer/src/infer/combine.rs
parent338e7642fbe6af32351363ab1044494da14b0dec (diff)
downloadrust-c270b0a8a844f0bac1ee1acd8a1ebabc0cee65e7.tar.gz
rust-c270b0a8a844f0bac1ee1acd8a1ebabc0cee65e7.zip
Simplify delegate
Diffstat (limited to 'compiler/rustc_infer/src/infer/combine.rs')
-rw-r--r--compiler/rustc_infer/src/infer/combine.rs30
1 files changed, 11 insertions, 19 deletions
diff --git a/compiler/rustc_infer/src/infer/combine.rs b/compiler/rustc_infer/src/infer/combine.rs
index a5d7641504d..b13c9627bf7 100644
--- a/compiler/rustc_infer/src/infer/combine.rs
+++ b/compiler/rustc_infer/src/infer/combine.rs
@@ -28,7 +28,7 @@ use super::lub::Lub;
 use super::sub::Sub;
 use super::type_variable::TypeVariableValue;
 use super::{DefineOpaqueTypes, InferCtxt, MiscVariable, TypeTrace};
-use crate::infer::generalize::{Generalization, Generalizer};
+use crate::infer::generalize::{generalize, CombineDelegate, Generalization};
 use crate::traits::{Obligation, PredicateObligations};
 use rustc_middle::infer::canonical::OriginalQueryValues;
 use rustc_middle::infer::unify_key::{ConstVarValue, ConstVariableValue};
@@ -471,25 +471,17 @@ impl<'infcx, 'tcx> CombineFields<'infcx, 'tcx> {
             RelationDir::SupertypeOf => ty::Contravariant,
         };
 
-        trace!(?ambient_variance);
-
-        let for_universe = self.infcx.probe_ty_var(for_vid).unwrap_err();
-        let for_vid_sub_root = self.infcx.inner.borrow_mut().type_variables().sub_root_var(for_vid);
-
-        trace!(?for_universe);
-        trace!(?self.trace);
-
-        Generalizer {
-            infcx: self.infcx,
-            delegate: self,
+        generalize::generalize(
+            self.infcx,
+            &mut CombineDelegate {
+                infcx: self.infcx,
+                param_env: self.param_env,
+                span: self.trace.span(),
+            },
+            ty,
+            for_vid,
             ambient_variance,
-            for_universe,
-            for_vid_sub_root,
-            root_ty: ty,
-            cache: Default::default(),
-            needs_wf: false,
-        }
-        .generalize(ty)
+        )
     }
 
     pub fn register_obligations(&mut self, obligations: PredicateObligations<'tcx>) {