]> git.lizzy.rs Git - rust.git/blobdiff - tests/ui/infallible_destructuring_match.fixed
iterate List by value
[rust.git] / tests / ui / infallible_destructuring_match.fixed
index f16f0fd00197b90695cc58adcb1a2d00465bbd76..b8e40d995531aeb43c3c021716336450cf3d44d7 100644 (file)
@@ -11,12 +11,23 @@ struct TupleStruct(i32);
 
 enum EmptyEnum {}
 
+macro_rules! match_enum {
+    ($param:expr) => {
+        let data = match $param {
+            SingleVariantEnum::Variant(i) => i,
+        };
+    };
+}
+
 fn infallible_destructuring_match_enum() {
     let wrapper = SingleVariantEnum::Variant(0);
 
     // This should lint!
     let SingleVariantEnum::Variant(data) = wrapper;
 
+    // This shouldn't (inside macro)
+    match_enum!(wrapper);
+
     // This shouldn't!
     let data = match wrapper {
         SingleVariantEnum::Variant(_) => -1,
@@ -30,12 +41,23 @@ fn infallible_destructuring_match_enum() {
     let SingleVariantEnum::Variant(data) = wrapper;
 }
 
+macro_rules! match_struct {
+    ($param:expr) => {
+        let data = match $param {
+            TupleStruct(i) => i,
+        };
+    };
+}
+
 fn infallible_destructuring_match_struct() {
     let wrapper = TupleStruct(0);
 
     // This should lint!
     let TupleStruct(data) = wrapper;
 
+    // This shouldn't (inside macro)
+    match_struct!(wrapper);
+
     // This shouldn't!
     let data = match wrapper {
         TupleStruct(_) => -1,
@@ -49,12 +71,23 @@ fn infallible_destructuring_match_struct() {
     let TupleStruct(data) = wrapper;
 }
 
+macro_rules! match_never_enum {
+    ($param:expr) => {
+        let data = match $param {
+            Ok(i) => i,
+        };
+    };
+}
+
 fn never_enum() {
     let wrapper: Result<i32, !> = Ok(23);
 
     // This should lint!
     let Ok(data) = wrapper;
 
+    // This shouldn't (inside macro)
+    match_never_enum!(wrapper);
+
     // This shouldn't!
     let data = match wrapper {
         Ok(_) => -1,