summaryrefslogtreecommitdiffstats
path: root/vendor/tracing-attributes/src/expand.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tracing-attributes/src/expand.rs')
-rw-r--r--vendor/tracing-attributes/src/expand.rs53
1 files changed, 33 insertions, 20 deletions
diff --git a/vendor/tracing-attributes/src/expand.rs b/vendor/tracing-attributes/src/expand.rs
index 7005b4423..eb7be8f47 100644
--- a/vendor/tracing-attributes/src/expand.rs
+++ b/vendor/tracing-attributes/src/expand.rs
@@ -10,7 +10,7 @@ use syn::{
};
use crate::{
- attr::{Field, Fields, FormatMode, InstrumentArgs},
+ attr::{Field, Fields, FormatMode, InstrumentArgs, Level},
MaybeItemFn, MaybeItemFnRef,
};
@@ -64,7 +64,10 @@ pub(crate) fn gen_function<'a, B: ToTokens + 'a>(
// unreachable, but does affect inference, so it needs to be written
// exactly that way for it to do its magic.
let fake_return_edge = quote_spanned! {return_span=>
- #[allow(unreachable_code, clippy::diverging_sub_expression, clippy::let_unit_value)]
+ #[allow(
+ unknown_lints, unreachable_code, clippy::diverging_sub_expression,
+ clippy::let_unit_value, clippy::unreachable, clippy::let_with_type_underscore
+ )]
if false {
let __tracing_attr_fake_return: #return_type =
unreachable!("this is just for type inference, and is unreachable code");
@@ -116,7 +119,8 @@ fn gen_block<B: ToTokens>(
.map(|name| quote!(#name))
.unwrap_or_else(|| quote!(#instrumented_function_name));
- let level = args.level();
+ let args_level = args.level();
+ let level = args_level.clone();
let follows_from = args.follows_from.iter();
let follows_from = quote! {
@@ -134,7 +138,7 @@ fn gen_block<B: ToTokens>(
.into_iter()
.flat_map(|param| match param {
FnArg::Typed(PatType { pat, ty, .. }) => {
- param_names(*pat, RecordType::parse_from_ty(&*ty))
+ param_names(*pat, RecordType::parse_from_ty(&ty))
}
FnArg::Receiver(_) => Box::new(iter::once((
Ident::new("self", param.span()),
@@ -232,21 +236,33 @@ fn gen_block<B: ToTokens>(
let target = args.target();
- let err_event = match args.err_mode {
- Some(FormatMode::Default) | Some(FormatMode::Display) => {
- Some(quote!(tracing::error!(target: #target, error = %e)))
+ let err_event = match args.err_args {
+ Some(event_args) => {
+ let level_tokens = event_args.level(Level::Error);
+ match event_args.mode {
+ FormatMode::Default | FormatMode::Display => Some(quote!(
+ tracing::event!(target: #target, #level_tokens, error = %e)
+ )),
+ FormatMode::Debug => Some(quote!(
+ tracing::event!(target: #target, #level_tokens, error = ?e)
+ )),
+ }
}
- Some(FormatMode::Debug) => Some(quote!(tracing::error!(target: #target, error = ?e))),
_ => None,
};
- let ret_event = match args.ret_mode {
- Some(FormatMode::Display) => Some(quote!(
- tracing::event!(target: #target, #level, return = %x)
- )),
- Some(FormatMode::Default) | Some(FormatMode::Debug) => Some(quote!(
- tracing::event!(target: #target, #level, return = ?x)
- )),
+ let ret_event = match args.ret_args {
+ Some(event_args) => {
+ let level_tokens = event_args.level(args_level);
+ match event_args.mode {
+ FormatMode::Display => Some(quote!(
+ tracing::event!(target: #target, #level_tokens, return = %x)
+ )),
+ FormatMode::Default | FormatMode::Debug => Some(quote!(
+ tracing::event!(target: #target, #level_tokens, return = ?x)
+ )),
+ }
+ }
_ => None,
};
@@ -464,10 +480,7 @@ fn param_names(pat: Pat, record_type: RecordType) -> Box<dyn Iterator<Item = (Id
.into_iter()
.flat_map(|p| param_names(p, RecordType::Debug)),
),
- Pat::TupleStruct(PatTupleStruct {
- pat: PatTuple { elems, .. },
- ..
- }) => Box::new(
+ Pat::TupleStruct(PatTupleStruct { elems, .. }) => Box::new(
elems
.into_iter()
.flat_map(|p| param_names(p, RecordType::Debug)),
@@ -551,7 +564,7 @@ impl<'block> AsyncInfo<'block> {
// last expression of the block: it determines the return value of the
// block, this is quite likely a `Box::pin` statement or an async block
let (last_expr_stmt, last_expr) = block.stmts.iter().rev().find_map(|stmt| {
- if let Stmt::Expr(expr) = stmt {
+ if let Stmt::Expr(expr, _semi) = stmt {
Some((stmt, expr))
} else {
None