aboutsummaryrefslogtreecommitdiff
path: root/tests/test_expr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_expr.rs')
-rw-r--r--tests/test_expr.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/test_expr.rs b/tests/test_expr.rs
index 8186a37..8c0cc28 100644
--- a/tests/test_expr.rs
+++ b/tests/test_expr.rs
@@ -199,3 +199,39 @@ mod test_x86_feature_literal {
my_is_x86_feature_detected!("mmx");
}
+
+#[rustversion::since(1.46)]
+mod test_local_setter {
+ // https://github.com/dtolnay/paste/issues/7
+
+ use paste::paste;
+
+ #[derive(Default)]
+ struct Test {
+ val: i32,
+ }
+
+ impl Test {
+ fn set_val(&mut self, arg: i32) {
+ self.val = arg;
+ }
+ }
+
+ macro_rules! setter {
+ ($obj:expr, $field:ident, $value:expr) => {
+ paste! { $obj.[<set_ $field>]($value); }
+ };
+
+ ($field:ident, $value:expr) => {{
+ let mut new = Test::default();
+ setter!(new, val, $value);
+ new
+ }};
+ }
+
+ #[test]
+ fn test_local_setter() {
+ let a = setter!(val, 42);
+ assert_eq!(a.val, 42);
+ }
+}