summaryrefslogtreecommitdiffstats
path: root/tests/ui/generator/yield-while-iterating.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-07 05:48:48 +0000
commitef24de24a82fe681581cc130f342363c47c0969a (patch)
tree0d494f7e1a38b95c92426f58fe6eaa877303a86c /tests/ui/generator/yield-while-iterating.rs
parentReleasing progress-linux version 1.74.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-ef24de24a82fe681581cc130f342363c47c0969a.tar.xz
rustc-ef24de24a82fe681581cc130f342363c47c0969a.zip
Merging upstream version 1.75.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/generator/yield-while-iterating.rs')
-rw-r--r--tests/ui/generator/yield-while-iterating.rs75
1 files changed, 0 insertions, 75 deletions
diff --git a/tests/ui/generator/yield-while-iterating.rs b/tests/ui/generator/yield-while-iterating.rs
deleted file mode 100644
index 985e5d8bd..000000000
--- a/tests/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() { }