Skip to content

Commit 387d756

Browse files
committed
Auto merge of #11666 - c410-f3r:dsadasewqasdsa, r=flip1995
Document conflicting lints Documents the outcome described in #11662 so that the situation can be avoided in the future by other individuals. changelog: none
2 parents ae52ee5 + 8c0870d commit 387d756

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

book/src/development/adding_lints.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ because that's clearly a non-descriptive name.
3030
- [Documentation](#documentation)
3131
- [Running rustfmt](#running-rustfmt)
3232
- [Debugging](#debugging)
33+
- [Conflicting lints](#conflicting-lints)
3334
- [PR Checklist](#pr-checklist)
3435
- [Adding configuration to a lint](#adding-configuration-to-a-lint)
3536
- [Cheat Sheet](#cheat-sheet)
@@ -612,6 +613,24 @@ output in the `stdout` part.
612613

613614
[`dbg!`]: https://doc.rust-lang.org/std/macro.dbg.html
614615

616+
## Conflicting lints
617+
618+
There are several lints that deal with the same pattern but suggest different approaches. In other words, some lints
619+
may suggest modifications that go in the opposite direction to what some other lints already propose for the same
620+
code, creating conflicting diagnostics.
621+
622+
When you are creating a lint that ends up in this scenario, the following tips should be encouraged to guide
623+
classification:
624+
625+
* The only case where they should be in the same category is if that category is `restriction`. For example,
626+
`semicolon_inside_block` and `semicolon_outside_block`.
627+
* For all the other cases, they should be in different categories with different levels of allowance. For example,
628+
`implicit_return` (restriction, allow) and `needless_return` (style, warn).
629+
630+
For lints that are in different categories, it is also recommended that at least one of them should be in the
631+
`restriction` category. The reason for this is that the `restriction` group is the only group where we don't
632+
recommend to enable the entire set, but cherry pick lints out of.
633+
615634
## PR Checklist
616635

617636
Before submitting your PR make sure you followed all the basic requirements:

0 commit comments

Comments
 (0)