2 // aux-build:macro_rules.rs
4 #![allow(unused_variables, dead_code, clippy::derive_partial_eq_without_eq)]
5 #![warn(clippy::equatable_if_let)]
8 extern crate macro_rules;
10 use std::cmp::Ordering;
14 TupleVariant(i32, u64),
15 RecordVariant { a: i64, b: u32 },
26 struct NoPartialEqStruct {
36 enum NotStructuralEq {
41 impl PartialEq for NotStructuralEq {
42 fn eq(&self, _: &NotStructuralEq) -> bool {
51 let d = Struct { a: 2, b: false };
52 let e = Enum::UnitVariant;
53 let f = NotPartialEq::A;
54 let g = NotStructuralEq::A;
55 let h = NoPartialEqStruct { a: 2, b: false };
60 if let Ordering::Greater = a.cmp(&b) {}
62 if let Struct { a: 2, b: false } = d {}
63 if let Enum::TupleVariant(32, 64) = e {}
64 if let Enum::RecordVariant { a: 64, b: 32 } = e {}
65 if let Enum::UnitVariant = e {}
66 if let (Enum::UnitVariant, &Struct { a: 2, b: false }) = (e, &d) {}
72 if let Some(3 | 4) = c {}
73 if let Struct { a, b: false } = d {}
74 if let Struct { a: 2, b: x } = d {}
75 if let NotPartialEq::A = f {}
76 if let NotStructuralEq::A = g {}
77 if let Some(NotPartialEq::A) = Some(f) {}
78 if let Some(NotStructuralEq::A) = Some(g) {}
79 if let NoPartialEqStruct { a: 2, b: false } = h {}
86 if let m1!(x) = "abc" {