Skip to content

Conversation

oxalica
Copy link
Contributor

@oxalica oxalica commented Jul 9, 2019

fixes #3988

changelog: Ignore generated fresh lifetimes in elision check.

HELP: It seems tests/ui are compiled under edition 2015, and I don't know how to add tests for this properly.

Here is the test input it had already passed:

#![feature(async_await)]
#![allow(dead_code)]

async fn sink1<'a>(_: &'a str) {} // lint
async fn sink1_elided(_: &str) {} // ok

async fn one_to_one<'a>(s: &'a str) -> &'a str { s } // lint
async fn one_to_one_elided(s: &str) -> &str { s } // ok
async fn all_to_one<'a>(a: &'a str, _b: &'a str) -> &'a str { a } // ok
// async fn unrelated(_: &str, _: &str) {} // Not allowed in async fn

// #3988
struct Foo;
impl Foo {
    pub async fn foo(&mut self) {} // ok
}

// rust-lang/rust#61115
async fn print(s: &str) { // ok
    println!("{}", s);
}

fn main() {}

@flip1995 flip1995 added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties label Jul 10, 2019
@phansch
Copy link
Contributor

phansch commented Jul 15, 2019

HELP: It seems tests/ui are compiled under edition 2015, and I don't know how to add tests for this properly.

I think you can add the following to the top of the UI test file to use the 2018 edition:

// compile-flags: --edition 2018

@phansch phansch added S-waiting-on-author Status: This is awaiting some action from the author. (Use `@rustbot ready` to update this status) and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties labels Jul 17, 2019
@oxalica
Copy link
Contributor Author

oxalica commented Jul 18, 2019

I think you can add the following to the top of the UI test file to use the 2018 edition:

// compile-flags: --edition 2018

Thanks, it works. Tests are now added.

@flip1995
Copy link
Member

Hmm, now util/dev fmt can't deal with the 2018 edition 🤔

@flip1995 flip1995 added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties and removed S-waiting-on-author Status: This is awaiting some action from the author. (Use `@rustbot ready` to update this status) labels Jul 19, 2019
@flip1995
Copy link
Member

Adding edition = "2018" here


should solve this.

@flip1995 flip1995 added S-waiting-on-author Status: This is awaiting some action from the author. (Use `@rustbot ready` to update this status) and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties labels Jul 19, 2019
@oxalica
Copy link
Contributor Author

oxalica commented Jul 19, 2019

Adding edition = "2018" here

should solve this.

Setting global fmt edition will cause some tests failed.
Is there any way to skip fmt on one file? #[rustfmt::skip] not works here.

@flip1995
Copy link
Member

I think using Edition = 2018 and fixing the falling test would be the best thing to do here.

@flip1995
Copy link
Member

Thanks! You fixed the first T-async-await issue 🎉

@bors r+

@bors
Copy link
Contributor

bors commented Jul 23, 2019

📌 Commit 5265ab8 has been approved by flip1995

@bors
Copy link
Contributor

bors commented Jul 23, 2019

⌛ Testing commit 5265ab8 with merge d71e9c4...

bors added a commit that referenced this pull request Jul 23, 2019
Ignore generated fresh lifetimes in elision check

<!--
Thank you for making Clippy better!

We're collecting our changelog from pull request descriptions.
If your PR only updates to the latest nightly, you can leave the
`changelog` entry as `none`. Otherwise, please write a short comment
explaining your change.

If your PR fixes an issue, you can add "fixes #issue_number" into this
PR description. This way the issue will be automatically closed when
your PR is merged.

If you added a new lint, here's a checklist for things that will be
checked during review or continuous integration.

- [ ] Followed [lint naming conventions][lint_naming]
- [ ] Added passing UI tests (including committed `.stderr` file)
- [ ] `cargo test` passes locally
- [ ] Executed `util/dev update_lints`
- [ ] Added lint documentation
- [ ] Run `cargo fmt`

Note that you can skip the above if you are just opening a WIP PR in
order to get feedback.

Delete this line and everything above before opening your PR -->

fixes #3988

changelog: Ignore generated fresh lifetimes in elision check.

**HELP**: It seems `tests/ui` are compiled under edition 2015, and I don't know how to add tests for this properly.

Here is the test input it had already passed:
```rust
#![feature(async_await)]
#![allow(dead_code)]

async fn sink1<'a>(_: &'a str) {} // lint
async fn sink1_elided(_: &str) {} // ok

async fn one_to_one<'a>(s: &'a str) -> &'a str { s } // lint
async fn one_to_one_elided(s: &str) -> &str { s } // ok
async fn all_to_one<'a>(a: &'a str, _b: &'a str) -> &'a str { a } // ok
// async fn unrelated(_: &str, _: &str) {} // Not allowed in async fn

// #3988
struct Foo;
impl Foo {
    pub async fn foo(&mut self) {} // ok
}

// rust-lang/rust#61115
async fn print(s: &str) { // ok
    println!("{}", s);
}

fn main() {}

```
@bors
Copy link
Contributor

bors commented Jul 23, 2019

☀️ Test successful - checks-travis, status-appveyor
Approved by: flip1995
Pushing d71e9c4 to master...

@bors bors merged commit 5265ab8 into rust-lang:master Jul 23, 2019
@oxalica oxalica deleted the fix/async_fn_lifetime branch July 23, 2019 12:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-author Status: This is awaiting some action from the author. (Use `@rustbot ready` to update this status)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

needless_lifetimes: false positive with async fn
4 participants