1 #![allow(dead_code)] 2 3 //! Used to test that certain lints don't trigger in imported external macros 4 5 #[macro_export] 6 macro_rules! foofoo { 7 () => { 8 loop {} 9 }; 10 } 11 12 #[macro_export] 13 macro_rules! must_use_unit { 14 () => { 15 #[must_use] 16 fn foo() {} 17 }; 18 } 19 20 #[macro_export] 21 macro_rules! try_err { 22 () => { 23 pub fn try_err_fn() -> Result<i32, i32> { 24 let err: i32 = 1; 25 // To avoid warnings during rustfix 26 if true { Err(err)? } else { Ok(2) } 27 } 28 }; 29 } 30 31 #[macro_export] 32 macro_rules! string_add { 33 () => { 34 let y = "".to_owned(); 35 let z = y + "..."; 36 }; 37 } 38 39 #[macro_export] 40 macro_rules! take_external { 41 ($s:expr) => { 42 std::mem::replace($s, Default::default()) 43 }; 44 } 45 46 #[macro_export] 47 macro_rules! option_env_unwrap_external { 48 ($env: expr) => { 49 option_env!($env).unwrap() 50 }; 51 ($env: expr, $message: expr) => { 52 option_env!($env).expect($message) 53 }; 54 } 55 56 #[macro_export] 57 macro_rules! ref_arg_binding { 58 () => { 59 let ref _y = 42; 60 }; 61 } 62 63 #[macro_export] 64 macro_rules! ref_arg_function { 65 () => { 66 fn fun_example(ref _x: usize) {} 67 }; 68 } 69 70 #[macro_export] 71 macro_rules! as_conv_with_arg { 72 (0u32 as u64) => { 73 () 74 }; 75 } 76 77 #[macro_export] 78 macro_rules! as_conv { 79 () => { 80 0u32 as u64 81 }; 82 } 83 84 #[macro_export] 85 macro_rules! large_enum_variant { 86 () => { 87 enum LargeEnumInMacro { 88 A(i32), 89 B([i32; 8000]), 90 } 91 }; 92 } 93 94 #[macro_export] 95 macro_rules! field_reassign_with_default { 96 () => { 97 #[derive(Default)] 98 struct A { 99 pub i: i32, 100 pub j: i64, 101 } 102 fn lint() { 103 let mut a: A = Default::default(); 104 a.i = 42; 105 a; 106 } 107 }; 108 } 109 110 #[macro_export] 111 macro_rules! default_numeric_fallback { 112 () => { 113 let x = 22; 114 }; 115 } 116 117 #[macro_export] 118 macro_rules! mut_mut { 119 () => { 120 let mut_mut_ty: &mut &mut u32 = &mut &mut 1u32; 121 }; 122 } 123