only erase param env regions where needed
This commit is contained in:
parent
57253552de
commit
a582e9638b
@ -1107,7 +1107,7 @@ impl<'tcx> Ty<'tcx> {
|
||||
// This doesn't depend on regions, so try to minimize distinct
|
||||
// query keys used.
|
||||
// If normalization fails, we just use `query_ty`.
|
||||
let param_env = tcx.erase_regions(param_env);
|
||||
debug_assert!(!param_env.has_infer());
|
||||
let query_ty = tcx
|
||||
.try_normalize_erasing_regions(param_env, query_ty)
|
||||
.unwrap_or_else(|_| tcx.erase_regions(query_ty));
|
||||
|
@ -298,7 +298,7 @@ pub fn dtorck_constraint_for_ty_inner<'tcx>(
|
||||
// While we conservatively assume that all coroutines require drop
|
||||
// to avoid query cycles during MIR building, we can check the actual
|
||||
// witness during borrowck to avoid unnecessary liveness constraints.
|
||||
if args.witness().needs_drop(tcx, param_env) {
|
||||
if args.witness().needs_drop(tcx, tcx.erase_regions(param_env)) {
|
||||
constraints.outlives.extend(args.upvar_tys().iter().map(ty::GenericArg::from));
|
||||
constraints.outlives.push(args.resume_ty().into());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user