about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-11-24 08:42:35 +0100
committerGitHub <noreply@github.com>2022-11-24 08:42:35 +0100
commit84ff4ab5a238558a009e1cc6f375b0922053b95b (patch)
treee31da327a86e298d7fe813a8448eea88efb6e565
parent6938717ca5fe8035d4aea3cf89664afdd6b137b1 (diff)
parent9abd785543710c382b99a8346a1e360aa539da13 (diff)
downloadrust-84ff4ab5a238558a009e1cc6f375b0922053b95b.tar.gz
rust-84ff4ab5a238558a009e1cc6f375b0922053b95b.zip
Rollup merge of #104771 - est31:if_let_chain_broken_mir_test, r=davidtwco
Add regression test for issue #99938

That issue was a dupe of #99852, and it got fixed since, but it's always better to have multiple regression tests rather than one.

closes #99938
-rw-r--r--src/test/ui/rfc-2497-if-let-chains/issue-99938.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/ui/rfc-2497-if-let-chains/issue-99938.rs b/src/test/ui/rfc-2497-if-let-chains/issue-99938.rs
new file mode 100644
index 00000000000..bd81ce0b19c
--- /dev/null
+++ b/src/test/ui/rfc-2497-if-let-chains/issue-99938.rs
@@ -0,0 +1,31 @@
+// compile-flags: -Zvalidate-mir -C opt-level=3
+// build-pass
+#![feature(let_chains)]
+struct TupleIter<T, I: Iterator<Item = T>> {
+    inner: I,
+}
+
+impl<T, I: Iterator<Item = T>> Iterator for TupleIter<T, I> {
+    type Item = (T, T, T);
+
+    fn next(&mut self) -> Option<Self::Item> {
+        let inner = &mut self.inner;
+
+        if let Some(first) = inner.next()
+            && let Some(second) = inner.next()
+            && let Some(third) = inner.next()
+        {
+            Some((first, second, third))
+        } else {
+            None
+        }
+    }
+}
+
+fn main() {
+    let vec: Vec<u8> = Vec::new();
+    let mut tup_iter = TupleIter {
+        inner: vec.into_iter(),
+    };
+    tup_iter.next();
+}