test generator that yields during initialization of struct with uninhabited field

This commit is contained in:
Ralf Jung 2019-08-09 10:32:53 +02:00
parent 1766d1b84b
commit d5294a5bf3

View File

@ -1,4 +1,4 @@
#![feature(generators, generator_trait)]
#![feature(generators, generator_trait, never_type)]
use std::ops::{GeneratorState, Generator};
use std::pin::Pin;
@ -26,6 +26,7 @@ fn never() -> Never {
fn main() {
finish(1, || yield 1);
finish(3, || {
let mut x = 0;
yield 1;
@ -35,23 +36,27 @@ fn main() {
yield 1;
assert_eq!(x, 2);
});
finish(7*8/2, || {
for i in 0..8 {
yield i;
}
});
finish(1, || {
if true {
yield 1;
} else {
}
});
finish(1, || {
if false {
} else {
yield 1;
}
});
finish(2, || {
if { yield 1; false } {
yield 1;
@ -59,6 +64,7 @@ fn main() {
}
yield 1;
});
// also test a self-referential generator
assert_eq!(
finish(5, || {
@ -71,6 +77,7 @@ fn main() {
}),
10
);
let b = true;
finish(1, || {
yield 1;
@ -80,4 +87,10 @@ fn main() {
yield 2;
drop(x);
});
finish(3, || {
yield 1;
#[allow(unreachable_code)]
let _x: (String, !) = (String::new(), { yield 2; return });
});
}