Skip to content

new lint: match_like_matches_macro - #5769

Merged
bors merged 3 commits into
rust-lang:masterfrom
robojumper:match_like_matches_macro
Jul 10, 2020
Merged

new lint: match_like_matches_macro#5769
bors merged 3 commits into
rust-lang:masterfrom
robojumper:match_like_matches_macro

Conversation

@robojumper

Copy link
Copy Markdown
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
Copy Markdown

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

bors commented Jul 6, 2020

Copy link
Copy Markdown
Contributor

☔ 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
Copy Markdown
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
Copy Markdown
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.

Comment thread clippy_lints/src/assign_ops.rs Outdated
@robojumper
robojumper force-pushed the match_like_matches_macro branch from cc32305 to 37d75da Compare July 8, 2020 16:41
@phansch

phansch commented Jul 10, 2020

Copy link
Copy Markdown
Contributor

LGTM, thanks!

@bors r+

@bors

bors commented Jul 10, 2020

Copy link
Copy Markdown
Contributor

📌 Commit 37d75da has been approved by phansch

@bors

bors commented Jul 10, 2020

Copy link
Copy Markdown
Contributor

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

@bors

bors commented Jul 10, 2020

Copy link
Copy Markdown
Contributor

☀️ 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