Add comments on with_remapping

This commit is contained in:
Santiago Pastorino 2022-08-03 17:32:24 -03:00
parent c946cdceb4
commit 11e00f502a
No known key found for this signature in database
GPG Key ID: 8131A24E0C79EFAF

View File

@ -557,6 +557,16 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
debug_assert!(_old.is_none())
}
/// Installs the remapping `remap` in scope while `f` is being executed.
/// This causes references to the `LocalDefId` keys to be changed to
/// refer to the values instead.
///
/// The remapping is used when one piece of AST expands to multiple
/// pieces of HIR. For example, the function `fn foo<'a>(...) -> impl Debug + 'a`,
/// expands to both a function definition (`foo`) and a TAIT for the return value,
/// both of which have a lifetime parameter `'a`. The remapping allows us to
/// rewrite the `'a` in the return value to refer to the
/// `'a` declared on the TAIT, instead of the function.
fn with_remapping<R>(
&mut self,
remap: FxHashMap<LocalDefId, LocalDefId>,