File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -56,6 +56,35 @@ fn test_fn_like_macro_clone_ident_subtree() {
56
56
) ;
57
57
}
58
58
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
+
59
88
#[ test]
60
89
fn test_fn_like_macro_clone_literals ( ) {
61
90
assert_expand (
@@ -105,6 +134,7 @@ fn list_test_macros() {
105
134
fn_like_panic [FuncLike]
106
135
fn_like_error [FuncLike]
107
136
fn_like_clone_tokens [FuncLike]
137
+ fn_like_mk_literals [FuncLike]
108
138
attr_noop [Attr]
109
139
attr_panic [Attr]
110
140
attr_error [Attr]
Original file line number Diff line number Diff line change @@ -24,6 +24,22 @@ pub fn fn_like_clone_tokens(args: TokenStream) -> TokenStream {
24
24
clone_stream ( args)
25
25
}
26
26
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
+
27
43
#[ proc_macro_attribute]
28
44
pub fn attr_noop ( _args : TokenStream , item : TokenStream ) -> TokenStream {
29
45
item
You can’t perform that action at this time.
0 commit comments