Skip to content

Commit 36d825f

Browse files
Add test for literals created client-side
1 parent 32ee097 commit 36d825f

File tree

2 files changed

+46
-0
lines changed
  • crates

2 files changed

+46
-0
lines changed

crates/proc-macro-srv/src/tests/mod.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,35 @@ fn test_fn_like_macro_clone_ident_subtree() {
5656
);
5757
}
5858

59+
#[test]
60+
fn test_fn_like_macro_clone_raw_ident() {
61+
assert_expand(
62+
"fn_like_clone_tokens",
63+
"r#\"ident\"#",
64+
expect![[r##"
65+
SUBTREE $
66+
LITERAL r#"ident"# 4294967295"##]],
67+
);
68+
}
69+
70+
#[test]
71+
fn test_fn_like_mk_literals() {
72+
assert_expand(
73+
"fn_like_mk_literals",
74+
r#""#,
75+
expect![[r#"
76+
SUBTREE $
77+
LITERAL b"byte_string" 4294967295
78+
LITERAL 'c' 4294967295
79+
LITERAL "string" 4294967295
80+
LITERAL "maybe \"raw\"?" 4294967295
81+
LITERAL 3.14f64 4294967295
82+
LITERAL 3.14 4294967295
83+
LITERAL 123i64 4294967295
84+
LITERAL 123 4294967295"#]],
85+
);
86+
}
87+
5988
#[test]
6089
fn test_fn_like_macro_clone_literals() {
6190
assert_expand(
@@ -105,6 +134,7 @@ fn list_test_macros() {
105134
fn_like_panic [FuncLike]
106135
fn_like_error [FuncLike]
107136
fn_like_clone_tokens [FuncLike]
137+
fn_like_mk_literals [FuncLike]
108138
attr_noop [Attr]
109139
attr_panic [Attr]
110140
attr_error [Attr]

crates/proc-macro-test/imp/src/lib.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,22 @@ pub fn fn_like_clone_tokens(args: TokenStream) -> TokenStream {
2424
clone_stream(args)
2525
}
2626

27+
#[proc_macro]
28+
pub fn fn_like_mk_literals(_args: TokenStream) -> TokenStream {
29+
let trees: Vec<TokenTree> = vec![
30+
TokenTree::from(Literal::byte_string(b"byte_string")),
31+
TokenTree::from(Literal::character('c')),
32+
TokenTree::from(Literal::string("string")),
33+
// as of 2022-07-21, there's no method on `Literal` to build a raw
34+
// string or a raw byte string
35+
TokenTree::from(Literal::f64_suffixed(3.14)),
36+
TokenTree::from(Literal::f64_unsuffixed(3.14)),
37+
TokenTree::from(Literal::i64_suffixed(123)),
38+
TokenTree::from(Literal::i64_unsuffixed(123)),
39+
];
40+
TokenStream::from_iter(trees)
41+
}
42+
2743
#[proc_macro_attribute]
2844
pub fn attr_noop(_args: TokenStream, item: TokenStream) -> TokenStream {
2945
item

0 commit comments

Comments
 (0)