• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // force-host
2 // no-prefer-dynamic
3 
4 #![crate_type = "proc-macro"]
5 
6 extern crate proc_macro;
7 
8 use proc_macro::TokenStream;
9 
10 #[proc_macro_attribute]
expect_let(attr: TokenStream, item: TokenStream) -> TokenStream11 pub fn expect_let(attr: TokenStream, item: TokenStream) -> TokenStream {
12     assert!(attr.to_string().is_empty());
13     assert_eq!(item.to_string(), "let string = \"Hello, world!\" ;");
14     item
15 }
16 
17 #[proc_macro_attribute]
expect_my_macro_stmt(attr: TokenStream, item: TokenStream) -> TokenStream18 pub fn expect_my_macro_stmt(attr: TokenStream, item: TokenStream) -> TokenStream {
19     assert!(attr.to_string().is_empty());
20     assert_eq!(item.to_string(), "my_macro! (\"{}\", string) ;");
21     item
22 }
23 
24 #[proc_macro_attribute]
expect_expr(attr: TokenStream, item: TokenStream) -> TokenStream25 pub fn expect_expr(attr: TokenStream, item: TokenStream) -> TokenStream {
26     assert!(attr.to_string().is_empty());
27     assert_eq!(item.to_string(), "print_str(\"string\")");
28     item
29 }
30 
31 #[proc_macro_attribute]
expect_my_macro_expr(attr: TokenStream, item: TokenStream) -> TokenStream32 pub fn expect_my_macro_expr(attr: TokenStream, item: TokenStream) -> TokenStream {
33     assert!(attr.to_string().is_empty());
34     assert_eq!(item.to_string(), "my_macro! (\"{}\", string)");
35     item
36 }
37 
38 #[proc_macro_attribute]
duplicate(attr: TokenStream, item: TokenStream) -> TokenStream39 pub fn duplicate(attr: TokenStream, item: TokenStream) -> TokenStream {
40     assert!(attr.to_string().is_empty());
41     format!("{}, {}", item, item).parse().unwrap()
42 }
43 
44 #[proc_macro_attribute]
no_output(attr: TokenStream, item: TokenStream) -> TokenStream45 pub fn no_output(attr: TokenStream, item: TokenStream) -> TokenStream {
46     assert!(attr.to_string().is_empty());
47     assert!(!item.to_string().is_empty());
48     "".parse().unwrap()
49 }
50