From a3f5a321798bdce0bced3ab082e75da5e14e356b Mon Sep 17 00:00:00 2001 From: andylokandy Date: Thu, 11 Dec 2025 23:59:24 +0800 Subject: [PATCH 1/3] fix: skip formating anonymous arguments --- src/lib.rs | 6 +++++- tests/ui/ok/async-trait-underscore.rs | 16 ++++++++++++++++ tests/ui/ok/has-no-argument.rs | 3 +++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 tests/ui/ok/async-trait-underscore.rs diff --git a/src/lib.rs b/src/lib.rs index 38a8f1a..e896848 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -606,7 +606,11 @@ fn gen_input_format(sig: &Signature) -> String { match input { FnArg::Typed(PatType { pat, .. }) => { if let Pat::Ident(pat_ident) = &**pat { - let ident = &pat_ident.ident; + let ident = &pat_ident.ident.to_string(); + // Skip async-trait generated anonymous arguments + if ident.starts_with("__arg") { + continue; + } input_format.push_str(&format!("{ident} = {{{ident}:?}}")); } } diff --git a/tests/ui/ok/async-trait-underscore.rs b/tests/ui/ok/async-trait-underscore.rs new file mode 100644 index 0000000..0b818bd --- /dev/null +++ b/tests/ui/ok/async-trait-underscore.rs @@ -0,0 +1,16 @@ +#[async_trait::async_trait] +trait TestTrait { + async fn test(&self, value: String) -> String; +} + +struct Test; + +#[async_trait::async_trait] +impl TestTrait for Test { + #[logcall::logcall] + async fn test(&self, _: String) -> String { + "test".to_string() + } +} + +fn main() {} diff --git a/tests/ui/ok/has-no-argument.rs b/tests/ui/ok/has-no-argument.rs index 9a47bbd..ce55cec 100644 --- a/tests/ui/ok/has-no-argument.rs +++ b/tests/ui/ok/has-no-argument.rs @@ -1,4 +1,7 @@ #[logcall::logcall] fn f() {} +#[logcall::logcall] +fn g(_: i32) {} + fn main() {} From b25d99005a6d32bdc084d710ae3bd8e755d49f1f Mon Sep 17 00:00:00 2001 From: andylokandy Date: Fri, 12 Dec 2025 00:04:17 +0800 Subject: [PATCH 2/3] fix --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index e896848..e7ac09e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -607,7 +607,7 @@ fn gen_input_format(sig: &Signature) -> String { FnArg::Typed(PatType { pat, .. }) => { if let Pat::Ident(pat_ident) = &**pat { let ident = &pat_ident.ident.to_string(); - // Skip async-trait generated anonymous arguments + // Skip async-trait generated anonymous arguments. if ident.starts_with("__arg") { continue; } From 11aa2613a9b92fab17bd5f1bbc7be4b5f3d8f069 Mon Sep 17 00:00:00 2001 From: andylokandy Date: Fri, 12 Dec 2025 00:07:39 +0800 Subject: [PATCH 3/3] fix --- src/lib.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e7ac09e..393d9cb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -598,11 +598,9 @@ fn gen_log( // fn(a: usize, b: usize) => "a = {a:?}, b = {b:?}" fn gen_input_format(sig: &Signature) -> String { - let mut input_format = String::new(); - for (i, input) in sig.inputs.iter().enumerate() { - if i > 0 { - input_format.push_str(", "); - } + let mut args = vec![]; + + for input in &sig.inputs { match input { FnArg::Typed(PatType { pat, .. }) => { if let Pat::Ident(pat_ident) = &**pat { @@ -611,15 +609,16 @@ fn gen_input_format(sig: &Signature) -> String { if ident.starts_with("__arg") { continue; } - input_format.push_str(&format!("{ident} = {{{ident}:?}}")); + args.push(format!("{ident} = {{{ident}:?}}")); } } FnArg::Receiver(_) => { - input_format.push_str("self"); + args.push("self".to_string()); } } } - input_format + + args.join(", ") } fn gen_output_format() -> String {