/src/test/ui/proc-macro/auxiliary/attr-stmt-expr-rpass.rs

https://gitlab.com/rust-lang/rust · Rust · 51 lines · 39 code · 10 blank · 2 comment · 0 complexity · cef299a9790824d6b5b99c6d0383d656 MD5 · raw file

  1. // force-host
  2. // no-prefer-dynamic
  3. #![crate_type = "proc-macro"]
  4. extern crate proc_macro;
  5. use proc_macro::TokenStream;
  6. #[proc_macro_attribute]
  7. pub fn expect_let(attr: TokenStream, item: TokenStream) -> TokenStream {
  8. assert!(attr.to_string().is_empty());
  9. assert_eq!(item.to_string(), "let string = \"Hello, world!\" ;");
  10. item
  11. }
  12. #[proc_macro_attribute]
  13. pub fn expect_print_stmt(attr: TokenStream, item: TokenStream) -> TokenStream {
  14. assert!(attr.to_string().is_empty());
  15. assert_eq!(item.to_string(), "println! (\"{}\", string) ;");
  16. item
  17. }
  18. #[proc_macro_attribute]
  19. pub fn expect_expr(attr: TokenStream, item: TokenStream) -> TokenStream {
  20. assert!(attr.to_string().is_empty());
  21. assert_eq!(item.to_string(), "print_str(\"string\")");
  22. item
  23. }
  24. #[proc_macro_attribute]
  25. pub fn expect_print_expr(attr: TokenStream, item: TokenStream) -> TokenStream {
  26. assert!(attr.to_string().is_empty());
  27. assert_eq!(item.to_string(), "println! (\"{}\", string)");
  28. item
  29. }
  30. #[proc_macro_attribute]
  31. pub fn no_output(attr: TokenStream, item: TokenStream) -> TokenStream {
  32. assert!(attr.to_string().is_empty());
  33. assert!(!item.to_string().is_empty());
  34. "".parse().unwrap()
  35. }
  36. #[proc_macro_attribute]
  37. pub fn noop(attr: TokenStream, item: TokenStream) -> TokenStream {
  38. assert!(attr.to_string().is_empty());
  39. assert!(!item.to_string().is_empty());
  40. item
  41. }