summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-03-19 18:06:28 +0100
committerHampusM <hampus@hampusmat.com>2023-03-19 18:06:28 +0100
commitf73c3218b9a004fb405386ce2623d2dfa077388c (patch)
tree5e8a43741ac00e7f265e45d64fa3d1afdfe367f6 /macros
parentad2a6d1dc517407939ed022bba9f3352efc678ce (diff)
fix: allow mocking methods taking &mut self
Diffstat (limited to 'macros')
-rw-r--r--macros/src/expectation.rs36
-rw-r--r--macros/src/mock.rs2
2 files changed, 3 insertions, 35 deletions
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(),