Eagerly resolve vars in predicate during coercion loop
This commit is contained in:
parent
77c3cf1bfd
commit
a071044562
5 changed files with 19 additions and 5 deletions
|
@ -636,6 +636,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
|
|||
Some(ty::PredicateKind::Clause(ty::ClauseKind::Trait(trait_pred)))
|
||||
if traits.contains(&trait_pred.def_id()) =>
|
||||
{
|
||||
let trait_pred = self.resolve_vars_if_possible(trait_pred);
|
||||
if unsize_did == trait_pred.def_id() {
|
||||
let self_ty = trait_pred.self_ty();
|
||||
let unsize_ty = trait_pred.trait_ref.substs[1].expect_ty();
|
||||
|
@ -662,7 +663,6 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
|
|||
// Uncertain or unimplemented.
|
||||
Ok(None) => {
|
||||
if trait_pred.def_id() == unsize_did {
|
||||
let trait_pred = self.resolve_vars_if_possible(trait_pred);
|
||||
let self_ty = trait_pred.self_ty();
|
||||
let unsize_ty = trait_pred.trait_ref.substs[1].expect_ty();
|
||||
debug!("coerce_unsized: ambiguous unsize case for {:?}", trait_pred);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue