diff options
| author | Pietro Albini <pietro@pietroalbini.org> | 2019-03-08 09:41:52 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-08 09:41:52 +0100 |
| commit | 4083c698e5efdfbe7df69fd5103ce790b3fb0800 (patch) | |
| tree | 101522801349ea274aff7c8e506f5fa68dfcef24 | |
| parent | 4bff63f05ff0108d5dd083d6a865003cb69e075b (diff) | |
| parent | 41e60d1562738c0295c4344339c6368e9446e936 (diff) | |
| download | rust-4083c698e5efdfbe7df69fd5103ce790b3fb0800.tar.gz rust-4083c698e5efdfbe7df69fd5103ce790b3fb0800.zip | |
Rollup merge of #58906 - Nemo157:generator-state-debug-info, r=Zoxc
Monomorphize generator field types for debuginfo Fixes #58888 r? @Zoxc
| -rw-r--r-- | src/librustc_codegen_ssa/mir/mod.rs | 1 | ||||
| -rw-r--r-- | src/test/run-pass/generator/issue-58888.rs | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/librustc_codegen_ssa/mir/mod.rs b/src/librustc_codegen_ssa/mir/mod.rs index 870b97401f4..a90dc356c92 100644 --- a/src/librustc_codegen_ssa/mir/mod.rs +++ b/src/librustc_codegen_ssa/mir/mod.rs @@ -679,6 +679,7 @@ fn arg_local_refs<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>( .zip(state_tys) .enumerate() .filter_map(move |(i, (decl, ty))| { + let ty = fx.monomorphize(&ty); decl.name.map(|name| (i + upvar_count + 1, name, false, ty)) }) }).into_iter().flatten(); diff --git a/src/test/run-pass/generator/issue-58888.rs b/src/test/run-pass/generator/issue-58888.rs new file mode 100644 index 00000000000..43b37a9afc2 --- /dev/null +++ b/src/test/run-pass/generator/issue-58888.rs @@ -0,0 +1,27 @@ +// run-pass +// compile-flags: -g + +#![feature(generators, generator_trait)] + +use std::ops::Generator; + +struct Database; + +impl Database { + fn get_connection(&self) -> impl Iterator<Item = ()> { + Some(()).into_iter() + } + + fn check_connection(&self) -> impl Generator<Yield = (), Return = ()> + '_ { + move || { + let iter = self.get_connection(); + for i in iter { + yield i + } + } + } +} + +fn main() { + Database.check_connection(); +} |
