diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2023-11-25 09:24:52 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2023-11-25 09:24:52 +0000 |
| commit | 85c708132f3f393ba7df67fc82a85488672c200a (patch) | |
| tree | 223f16e8461f7555b5c1fdff313c5de30bb72fac | |
| parent | 9c958196e717744257e40623ca6598b82e050b9f (diff) | |
| parent | 4ae658683f87b0f34ffb5c06f50ca1c51333a1a4 (diff) | |
Sync from rust 37b2813a7be580ef59048a6bd08444c79e5cc97f
| -rw-r--r-- | build_system/tests.rs | 9 | ||||
| -rw-r--r-- | config.txt | 1 | ||||
| -rw-r--r-- | example/gen_block_iterate.rs | 36 | ||||
| -rw-r--r-- | rustfmt.toml | 5 |
4 files changed, 50 insertions, 1 deletions
diff --git a/build_system/tests.rs b/build_system/tests.rs index 4cc572f0aba..3309a0a6abd 100644 --- a/build_system/tests.rs +++ b/build_system/tests.rs @@ -104,6 +104,15 @@ const BASE_SYSROOT_SUITE: &[TestCase] = &[ runner.run_out_command("polymorphize_coroutine", &[]); }), TestCase::build_bin_and_run("aot.neon", "example/neon.rs", &[]), + TestCase::custom("aot.gen_block_iterate", &|runner| { + runner.run_rustc([ + "example/gen_block_iterate.rs", + "--edition", + "2024", + "-Zunstable-options", + ]); + runner.run_out_command("gen_block_iterate", &[]); + }), ]; pub(crate) static RAND_REPO: GitRepo = GitRepo::github( diff --git a/config.txt b/config.txt index 79284df6b19..0b7cac18837 100644 --- a/config.txt +++ b/config.txt @@ -44,6 +44,7 @@ aot.issue-72793 aot.issue-59326 aot.polymorphize_coroutine aot.neon +aot.gen_block_iterate testsuite.extended_sysroot test.rust-random/rand diff --git a/example/gen_block_iterate.rs b/example/gen_block_iterate.rs new file mode 100644 index 00000000000..14bd23e77ea --- /dev/null +++ b/example/gen_block_iterate.rs @@ -0,0 +1,36 @@ +// Copied from https://github.com/rust-lang/rust/blob/46455dc65069387f2dc46612f13fd45452ab301a/tests/ui/coroutine/gen_block_iterate.rs +// revisions: next old +//compile-flags: --edition 2024 -Zunstable-options +//[next] compile-flags: -Ztrait-solver=next +// run-pass +#![feature(gen_blocks)] + +fn foo() -> impl Iterator<Item = u32> { + gen { yield 42; for x in 3..6 { yield x } } +} + +fn moved() -> impl Iterator<Item = u32> { + let mut x = "foo".to_string(); + gen move { + yield 42; + if x == "foo" { return } + x.clear(); + for x in 3..6 { yield x } + } +} + +fn main() { + let mut iter = foo(); + assert_eq!(iter.next(), Some(42)); + assert_eq!(iter.next(), Some(3)); + assert_eq!(iter.next(), Some(4)); + assert_eq!(iter.next(), Some(5)); + assert_eq!(iter.next(), None); + // `gen` blocks are fused + assert_eq!(iter.next(), None); + + let mut iter = moved(); + assert_eq!(iter.next(), Some(42)); + assert_eq!(iter.next(), None); + +} diff --git a/rustfmt.toml b/rustfmt.toml index ebeca8662a5..0f884187add 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,4 +1,7 @@ -ignore = ["y.rs"] +ignore = [ + "y.rs", + "example/gen_block_iterate.rs", # uses edition 2024 +] # Matches rustfmt.toml of rustc version = "Two" |
