diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2018-04-04 17:21:50 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2018-04-30 14:06:45 -0400 |
| commit | 69400751ab4ae903244aff95e088df8fcefe409c (patch) | |
| tree | db6b0c1e9557dd2ec2879ab1769824cd1ccc3d3a /src/librustc/traits | |
| parent | 2e59e467a0e4dbcf6a6e7ba2e443ebc2fde88e11 (diff) | |
| download | rust-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.rs | 2 | ||||
| -rw-r--r-- | src/librustc/traits/query/normalize.rs | 2 |
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 { |
