summaryrefslogtreecommitdiffstats
path: root/src/test/ui/generator/yield-while-iterating.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/generator/yield-while-iterating.rs
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/generator/yield-while-iterating.rs')
-rw-r--r--src/test/ui/generator/yield-while-iterating.rs75
1 files changed, 0 insertions, 75 deletions
diff --git a/src/test/ui/generator/yield-while-iterating.rs b/src/test/ui/generator/yield-while-iterating.rs
deleted file mode 100644
index 985e5d8bd..000000000
--- a/src/test/ui/generator/yield-while-iterating.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-#![feature(generators, generator_trait)]
-
-use std::ops::{GeneratorState, Generator};
-use std::cell::Cell;
-use std::pin::Pin;
-
-fn yield_during_iter_owned_data(x: Vec<i32>) {
- // The generator owns `x`, so we error out when yielding with a
- // reference to it. This winds up becoming a rather confusing
- // regionck error -- in particular, we would freeze with the
- // reference in scope, and it doesn't live long enough.
- let _b = move || {
- for p in &x { //~ ERROR
- yield();
- }
- };
-}
-
-fn yield_during_iter_borrowed_slice(x: &[i32]) {
- let _b = move || {
- for p in x {
- yield();
- }
- };
-}
-
-fn yield_during_iter_borrowed_slice_2() {
- let mut x = vec![22_i32];
- let _b = || {
- for p in &x {
- yield();
- }
- };
- println!("{:?}", x);
-}
-
-fn yield_during_iter_borrowed_slice_3() {
- // OK to take a mutable ref to `x` and yield
- // up pointers from it:
- let mut x = vec![22_i32];
- let mut b = || {
- for p in &mut x {
- yield p;
- }
- };
- Pin::new(&mut b).resume(());
-}
-
-fn yield_during_iter_borrowed_slice_4() {
- // ...but not OK to do that while reading
- // from `x` too
- let mut x = vec![22_i32];
- let mut b = || {
- for p in &mut x {
- yield p;
- }
- };
- println!("{}", x[0]); //~ ERROR
- Pin::new(&mut b).resume(());
-}
-
-fn yield_during_range_iter() {
- // Should be OK.
- let mut b = || {
- let v = vec![1,2,3];
- let len = v.len();
- for i in 0..len {
- let x = v[i];
- yield x;
- }
- };
- Pin::new(&mut b).resume(());
-}
-
-fn main() { }