-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
async: hidden type for impl Trait
captures lifetime that does not appear in bounds
#59001
Labels
A-async-await
Area: Async & Await
AsyncAwait-Polish
Async-await issues that are part of the "polish" area
C-bug
Category: This is a bug.
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
Comments
11 tasks
jonas-schievink
added
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
C-bug
Category: This is a bug.
A-async-await
Area: Async & Await
labels
Mar 7, 2019
@csmoe what do you mean "not needed"? You changed the signature of the function. |
@jethrogb This compiles for me on on playground. |
@Matthias247 that's strange. The playground appears broken currently, but when I compile that locally with the latest nightly I still get the original error. |
cc @cramertj |
Yes, this is a bug I'm currently working on fixing. |
nikomatsakis
added
the
AsyncAwait-Polish
Async-await issues that are part of the "polish" area
label
Mar 12, 2019
bors
added a commit
that referenced
this issue
Apr 2, 2019
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
Centril
added a commit
to Centril/rust
that referenced
this issue
Apr 2, 2019
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 rust-lang#59001 Fix rust-lang#58885 Fix rust-lang#55324 Fix rust-lang#54974 Progress on rust-lang#56238 r? @nikomatsakis
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
A-async-await
Area: Async & Await
AsyncAwait-Polish
Async-await issues that are part of the "polish" area
C-bug
Category: This is a bug.
T-compiler
Relevant to the compiler team, which will review and decide on the PR/issue.
I think this is a bug? The RFC says
so I'd expect the function to return
impl Future<...> + 'a
.The text was updated successfully, but these errors were encountered: