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.rs48
1 files changed, 47 insertions, 1 deletions
diff --git a/tests/test_expr.rs b/tests/test_expr.rs
index a61bd03..41d84ce 100644
--- a/tests/test_expr.rs
+++ b/tests/test_expr.rs
@@ -26,11 +26,34 @@ fn test_repeat() {
}
#[test]
-fn test_integer() {
+fn test_literal_to_identifier() {
const CONST0: &str = "const0";
let pasted = paste!([<CONST 0>]);
assert_eq!(pasted, CONST0);
+
+ let pasted = paste!([<CONST '0'>]);
+ assert_eq!(pasted, CONST0);
+
+ let pasted = paste!([<CONST "0">]);
+ assert_eq!(pasted, CONST0);
+
+ let pasted = paste!([<CONST r"0">]);
+ assert_eq!(pasted, CONST0);
+
+ let pasted = paste!([<CONST '\u{30}'>]);
+ assert_eq!(pasted, CONST0);
+}
+
+#[test]
+fn test_literal_suffix() {
+ macro_rules! literal {
+ ($bit:tt) => {
+ paste!([<1_u $bit>])
+ };
+ }
+
+ assert_eq!(literal!(32), 1);
}
#[test]
@@ -235,3 +258,26 @@ mod test_local_setter {
assert_eq!(a.val, 42);
}
}
+
+// https://github.com/dtolnay/paste/issues/85
+#[test]
+fn test_top_level_none_delimiter() {
+ macro_rules! clone {
+ ($val:expr) => {
+ paste! {
+ $val.clone()
+ }
+ };
+ }
+
+ #[derive(Clone)]
+ struct A;
+
+ impl A {
+ fn consume_self(self) {
+ let _ = self;
+ }
+ }
+
+ clone!(&A).consume_self();
+}