summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/generic_method.rs4
-rw-r--r--macros/src/expectation.rs36
-rw-r--r--macros/src/mock.rs2
3 files changed, 7 insertions, 35 deletions
diff --git a/examples/generic_method.rs b/examples/generic_method.rs
index 995c67d..4262ee2 100644
--- a/examples/generic_method.rs
+++ b/examples/generic_method.rs
@@ -5,6 +5,8 @@ use ridicule::mock;
trait Foo
{
fn bar<Baz: Display>(&self, num: u128) -> Baz;
+
+ fn abc<Baz: Display>(&mut self, baz: Baz);
}
mock! {
@@ -13,6 +15,8 @@ mock! {
impl Foo for MockFoo
{
fn bar<Baz: Display>(&self, num: u128) -> Baz;
+
+ fn abc<Baz: Display>(&mut self, baz_baz: Baz);
}
}
diff --git a/macros/src/expectation.rs b/macros/src/expectation.rs
index 436d571..5a4922c 100644
--- a/macros/src/expectation.rs
+++ b/macros/src/expectation.rs
@@ -16,9 +16,6 @@ use syn::{
ImplItemMethod,
ItemStruct,
Lifetime,
- Pat,
- PatIdent,
- PatType,
Path,
PathSegment,
Receiver,
@@ -268,35 +265,6 @@ impl ToTokens for Expectation
self.return_type.clone(),
));
- let args = opt_self_type
- .iter()
- .chain(self.arg_types.iter())
- .enumerate()
- .map(|(index, ty)| {
- FnArg::Typed(PatType {
- attrs: vec![],
- pat: Box::new(Pat::Ident(PatIdent {
- attrs: vec![],
- by_ref: None,
- mutability: None,
- ident: format_ident!("arg_{index}"),
- subpat: None,
- })),
- colon_token: <Token![:]>::default(),
- ty: Box::new(ty.clone()),
- })
- })
- .collect::<Vec<_>>();
-
- let arg_idents = opt_self_type
- .iter()
- .chain(self.arg_types.iter())
- .enumerate()
- .map(|(index, _)| format_ident!("arg_{index}"))
- .collect::<Vec<_>>();
-
- let return_type = &self.return_type;
-
let method_ident = &self.method_ident;
let expectation_struct = Self::create_struct(
@@ -358,7 +326,7 @@ impl ToTokens for Expectation
unsafe { std::mem::transmute(self) }
}
- fn call_returning(&self, #(#args),*) #return_type
+ fn get_returning(&self) -> &#returning_fn
{
let Some(returning) = &self.returning else {
panic!(concat!(
@@ -398,7 +366,7 @@ impl ToTokens for Expectation
self.call_cnt.fetch_add(1, std::sync::atomic::Ordering::Relaxed);
- (returning)(#(#arg_idents),*)
+ returning
}
}
diff --git a/macros/src/mock.rs b/macros/src/mock.rs
index d2eb451..2ac27e5 100644
--- a/macros/src/mock.rs
+++ b/macros/src/mock.rs
@@ -247,7 +247,7 @@ fn create_mock_function(
))
.with_generic_params::<#(#type_param_idents,)*>();
- expectation.call_returning(#(#args),*)
+ (expectation.get_returning())(#(#args),*)
}
})
.unwrap_or_abort(),