about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2017-08-09 16:38:05 -0700
committerAlex Crichton <alex@alexcrichton.com>2017-08-09 16:38:05 -0700
commitbe95ca4b17203a3aed27c17c1e93b76c9477e5bc (patch)
tree55063debea7cf4d217e4f7d5cb052aca756401eb /src
parente181060a59c5975bd1a011524d9541a3cdacdfbb (diff)
downloadrust-be95ca4b17203a3aed27c17c1e93b76c9477e5bc.tar.gz
rust-be95ca4b17203a3aed27c17c1e93b76c9477e5bc.zip
Add a failing xcrate generator test
Diffstat (limited to 'src')
-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),
+    }
 }