Closed
Description
We are in the midst of simplifying the compiler's lifetime system. In general, this means that TyCtxt<'a, 'gcx, 'tcx>
is going to become just TyCtxt<'tcx>
, where 'tcx
represents the lifetime of the entire compilation (we no longer have global and local arenas).
Implementation plan
- remove the arenas (link to @Zoxc's PR?)
- warn on unused lifetimes Add deny(unused_lifetimes) to all the crates that have deny(internal). #61735
- rewrite
TyCtxt<'a, 'gcx, 'tcx>
toTyCtxt<'gcx, 'tcx>
rustc: replaceTyCtxt<'a, 'gcx, 'tcx>
withTyCtxt<'gcx, 'tcx>
. #61722 - rewrite
TyCtxt<'gcx, 'tcx>
toTyCtxt<'tcx>
Unify all uses of 'gcx and 'tcx. #61817
If your PR is affected
Once #61817 lands, what you want to do is generally rewrite to TyCtxt<'tcx>
or -- less often -- TyCtxt<'_>
. More specifically, you can convert older code by pattern matching like so:
TyCtxt<_, 'tcx, _>
becomesTyCtxt<'tcx>
TyCtxt<'_, '_, 'tcx>
becomesTyCtxt<'tcx>
You can also handle any unused lifetime warnings by replacing the unused lifetime with '_
.
Note: when adapting your code, you should never need to introduce a new lifetime, you're only removing them. If you find yourself adding a 'gcx
to some impl, that's wrong =)