diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-04-02 13:47:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-04-02 13:47:22 +0200 |
| commit | d86a8f3563e32b85d47c494bfdd08e4a39b8df4a (patch) | |
| tree | ea22048c08feb7d52f7788c614b6a08c6596258f /src/test/ui/thinlto | |
| parent | c9d9df58300715d35a0dd5f9af0d1adbbfed8412 (diff) | |
| parent | 749349fc9f7b12f212bca9ba2297e463328cb701 (diff) | |
| download | rust-d86a8f3563e32b85d47c494bfdd08e4a39b8df4a.tar.gz rust-d86a8f3563e32b85d47c494bfdd08e4a39b8df4a.zip | |
Rollup merge of #59286 - cramertj:async-fn-ret-ty, r=varkor
Refactor async fn return type lowering
async fn now lowers directly to an existential type declaration
rather than reusing the `impl Trait` return type lowering.
As part of this, it lowers all argument-position elided lifetimes
using the in-band-lifetimes machinery, creating fresh parameter
names for each of them, using each lifetime parameter as a generic
argument to the generated existential type.
This doesn't currently successfully allow multiple
argument-position elided lifetimes since `existential type`
doesn't yet support multiple lifetimes where neither outlive
the other:
```rust
existential type Foo<'a, 'b>:; // error: ambiguous lifetime bound in `impl Trait`
fn foo<'a, 'b>(_: &'a u8, _: &'b u8) -> Foo<'a, 'b> { () }
```
This requires a separate fix.
Fix #59001
Fix #58885
Fix #55324
Fix #54974
Progress on #56238
r? @nikomatsakis
Diffstat (limited to 'src/test/ui/thinlto')
0 files changed, 0 insertions, 0 deletions
