Skip to content
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

new lint: match_like_matches_macro #5769

Merged
merged 3 commits into from
Jul 10, 2020

Conversation

robojumper
Copy link
Contributor

Suggests using the matches! macro from std where appropriate.

redundant_pattern_matching has been moved into the matches pass to allow suppressing the suggestion where is_some and friends are a better replacement.

changelog: new lint: match_like_matches_macro

@rust-highfive
Copy link

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @phansch (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties label Jul 5, 2020
@robojumper robojumper force-pushed the match_like_matches_macro branch 3 times, most recently from 702d822 to 6639659 Compare July 5, 2020 21:28
@bors
Copy link
Contributor

bors commented Jul 6, 2020

☔ The latest upstream changes (presumably #5301) made this pull request unmergeable. Please resolve the merge conflicts.

@robojumper robojumper force-pushed the match_like_matches_macro branch from 6639659 to 1740dda Compare July 6, 2020 16:36
@camsteffen
Copy link
Contributor

Should this also include cases like the following?

match o {
    Some(1) => 'y',
    _ => 'n',
}

to

if matches!(o, Some(1)) { 'y' } else { 'n' }

@robojumper
Copy link
Contributor Author

@camsteffen The transformation you describe first replaces match with if let (which is a more aggressive form of the currently already pedantic-allow single_match_else lint) and then replaces the if let header with if matches!.

I think that transformation should not be part of this lint, as the matches! macro specifically shines when it allows the match arms / block bodies (only containing only true and false) to be omitted and replaces the entire expression. That's also why I suggested this lint be in the style group and warn by default.

@robojumper robojumper force-pushed the match_like_matches_macro branch from cc32305 to 37d75da Compare July 8, 2020 16:41
@phansch
Copy link
Member

phansch commented Jul 10, 2020

LGTM, thanks!

@bors r+

@bors
Copy link
Contributor

bors commented Jul 10, 2020

📌 Commit 37d75da has been approved by phansch

@bors
Copy link
Contributor

bors commented Jul 10, 2020

⌛ Testing commit 37d75da with merge 7d611d9...

@bors
Copy link
Contributor

bors commented Jul 10, 2020

☀️ Test successful - checks-action_dev_test, checks-action_remark_test, checks-action_test
Approved by: phansch
Pushing 7d611d9 to master...

@bors bors merged commit 7d611d9 into rust-lang:master Jul 10, 2020
@robojumper robojumper deleted the match_like_matches_macro branch July 10, 2020 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants