aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2020-09-15 11:55:13 -0700
committerHaibo Huang <hhb@google.com>2020-09-15 11:55:13 -0700
commitf16e575bae848ef0046c00e4b9a5cc21771cf337 (patch)
treed0ffc3e4bbc5b66ebb1b1a89bc43944f49dc7439 /tests
parent8fcb2ec44fef7089468d8199c529b6c2655b3de6 (diff)
downloadpaste-f16e575bae848ef0046c00e4b9a5cc21771cf337.tar.gz
Upgrade rust/crates/paste to 1.0.1
Test: make Change-Id: I630a5d0bb2d7dfa2bf21d03a74bc2ab52f47e8bd
Diffstat (limited to 'tests')
-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);
+ }
+}