1
Fork 0

wip: trying to enable #[track_caller] on async fn

This commit is contained in:
Eric Holk 2022-10-11 16:37:54 -07:00
parent 0c158f0e9d
commit 3db41d13f0
3 changed files with 21 additions and 2 deletions

View file

@ -617,8 +617,26 @@ impl<'hir> LoweringContext<'_, 'hir> {
hir::ExprKind::Closure(c)
};
let generator_hir_id = self.lower_node_id(closure_node_id);
// FIXME: only add track caller if the parent is track_caller
self.lower_attrs(
generator_hir_id,
&[Attribute {
kind: AttrKind::Normal(ptr::P(NormalAttr {
item: AttrItem {
path: Path::from_ident(Ident::new(sym::track_caller, span)),
args: MacArgs::Empty,
tokens: None,
},
tokens: None,
})),
id: self.tcx.sess.parse_sess.attr_id_generator.mk_attr_id(),
style: AttrStyle::Outer,
span,
}],
);
let generator = hir::Expr {
hir_id: self.lower_node_id(closure_node_id),
hir_id: generator_hir_id,
kind: generator_kind,
span: self.lower_span(span),
};

View file

@ -86,7 +86,7 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
impl_trait_defs: Vec::new(),
impl_trait_bounds: Vec::new(),
allow_try_trait: Some([sym::try_trait_v2, sym::yeet_desugar_details][..].into()),
allow_gen_future: Some([sym::gen_future][..].into()),
allow_gen_future: Some([sym::gen_future, sym::closure_track_caller][..].into()),
allow_into_future: Some([sym::into_future][..].into()),
generics_def_id_map: Default::default(),
};

View file

@ -1,5 +1,6 @@
// run-pass
// edition:2021
#![feature(closure_track_caller)]
use std::future::Future;
use std::panic;