about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-02-19 23:44:53 +0100
committerJonas Schievink <jonasschievink@gmail.com>2020-02-20 00:14:55 +0100
commitfc2702c96c0db560f55683e4cd33075c054ed062 (patch)
treed6c5a5a5642dc6a2477f94f600b290ff9b905732
parent66b1ae40606ae0c07645ebc8f97e537d8d30ef73 (diff)
downloadrust-fc2702c96c0db560f55683e4cd33075c054ed062.tar.gz
rust-fc2702c96c0db560f55683e4cd33075c054ed062.zip
Add regression test
-rw-r--r--src/test/ui/generator/issue-69039.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/generator/issue-69039.rs b/src/test/ui/generator/issue-69039.rs
new file mode 100644
index 00000000000..60004f3b0ae
--- /dev/null
+++ b/src/test/ui/generator/issue-69039.rs
@@ -0,0 +1,30 @@
+// run-pass
+
+#![feature(generators, generator_trait)]
+
+use std::ops::{Generator, GeneratorState};
+
+fn my_scenario() -> impl Generator<String, Yield = &'static str, Return = String> {
+    |_arg: String| {
+        let my_name = yield "What is your name?";
+        let my_mood = yield "How are you feeling?";
+        format!("{} is {}", my_name.trim(), my_mood.trim())
+    }
+}
+
+fn main() {
+    let mut my_session = Box::pin(my_scenario());
+
+    assert_eq!(
+        my_session.as_mut().resume("_arg".to_string()),
+        GeneratorState::Yielded("What is your name?")
+    );
+    assert_eq!(
+        my_session.as_mut().resume("Your Name".to_string()),
+        GeneratorState::Yielded("How are you feeling?")
+    );
+    assert_eq!(
+        my_session.as_mut().resume("Sensory Organs".to_string()),
+        GeneratorState::Complete("Your Name is Sensory Organs".to_string())
+    );
+}