Inline a function that is only called once
This commit is contained in:
parent
5afeed05e8
commit
5fb1a65215
@ -961,6 +961,7 @@ impl<'a, 'tcx> Instantiator<'a, 'tcx> {
|
|||||||
origin: hir::OpaqueTyOrigin,
|
origin: hir::OpaqueTyOrigin,
|
||||||
) -> Ty<'tcx> {
|
) -> Ty<'tcx> {
|
||||||
let infcx = self.infcx;
|
let infcx = self.infcx;
|
||||||
|
let tcx = infcx.tcx;
|
||||||
let OpaqueTypeKey { def_id, substs } = opaque_type_key;
|
let OpaqueTypeKey { def_id, substs } = opaque_type_key;
|
||||||
|
|
||||||
// Use the same type variable if the exact same opaque type appears more
|
// Use the same type variable if the exact same opaque type appears more
|
||||||
@ -992,15 +993,6 @@ impl<'a, 'tcx> Instantiator<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
debug!("generated new type inference var {:?}", ty_var.kind());
|
debug!("generated new type inference var {:?}", ty_var.kind());
|
||||||
self.compute_opaque_type_obligations(opaque_type_key);
|
|
||||||
|
|
||||||
ty_var
|
|
||||||
}
|
|
||||||
|
|
||||||
fn compute_opaque_type_obligations(&mut self, opaque_type_key: OpaqueTypeKey<'tcx>) {
|
|
||||||
let infcx = self.infcx;
|
|
||||||
let tcx = infcx.tcx;
|
|
||||||
let OpaqueTypeKey { def_id, substs } = opaque_type_key;
|
|
||||||
|
|
||||||
let item_bounds = tcx.explicit_item_bounds(def_id);
|
let item_bounds = tcx.explicit_item_bounds(def_id);
|
||||||
debug!(?item_bounds);
|
debug!(?item_bounds);
|
||||||
@ -1021,7 +1013,7 @@ impl<'a, 'tcx> Instantiator<'a, 'tcx> {
|
|||||||
if let ty::PredicateKind::Projection(projection) = predicate.kind().skip_binder() {
|
if let ty::PredicateKind::Projection(projection) = predicate.kind().skip_binder() {
|
||||||
if projection.ty.references_error() {
|
if projection.ty.references_error() {
|
||||||
// No point on adding these obligations since there's a type error involved.
|
// No point on adding these obligations since there's a type error involved.
|
||||||
return;
|
return ty_var;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1040,6 +1032,8 @@ impl<'a, 'tcx> Instantiator<'a, 'tcx> {
|
|||||||
debug!("instantiate_opaque_types: predicate={:?}", predicate);
|
debug!("instantiate_opaque_types: predicate={:?}", predicate);
|
||||||
self.obligations.push(traits::Obligation::new(cause, self.param_env, predicate));
|
self.obligations.push(traits::Obligation::new(cause, self.param_env, predicate));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ty_var
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user