diff --git a/rust-toolchain b/rust-toolchain index 54654b2c..3e0f3c66 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -nightly-2020-07-15 +nightly-2020-07-23 diff --git a/src/translate.rs b/src/translate.rs index dbf7f892..7564eba2 100644 --- a/src/translate.rs +++ b/src/translate.rs @@ -366,7 +366,7 @@ impl<'a, 'tcx> TranslationContext<'a, 'tcx> { ) -> Option> { use rustc_middle::ty::{ Binder, OutlivesPredicate, PredicateKind, ProjectionPredicate, ProjectionTy, - SubtypePredicate, ToPredicate, TraitPredicate, + SubtypePredicate, ToPredicate, TraitPredicate, WithOptConstParam, }; Some(match predicate.kind() { @@ -450,11 +450,14 @@ impl<'a, 'tcx> TranslationContext<'a, 'tcx> { })) .to_predicate(self.tcx) } - PredicateKind::ConstEvaluatable(orig_did, orig_substs) => { + PredicateKind::ConstEvaluatable(param, orig_substs) => { if let Some((target_def_id, target_substs)) = - self.translate_orig_substs(index_map, *orig_did, orig_substs) + self.translate_orig_substs(index_map, param.did, orig_substs) { - PredicateKind::ConstEvaluatable(target_def_id, target_substs) + // TODO: We could probably use translated version for + // `WithOptConstParam::const_param_did` + let const_param = WithOptConstParam::unknown(target_def_id); + PredicateKind::ConstEvaluatable(const_param, target_substs) .to_predicate(self.tcx) } else { return None;