mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-11 14:33:32 +00:00
Add itctx: ImplTraitContext arg to add_implicit_generics
This commit is contained in:
parent
1a71103c93
commit
190b4a7152
@ -266,10 +266,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
||||
let body_id =
|
||||
this.lower_maybe_async_body(span, &decl, asyncness, body.as_deref());
|
||||
|
||||
let (generics, decl) = this.add_implicit_generics(generics, id, |this| {
|
||||
let ret_id = asyncness.opt_return_id();
|
||||
this.lower_fn_decl(&decl, Some(id), FnDeclKind::Fn, ret_id)
|
||||
});
|
||||
let itctx = ImplTraitContext::Universal(this.current_hir_id_owner);
|
||||
let (generics, decl) =
|
||||
this.add_implicit_generics(generics, id, itctx, |this| {
|
||||
let ret_id = asyncness.opt_return_id();
|
||||
this.lower_fn_decl(&decl, Some(id), FnDeclKind::Fn, ret_id)
|
||||
});
|
||||
let sig = hir::FnSig {
|
||||
decl,
|
||||
header: this.lower_fn_header(header),
|
||||
@ -382,8 +384,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
||||
// method, it will not be considered an in-band
|
||||
// lifetime to be added, but rather a reference to a
|
||||
// parent lifetime.
|
||||
let itctx = ImplTraitContext::Universal(self.current_hir_id_owner);
|
||||
let (generics, (trait_ref, lowered_ty)) =
|
||||
self.add_implicit_generics(ast_generics, id, |this| {
|
||||
self.add_implicit_generics(ast_generics, id, itctx, |this| {
|
||||
let trait_ref = trait_ref.as_ref().map(|trait_ref| {
|
||||
this.lower_trait_ref(
|
||||
trait_ref,
|
||||
@ -647,8 +650,9 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
||||
kind: match i.kind {
|
||||
ForeignItemKind::Fn(box Fn { ref sig, ref generics, .. }) => {
|
||||
let fdec = &sig.decl;
|
||||
let itctx = ImplTraitContext::Universal(self.current_hir_id_owner);
|
||||
let (generics, (fn_dec, fn_args)) =
|
||||
self.add_implicit_generics(generics, i.id, |this| {
|
||||
self.add_implicit_generics(generics, i.id, itctx, |this| {
|
||||
(
|
||||
// Disallow `impl Trait` in foreign items.
|
||||
this.lower_fn_decl(fdec, None, FnDeclKind::ExternFn, None),
|
||||
@ -1227,7 +1231,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
||||
is_async: Option<NodeId>,
|
||||
) -> (&'hir hir::Generics<'hir>, hir::FnSig<'hir>) {
|
||||
let header = self.lower_fn_header(sig.header);
|
||||
let (generics, decl) = self.add_implicit_generics(generics, id, |this| {
|
||||
let itctx = ImplTraitContext::Universal(self.current_hir_id_owner);
|
||||
let (generics, decl) = self.add_implicit_generics(generics, id, itctx, |this| {
|
||||
this.lower_fn_decl(&sig.decl, Some(id), kind, is_async)
|
||||
});
|
||||
(generics, hir::FnSig { header, decl, span: self.lower_span(sig.span) })
|
||||
|
@ -710,10 +710,18 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||
&mut self,
|
||||
generics: &Generics,
|
||||
parent_node_id: NodeId,
|
||||
itctx: ImplTraitContext,
|
||||
f: impl FnOnce(&mut Self) -> T,
|
||||
) -> (&'hir hir::Generics<'hir>, T) {
|
||||
let mut lowered_generics = self
|
||||
.lower_generics_mut(generics, ImplTraitContext::Universal(self.current_hir_id_owner));
|
||||
match itctx {
|
||||
ImplTraitContext::Universal(..) => {}
|
||||
_ => {
|
||||
debug_assert!(self.impl_trait_defs.is_empty());
|
||||
debug_assert!(self.impl_trait_bounds.is_empty());
|
||||
}
|
||||
}
|
||||
|
||||
let mut lowered_generics = self.lower_generics_mut(generics, itctx);
|
||||
let res = f(self);
|
||||
|
||||
let extra_lifetimes = self.resolver.take_extra_lifetime_params(parent_node_id);
|
||||
|
Loading…
Reference in New Issue
Block a user