diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/generator/yield-while-iterating.rs | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-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.rs | 75 |
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() { } |