1 // compile-flags: --edition=2018
2 #![feature(custom_inner_attributes)]
4 #![warn(clippy::debug_assert_with_mut_call)]
5 #![allow(clippy::redundant_closure_call)]
10 fn bool_self_ref(&self) -> bool { false }
11 fn bool_self_mut(&mut self) -> bool { false }
12 fn bool_self_ref_arg_ref(&self, _: &u32) -> bool { false }
13 fn bool_self_ref_arg_mut(&self, _: &mut u32) -> bool { false }
14 fn bool_self_mut_arg_ref(&mut self, _: &u32) -> bool { false }
15 fn bool_self_mut_arg_mut(&mut self, _: &mut u32) -> bool { false }
17 fn u32_self_ref(&self) -> u32 { 0 }
18 fn u32_self_mut(&mut self) -> u32 { 0 }
19 fn u32_self_ref_arg_ref(&self, _: &u32) -> u32 { 0 }
20 fn u32_self_ref_arg_mut(&self, _: &mut u32) -> u32 { 0 }
21 fn u32_self_mut_arg_ref(&mut self, _: &u32) -> u32 { 0 }
22 fn u32_self_mut_arg_mut(&mut self, _: &mut u32) -> u32 { 0 }
25 fn bool_ref(_: &u32) -> bool { false }
26 fn bool_mut(_: &mut u32) -> bool { false }
27 fn u32_ref(_: &u32) -> u32 { 0 }
28 fn u32_mut(_: &mut u32) -> u32 { 0 }
30 fn func_non_mutable() {
31 debug_assert!(bool_ref(&3));
32 debug_assert!(!bool_ref(&3));
34 debug_assert_eq!(0, u32_ref(&3));
35 debug_assert_eq!(u32_ref(&3), 0);
37 debug_assert_ne!(1, u32_ref(&3));
38 debug_assert_ne!(u32_ref(&3), 1);
42 debug_assert!(bool_mut(&mut 3));
43 debug_assert!(!bool_mut(&mut 3));
45 debug_assert_eq!(0, u32_mut(&mut 3));
46 debug_assert_eq!(u32_mut(&mut 3), 0);
48 debug_assert_ne!(1, u32_mut(&mut 3));
49 debug_assert_ne!(u32_mut(&mut 3), 1);
52 fn method_non_mutable() {
53 debug_assert!(S.bool_self_ref());
54 debug_assert!(S.bool_self_ref_arg_ref(&3));
56 debug_assert_eq!(S.u32_self_ref(), 0);
57 debug_assert_eq!(S.u32_self_ref_arg_ref(&3), 0);
59 debug_assert_ne!(S.u32_self_ref(), 1);
60 debug_assert_ne!(S.u32_self_ref_arg_ref(&3), 1);
64 debug_assert!(S.bool_self_mut());
65 debug_assert!(!S.bool_self_mut());
66 debug_assert!(S.bool_self_ref_arg_mut(&mut 3));
67 debug_assert!(S.bool_self_mut_arg_ref(&3));
68 debug_assert!(S.bool_self_mut_arg_mut(&mut 3));
70 debug_assert_eq!(S.u32_self_mut(), 0);
71 debug_assert_eq!(S.u32_self_mut_arg_ref(&3), 0);
72 debug_assert_eq!(S.u32_self_ref_arg_mut(&mut 3), 0);
73 debug_assert_eq!(S.u32_self_mut_arg_mut(&mut 3), 0);
75 debug_assert_ne!(S.u32_self_mut(), 1);
76 debug_assert_ne!(S.u32_self_mut_arg_ref(&3), 1);
77 debug_assert_ne!(S.u32_self_ref_arg_mut(&mut 3), 1);
78 debug_assert_ne!(S.u32_self_mut_arg_mut(&mut 3), 1);
83 let mut v: Vec<u32> = vec![1, 2, 3, 4];
84 debug_assert_eq!(v.get(0), Some(&1));
85 debug_assert_ne!(v[0], 2);
86 debug_assert_eq!(v.pop(), Some(1));
87 debug_assert_ne!(Some(3), v.pop());
90 debug_assert!(bool_mut(a));
93 debug_assert!(!(bool_ref(&u32_mut(&mut 3))));
96 debug_assert_eq!(v.pop().unwrap(), 3);
99 debug_assert!(bool_ref(&3), "w/o format");
100 debug_assert!(bool_mut(&mut 3), "w/o format");
101 debug_assert!(bool_ref(&3), "{} format", "w/");
102 debug_assert!(bool_mut(&mut 3), "{} format", "w/");
119 async fn debug_await() {
120 debug_assert!(async {
128 method_non_mutable();