about summary refs log tree commit diff
path: root/src/librustc/traits
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2018-04-04 17:21:50 -0400
committerNiko Matsakis <niko@alum.mit.edu>2018-04-30 14:06:45 -0400
commit69400751ab4ae903244aff95e088df8fcefe409c (patch)
treedb6b0c1e9557dd2ec2879ab1769824cd1ccc3d3a /src/librustc/traits
parent2e59e467a0e4dbcf6a6e7ba2e443ebc2fde88e11 (diff)
downloadrust-69400751ab4ae903244aff95e088df8fcefe409c.tar.gz
rust-69400751ab4ae903244aff95e088df8fcefe409c.zip
make needs_infer specific to inference variables
Notably, excluding ReSkolemized
Diffstat (limited to 'src/librustc/traits')
-rw-r--r--src/librustc/traits/project.rs2
-rw-r--r--src/librustc/traits/query/normalize.rs2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/librustc/traits/project.rs b/src/librustc/traits/project.rs
index 0c35e20324c..1f1fdfafe33 100644
--- a/src/librustc/traits/project.rs
+++ b/src/librustc/traits/project.rs
@@ -409,7 +409,7 @@ impl<'a, 'b, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for AssociatedTypeNormalizer<'a,
         if let ConstVal::Unevaluated(def_id, substs) = constant.val {
             let tcx = self.selcx.tcx().global_tcx();
             if let Some(param_env) = self.tcx().lift_to_global(&self.param_env) {
-                if substs.needs_infer() {
+                if substs.needs_infer() || substs.has_skol() {
                     let identity_substs = Substs::identity_for_item(tcx, def_id);
                     let instance = ty::Instance::resolve(tcx, param_env, def_id, identity_substs);
                     if let Some(instance) = instance {
diff --git a/src/librustc/traits/query/normalize.rs b/src/librustc/traits/query/normalize.rs
index 5e0a4ca3305..f074e061653 100644
--- a/src/librustc/traits/query/normalize.rs
+++ b/src/librustc/traits/query/normalize.rs
@@ -196,7 +196,7 @@ impl<'cx, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for QueryNormalizer<'cx, 'gcx, 'tcx
         if let ConstVal::Unevaluated(def_id, substs) = constant.val {
             let tcx = self.infcx.tcx.global_tcx();
             if let Some(param_env) = self.tcx().lift_to_global(&self.param_env) {
-                if substs.needs_infer() {
+                if substs.needs_infer() || substs.has_skol() {
                     let identity_substs = Substs::identity_for_item(tcx, def_id);
                     let instance = ty::Instance::resolve(tcx, param_env, def_id, identity_substs);
                     if let Some(instance) = instance {