about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/run-pass/generator/auxiliary/xcrate.rs12
-rw-r--r--src/test/run-pass/generator/xcrate.rs11
2 files changed, 18 insertions, 5 deletions
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<Yield = (), Return = ()> {
     || {
-        if bar() {
+        if false {
             yield;
         }
     }
 }
+
+pub fn bar<T: 'static>(t: T) -> Box<Generator<Yield = T, Return = ()>> {
+    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),
+    }
 }