only erase param env regions where needed
This commit is contained in:
parent
57253552de
commit
a582e9638b
2 changed files with 2 additions and 2 deletions
|
@ -1107,7 +1107,7 @@ impl<'tcx> Ty<'tcx> {
|
||||||
// This doesn't depend on regions, so try to minimize distinct
|
// This doesn't depend on regions, so try to minimize distinct
|
||||||
// query keys used.
|
// query keys used.
|
||||||
// If normalization fails, we just use `query_ty`.
|
// 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
|
let query_ty = tcx
|
||||||
.try_normalize_erasing_regions(param_env, query_ty)
|
.try_normalize_erasing_regions(param_env, query_ty)
|
||||||
.unwrap_or_else(|_| tcx.erase_regions(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
|
// While we conservatively assume that all coroutines require drop
|
||||||
// to avoid query cycles during MIR building, we can check the actual
|
// to avoid query cycles during MIR building, we can check the actual
|
||||||
// witness during borrowck to avoid unnecessary liveness constraints.
|
// 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.extend(args.upvar_tys().iter().map(ty::GenericArg::from));
|
||||||
constraints.outlives.push(args.resume_ty().into());
|
constraints.outlives.push(args.resume_ty().into());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue