diff --git a/src/test/run-pass/generator/auxiliary/xcrate.rs b/src/test/run-pass/generator/auxiliary/xcrate.rs index 519c34cd0ed..f6878e64fbf 100644 --- a/src/test/run-pass/generator/auxiliary/xcrate.rs +++ b/src/test/run-pass/generator/auxiliary/xcrate.rs @@ -12,14 +12,16 @@ use std::ops::Generator; -fn bar() -> bool { - false -} - pub fn foo() -> impl Generator { || { - if bar() { + if false { yield; } } } + +pub fn bar(t: T) -> Box> { + Box::new(|| { + yield t; + }) +} diff --git a/src/test/run-pass/generator/xcrate.rs b/src/test/run-pass/generator/xcrate.rs index 5d6cdee1a24..7db56793829 100644 --- a/src/test/run-pass/generator/xcrate.rs +++ b/src/test/run-pass/generator/xcrate.rs @@ -23,4 +23,15 @@ fn main() { GeneratorState::Complete(()) => {} s => panic!("bad state: {:?}", s), } + + let mut foo = xcrate::bar(3); + + match foo.resume() { + GeneratorState::Yielded(4) => {} + s => panic!("bad state: {:?}", s), + } + match foo.resume() { + GeneratorState::Complete(()) => {} + s => panic!("bad state: {:?}", s), + } }