From 93aa60b4bf50ec619f6f55bb5cd6d27ea280a573 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Sat, 22 Jun 2019 17:31:14 -0400 Subject: Move run-pass test to run-pass/generator --- src/test/run-pass/generator/addassign-yield.rs | 34 ++++++++++++++++++++++++++ src/test/run-pass/issues/issue-61442.rs | 28 --------------------- 2 files changed, 34 insertions(+), 28 deletions(-) create mode 100644 src/test/run-pass/generator/addassign-yield.rs delete mode 100644 src/test/run-pass/issues/issue-61442.rs (limited to 'src') diff --git a/src/test/run-pass/generator/addassign-yield.rs b/src/test/run-pass/generator/addassign-yield.rs new file mode 100644 index 00000000000..6a417936384 --- /dev/null +++ b/src/test/run-pass/generator/addassign-yield.rs @@ -0,0 +1,34 @@ +// Regression test for broken MIR error (#61442) +// Due to the two possible evaluation orders for +// a '+=' expression (depending on whether or not the 'AddAssign' trait +// is being used), we were failing to account for all types that might +// possibly be live across a yield point. + +#![feature(generators)] + +fn foo() { + let _x = static || { + let mut s = String::new(); + s += { yield; "" }; + }; + + let _y = static || { + let x = &mut 0; + *{ yield; x } += match String::new() { _ => 0 }; + }; + + // Please don't ever actually write something like this + let _z = static || { + let x = &mut 0; + *{ + let inner = &mut 1; + *{ yield (); inner } += match String::new() { _ => 1}; + yield; + x + } += match String::new() { _ => 2 }; + }; +} + +fn main() { + foo() +} diff --git a/src/test/run-pass/issues/issue-61442.rs b/src/test/run-pass/issues/issue-61442.rs deleted file mode 100644 index 83b2c4b8189..00000000000 --- a/src/test/run-pass/issues/issue-61442.rs +++ /dev/null @@ -1,28 +0,0 @@ -#![feature(generators)] - -fn foo() { - let _x = static || { - let mut s = String::new(); - s += { yield; "" }; - }; - - let _y = static || { - let x = &mut 0; - *{ yield; x } += match String::new() { _ => 0 }; - }; - - // Please don't ever actually write something like this - let _z = static || { - let x = &mut 0; - *{ - let inner = &mut 1; - *{ yield (); inner } += match String::new() { _ => 1}; - yield; - x - } += match String::new() { _ => 2 }; - }; -} - -fn main() { - foo() -} -- cgit 1.4.1-3-g733a5