about summary refs log tree commit diff
path: root/src/test/ui/thinlto
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-04-02 13:47:22 +0200
committerGitHub <noreply@github.com>2019-04-02 13:47:22 +0200
commitd86a8f3563e32b85d47c494bfdd08e4a39b8df4a (patch)
treeea22048c08feb7d52f7788c614b6a08c6596258f /src/test/ui/thinlto
parentc9d9df58300715d35a0dd5f9af0d1adbbfed8412 (diff)
parent749349fc9f7b12f212bca9ba2297e463328cb701 (diff)
downloadrust-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