]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoAuto merge of #6659 - phlip9:let_and_return_fix, r=phansch
bors [Tue, 2 Feb 2021 15:04:35 +0000 (15:04 +0000)]
Auto merge of #6659 - phlip9:let_and_return_fix, r=phansch

Fix let_and_return false positive

The issue:

link: https://play.rust-lang.org/?edition=2018&gist=12cb5d1e7527f8c37743b87fc4a53748
Run the above with clippy to see the following warning:

```
warning: returning the result of a `let` binding from a block
  --> src/main.rs:24:5
   |
23 |     let value = Foo::new(&x).value();
   |     --------------------------------- unnecessary `let` binding
24 |     value
   |     ^^^^^
   |
   = note: `#[warn(clippy::let_and_return)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
help: return the expression directly
   |
23 |
24 |     Foo::new(&x).value()
   |
```

Implementing the suggested fix, removing the temporary let binding,
yields a compiler error:

```
error[E0597]: `x` does not live long enough
  --> src/main.rs:23:14
   |
23 |     Foo::new(&x).value()
   |     ---------^^-
   |     |        |
   |     |        borrowed value does not live long enough
   |     a temporary with access to the borrow is created here ...
24 | }
   | -
   | |
   | `x` dropped here while still borrowed
   | ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `Foo`
   |
   = note: the temporary is part of an expression at the end of a block;
           consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
   |
23 |     let x = Foo::new(&x).value(); x
   |     ^^^^^^^                     ^^^
```

The fix:

Of course, clippy looks like it should already handle this edge case;
however, it appears `utils::fn_def_id` is not returning a `DefId` for
`Foo::new`. Changing the `qpath_res` lookup to use the child Path
`hir_id` instead of the parent Call `hir_id` fixes the issue.

changelog: none

3 years agoAuto merge of #6661 - Manishearth:exhaustive-fix, r=flip1995
bors [Tue, 2 Feb 2021 07:59:39 +0000 (07:59 +0000)]
Auto merge of #6661 - Manishearth:exhaustive-fix, r=flip1995

exhaustive_structs: don't trigger for structs with private fields

changelog: Restrict `exhaustive_structs` to structs with all-public
fields

3 years agoFix test formatting
Philipp Krones [Tue, 2 Feb 2021 07:59:23 +0000 (08:59 +0100)]
Fix test formatting

3 years agoexhaustive_structs: don't trigger for structs with private fields
Manish Goregaokar [Tue, 2 Feb 2021 02:38:43 +0000 (18:38 -0800)]
exhaustive_structs: don't trigger for structs with private fields

3 years agoAuto merge of #6603 - ThibsG:MatchOverlappingArm5986, r=flip1995
bors [Sun, 31 Jan 2021 15:09:55 +0000 (15:09 +0000)]
Auto merge of #6603 - ThibsG:MatchOverlappingArm5986, r=flip1995

Do not lint when range is completely included into another one

This fix has been developed following this [comment](https://github.com/rust-lang/rust-clippy/issues/5986#issuecomment-703313548).
So this will be linted:
```
|----------|
        |-----------|
```
Now this won't be linted:
```
              |---|
|--------------------|
```
and this will still lint:
```
|--------|
|--------------|
```

Fixes: #5986
changelog: Fix FPs in match_overlapping_arm, when first arm is completely included in second arm

3 years agoAuto merge of #6656 - phansch:command-failed-print-stderr, r=flip1995
bors [Sun, 31 Jan 2021 14:56:53 +0000 (14:56 +0000)]
Auto merge of #6656 - phansch:command-failed-print-stderr, r=flip1995

clippy_dev: Pass stderr to CommandFailed

This improves error reporting when running `rustfmt` fails for some reason, as seen [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/257328-clippy/topic/Issue.20with.20rustfmt). It will now include the stderr output in the `CliError::CommandFailed` error.

changelog: none

3 years agoclippy_dev: Pass stderr to CommandFailed
Philipp Hansch [Sun, 31 Jan 2021 10:17:37 +0000 (11:17 +0100)]
clippy_dev: Pass stderr to CommandFailed

3 years agoAuto merge of #6654 - flip1995:no_lazy_static_regex, r=flip1995
bors [Sat, 30 Jan 2021 16:49:45 +0000 (16:49 +0000)]
Auto merge of #6654 - flip1995:no_lazy_static_regex, r=flip1995

No lazy static regex

r? `@llogiq`

#6500

regex is unnecessary for this lint (https://github.com/rust-lang/rust-clippy/pull/6500#discussion_r558555071)
lazy_static is unnecessary. The std lazy feature should be  used instead.

changelog: none

3 years agoRemove unknown_clippy_lints allow attribute
flip1995 [Sat, 30 Jan 2021 16:43:20 +0000 (17:43 +0100)]
Remove unknown_clippy_lints allow attribute

3 years agoGet rid of regex and lazy_static dependencies
flip1995 [Sat, 30 Jan 2021 16:43:00 +0000 (17:43 +0100)]
Get rid of regex and lazy_static dependencies

3 years agoAuto merge of #6653 - flip1995:rustup, r=flip1995
bors [Sat, 30 Jan 2021 14:53:30 +0000 (14:53 +0000)]
Auto merge of #6653 - flip1995:rustup, r=flip1995

Rustup

changelog: Deprecate `unknown_clippy_lints` (integrated in `unknown_lints`)

r? `@ghost`

3 years agoBump nightly version -> 2021-01-30
flip1995 [Sat, 30 Jan 2021 14:52:02 +0000 (15:52 +0100)]
Bump nightly version -> 2021-01-30

3 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Sat, 30 Jan 2021 14:51:16 +0000 (15:51 +0100)]
Merge remote-tracking branch 'upstream/master' into rustup

3 years agoFix let_and_return false positive
Philip Hayes [Sat, 30 Jan 2021 06:17:18 +0000 (22:17 -0800)]
Fix let_and_return false positive

The issue:

link: https://play.rust-lang.org/?edition=2018&gist=12cb5d1e7527f8c37743b87fc4a53748
Run the above with clippy to see the following warning:

```
warning: returning the result of a `let` binding from a block
  --> src/main.rs:24:5
   |
23 |     let value = Foo::new(&x).value();
   |     --------------------------------- unnecessary `let` binding
24 |     value
   |     ^^^^^
   |
   = note: `#[warn(clippy::let_and_return)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
help: return the expression directly
   |
23 |
24 |     Foo::new(&x).value()
   |
```

Implementing the suggested fix, removing the temporary let binding,
yields a compiler error:

```
error[E0597]: `x` does not live long enough
  --> src/main.rs:23:14
   |
23 |     Foo::new(&x).value()
   |     ---------^^-
   |     |        |
   |     |        borrowed value does not live long enough
   |     a temporary with access to the borrow is created here ...
24 | }
   | -
   | |
   | `x` dropped here while still borrowed
   | ... and the borrow might be used here, when that temporary is dropped and runs the `Drop` code for type `Foo`
   |
   = note: the temporary is part of an expression at the end of a block;
           consider forcing this temporary to be dropped sooner, before the block's local variables are dropped
help: for example, you could save the expression's value in a new local variable `x` and then make `x` be the expression at the end of the block
   |
23 |     let x = Foo::new(&x).value(); x
   |     ^^^^^^^                     ^^^
```

The fix:

Of course, clippy looks like it should already handle this edge case;
however, it appears `utils::fn_def_id` is not returning a `DefId` for
`Foo::new`. Changing the `qpath_res` lookup to use the child Path
`hir_id` instead of the parent Call `hir_id` fixes the issue.

3 years agoRollup merge of #81176 - camsteffen:qpath-res, r=oli-obk
Yuki Okushi [Fri, 29 Jan 2021 00:17:32 +0000 (09:17 +0900)]
Rollup merge of #81176 - camsteffen:qpath-res, r=oli-obk

Improve safety of `LateContext::qpath_res`

This is my first rustc code change, inspired by hacking on clippy!

The first change is to clear cached `TypeckResults` from `LateContext` when visiting a nested item. I took a hint from [here](https://github.com/rust-lang/rust/blob/5e91c4ecc09312d8b63d250a432b0f3ef83f1df7/compiler/rustc_privacy/src/lib.rs#L1300).

Clippy has a `qpath_res` util function to avoid a possible ICE in `LateContext::qpath_res`. But the docs of `LateContext::qpath_res` promise no ICE. So this updates the `LateContext` method to keep its promises, and removes the util function.

Related: rust-lang/rust-clippy#4545

CC ````````````@eddyb```````````` since you've done related work
CC ````````````@flip1995```````````` FYI

3 years agoRollup merge of #81277 - flip1995:from_diag_items, r=matthewjasper
Yuki Okushi [Thu, 28 Jan 2021 06:09:08 +0000 (15:09 +0900)]
Rollup merge of #81277 - flip1995:from_diag_items, r=matthewjasper

Make more traits of the From/Into family diagnostic items

Following traits are now diagnostic items:
- `From` (unchanged)
- `Into`
- `TryFrom`
- `TryInto`

This also adds symbols for those items:
- `into_trait`
- `try_from_trait`
- `try_into_trait`

Related: https://github.com/rust-lang/rust-clippy/pull/6620#discussion_r562482587

3 years agoRollup merge of #79951 - LeSeulArtichaut:ty-ir, r=nikomatsakis
Yuki Okushi [Thu, 28 Jan 2021 06:09:02 +0000 (15:09 +0900)]
Rollup merge of #79951 - LeSeulArtichaut:ty-ir, r=nikomatsakis

Refractor a few more types to `rustc_type_ir`

In the continuation of #79169, ~~blocked on that PR~~.

This PR:
 - moves `IntVarValue`, `FloatVarValue`, `InferTy` (and friends) and `Variance`
 - creates the `IntTy`, `UintTy` and `FloatTy` enums in `rustc_type_ir`, based on their `ast` and `chalk_ir` equilavents, and uses them for types in the rest of the compiler.

~~I will split up that commit to make this easier to review and to have a better commit history.~~
EDIT: done, I split the PR in commits of 200-ish lines each

r? `````@nikomatsakis````` cc `````@jackh726`````

3 years agoAuto merge of #6645 - camsteffen:syntax-highlighting, r=phansch
bors [Wed, 27 Jan 2021 06:47:07 +0000 (06:47 +0000)]
Auto merge of #6645 - camsteffen:syntax-highlighting, r=phansch

Fix website syntax highlighting

changelog: none

Fix syntax highlighting on website when the docs contain ` ```rust,ignore`

3 years agoFix some website syntax highlighting
Cameron Steffen [Tue, 26 Jan 2021 23:38:37 +0000 (17:38 -0600)]
Fix some website syntax highlighting

3 years agoAuto merge of #6469 - matthiaskrgr:clippy_dev_crater, r=flip1995
bors [Tue, 26 Jan 2021 06:58:04 +0000 (06:58 +0000)]
Auto merge of #6469 - matthiaskrgr:clippy_dev_crater, r=flip1995

add "cargo dev crater" to run clippy on a fixed set of crates and diff the lint warnings

`cargo dev crater` now does the following:
build clippy in debug mode
for a fixed set of crates:
 download and extract the crate
 run compiled clippy on the crate
 dump the warnings into a file that is inside the repo

We can then do a "git diff" and see what effects our clippy changes had on a tiny fraction of the rust ecosystem and can see when an change unexpectedly added or silenced a lot of warnings.

Checking all the crates took less than 5 minutes on my system.

Should help with https://github.com/rust-lang/rust-clippy/issues/6429

---

*Please write a short comment explaining your change (or "none" for internal only changes)*
changelog: extend cargo dev to run clippy against a fixed set of crates and compare warnings

3 years agoAuto merge of #6617 - Manishearth:exhaustive_enums, r=camsteffen
bors [Mon, 25 Jan 2021 23:06:39 +0000 (23:06 +0000)]
Auto merge of #6617 - Manishearth:exhaustive_enums, r=camsteffen

New lint: exhaustive_enums, exhaustive_structs

Fixes #6616

changelog: Added restriction lint: `exhaustive_enums`, `exhaustive_structs`

3 years agoAdd test with attrs
Manish Goregaokar [Mon, 25 Jan 2021 22:39:03 +0000 (14:39 -0800)]
Add test with attrs

3 years agoBetter suggestion span
Manish Goregaokar [Mon, 25 Jan 2021 22:35:57 +0000 (14:35 -0800)]
Better suggestion span

3 years agoAuto merge of #6630 - xFrednet:0000-configuration-documentation, r=llogiq
bors [Mon, 25 Jan 2021 00:25:31 +0000 (00:25 +0000)]
Auto merge of #6630 - xFrednet:0000-configuration-documentation, r=llogiq

Documentation for adding configuration to a lint and common abbreviations

This PR adds some commonly used abbreviations to the `basis.md` file and a guide on how to implement a configuration value for a lint.

* [Rendered `/doc/basics.md` (Abbreviation list)](https://github.com/xFrednet/rust-clippy/blob/0000-configuration-documentation/doc/basics.md#common-abbreviations)
* [Rendered `/doc/adding_lints.md` (Configuration value guide)](https://github.com/xFrednet/rust-clippy/blob/0000-configuration-documentation/doc/adding_lints.md#adding-configuration-to-a-lint)

I'm not sure if the guide is written in the best way. Style suggestions are appreciated. :upside_down_face:

 ---

Again a big **thank you** for everyone who helped to collect the abbreviation list over on [zulip]. I had a lot of fun, and it was also very informative. Keep up the good work :upside_down_face:

[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/257328-clippy/topic/Common.20abbreviations.20in.20basics.2Emd/near/223548065
---

changelog: none

3 years agoAdded documentation for adding a configuration to lints
xFrednet [Fri, 22 Jan 2021 18:04:28 +0000 (19:04 +0100)]
Added documentation for adding a configuration to lints

* Fixed some spelling

3 years agoAdd more tests for `match_overlapping_arm` lint
ThibsG [Sun, 24 Jan 2021 11:28:59 +0000 (12:28 +0100)]
Add more tests for `match_overlapping_arm` lint

3 years agolintcheck: fix paths in the logs
Matthias Krüger [Sat, 23 Jan 2021 00:09:51 +0000 (01:09 +0100)]
lintcheck: fix paths in the logs

3 years agoupdate lintcheck-logs
Matthias Krüger [Sat, 23 Jan 2021 00:08:48 +0000 (01:08 +0100)]
update lintcheck-logs

3 years agorename cargo dev crater to cargo dev lintcheck
Matthias Krüger [Fri, 22 Jan 2021 23:25:29 +0000 (00:25 +0100)]
rename cargo dev crater to cargo dev lintcheck

3 years agoclippy dev crater: address more review commetns
Matthias Krüger [Tue, 29 Dec 2020 15:18:31 +0000 (16:18 +0100)]
clippy dev crater: address more review commetns

make serde a feature-dep
save clippy version in the crater log

3 years agoadd shortcut "dev-crater" command to build and run "cargo dev crater"
Matthias Krüger [Sun, 27 Dec 2020 15:56:05 +0000 (16:56 +0100)]
add shortcut "dev-crater" command to build and run "cargo dev crater"

3 years agocargo dev crater: throw an error if we can't find our specified crate in the .toml...
Matthias Krüger [Sun, 27 Dec 2020 15:20:32 +0000 (16:20 +0100)]
cargo dev crater: throw an error if we can't find our specified crate in the .toml list

3 years agoclippy dev crater: add option to only check a single one of the listed crates with...
Matthias Krüger [Sun, 27 Dec 2020 15:13:42 +0000 (16:13 +0100)]
clippy dev crater: add option to only check a single one of the listed crates with  --only crate

3 years agomake stats stable
Matthias Krüger [Sun, 27 Dec 2020 14:44:45 +0000 (15:44 +0100)]
make stats stable

3 years agocargo dev crater: gather and save lint statistics (how often a lint triggered)
Matthias Krüger [Wed, 23 Dec 2020 14:59:16 +0000 (15:59 +0100)]
cargo dev crater: gather and save lint statistics (how often a lint triggered)

3 years agocargo dev crater: refactor to get a list of all ClippyWarnings
Matthias Krüger [Wed, 23 Dec 2020 14:31:18 +0000 (15:31 +0100)]
cargo dev crater: refactor to get a list of all ClippyWarnings

3 years agoclippy dev crater: use and parse clippy messages as json message, to get the lint...
Matthias Krüger [Wed, 23 Dec 2020 14:00:51 +0000 (15:00 +0100)]
clippy dev crater: use and parse clippy messages as json message, to get the lint name of a warning

3 years agoremove duplicate code and other cleanup
Matthias Krüger [Wed, 23 Dec 2020 12:03:19 +0000 (13:03 +0100)]
remove duplicate code and other cleanup

3 years agorename symbols: krate -> crate
Matthias Krüger [Wed, 23 Dec 2020 12:02:02 +0000 (13:02 +0100)]
rename symbols: krate -> crate

3 years agocargo dev crater: support multiple versions per crate
Matthias Krüger [Wed, 23 Dec 2020 00:21:31 +0000 (01:21 +0100)]
cargo dev crater: support multiple versions per crate

3 years agouse a .toml file to list the crates we want to check
Matthias Krüger [Tue, 22 Dec 2020 12:07:55 +0000 (13:07 +0100)]
use a .toml file to list the crates we want to check

Also sort lint results alphabetically.

3 years agoallow clippy::filter_map
Matthias Krüger [Fri, 18 Dec 2020 21:53:45 +0000 (22:53 +0100)]
allow clippy::filter_map

3 years agocargo dev crater: share target dir between clippy runs, enable pedantic and cargo...
Matthias Krüger [Fri, 18 Dec 2020 21:08:18 +0000 (22:08 +0100)]
cargo dev crater:  share target dir between clippy runs, enable pedantic and cargo lints, ignore tokei for now.

3 years agocargo dev crater: add more crates to be checked
Matthias Krüger [Fri, 18 Dec 2020 20:50:06 +0000 (21:50 +0100)]
cargo dev crater: add more crates to be checked

3 years agoadd the log file
Matthias Krüger [Fri, 18 Dec 2020 20:27:17 +0000 (21:27 +0100)]
add the log file

3 years agocargo dev crater: save all warnings into a file
Matthias Krüger [Fri, 18 Dec 2020 20:26:41 +0000 (21:26 +0100)]
cargo dev crater: save all warnings into a file

3 years agocargo dev crater: cleanup, don't re-download and reextract crates on every run
Matthias Krüger [Fri, 18 Dec 2020 19:58:46 +0000 (20:58 +0100)]
cargo dev crater: cleanup, don't re-download and reextract crates on every run

3 years agoprint all clippy warnings in the end
Matthias Krüger [Fri, 18 Dec 2020 17:34:09 +0000 (18:34 +0100)]
print all clippy warnings in the end

3 years agocargo clippy dev: collecting one-line clippy warnings works now
Matthias Krüger [Fri, 18 Dec 2020 17:01:45 +0000 (18:01 +0100)]
cargo clippy dev: collecting one-line clippy warnings works now

3 years agoclippy cargo dev: fix checking of crates
Matthias Krüger [Fri, 18 Dec 2020 16:25:07 +0000 (17:25 +0100)]
clippy cargo dev: fix checking of crates

3 years agocargo clippy dev: fix extraction of downloaded crates
Matthias Krüger [Fri, 18 Dec 2020 15:53:18 +0000 (16:53 +0100)]
cargo clippy dev: fix extraction of downloaded crates

3 years agocargo dev crater: fixes and debug prints
Matthias Krüger [Fri, 18 Dec 2020 15:17:53 +0000 (16:17 +0100)]
cargo dev crater: fixes and debug prints

3 years agocrater: hook into main.rs
Matthias Krüger [Fri, 18 Dec 2020 13:28:59 +0000 (14:28 +0100)]
crater: hook into main.rs

3 years agocargo dev crater: work on downloading and extracting crate sources
Matthias Krüger [Fri, 18 Dec 2020 13:14:15 +0000 (14:14 +0100)]
cargo dev crater: work on downloading and extracting crate sources

3 years agocargo dev crater: lay out the base plan
Matthias Krüger [Fri, 18 Dec 2020 12:21:13 +0000 (13:21 +0100)]
cargo dev crater: lay out the base plan

3 years agoAuto merge of #6403 - camsteffen:similar-names-underscore, r=Manishearth
bors [Fri, 22 Jan 2021 23:44:12 +0000 (23:44 +0000)]
Auto merge of #6403 - camsteffen:similar-names-underscore, r=Manishearth

Similar names ignore underscore prefixed names

changelog: Ignore underscore-prefixed names for similar_names

IMO, this lint is not very helpful for underscore-prefixed variables. Usually they are unused or are just there to ignore part of a destructuring.

3 years agoAuto merge of #6619 - camsteffen:collapsible-match, r=camsteffen
bors [Fri, 22 Jan 2021 22:45:43 +0000 (22:45 +0000)]
Auto merge of #6619 - camsteffen:collapsible-match, r=camsteffen

Improve collapsible_match

changelog: Fix collapsible_match false negatives

Allow `&` and/or `*` on the binding and make sure the type still matches.

3 years agoFix dogfood
Cameron Steffen [Fri, 22 Jan 2021 01:25:22 +0000 (19:25 -0600)]
Fix dogfood

3 years agoEnhance collapsible_match for adjusted bindings
Cameron Steffen [Fri, 22 Jan 2021 01:21:12 +0000 (19:21 -0600)]
Enhance collapsible_match for adjusted bindings

3 years agoAuto merge of #6591 - camsteffen:manual-filter-map, r=llogiq
bors [Fri, 22 Jan 2021 22:28:41 +0000 (22:28 +0000)]
Auto merge of #6591 - camsteffen:manual-filter-map, r=llogiq

`manual_filter_map` and `manual_find_map`

changelog: Add `manual_filter_map` and replace `find_map` with `manual_find_map`

Replaces #6453

Fixes #3188
Fixes #4193

~Depends on #6567 (to fix an internal lint false positive)~

This replaces `filter_map` and `find_map` with `manual_filter_map` and `manual_find_map` respectively. However, `filter_map` is left in place since it is used for a variety of other cases. See discussion in #6453.

3 years agoClean up suggestion span; clarify help message
Manish Goregaokar [Fri, 22 Jan 2021 20:08:46 +0000 (12:08 -0800)]
Clean up suggestion span; clarify help message

3 years agoFix indentation of suggestion
Manish Goregaokar [Thu, 21 Jan 2021 22:00:25 +0000 (14:00 -0800)]
Fix indentation of suggestion

3 years agoAdd exhaustive_structs lint
Manish Goregaokar [Thu, 21 Jan 2021 21:41:57 +0000 (13:41 -0800)]
Add exhaustive_structs lint

3 years agoMake more traits of the From/Into family diagnostic items
flip1995 [Fri, 22 Jan 2021 17:07:00 +0000 (18:07 +0100)]
Make more traits of the From/Into family diagnostic items

Following traits are now diagnostic items:
- `From` (unchanged)
- `Into`
- `TryFrom`
- `TryInto`

This also adds symbols for those items:
- `into_trait`
- `try_from_trait`
- `try_into_trait`

3 years agoRollup merge of #81236 - estebank:everybody-loop-now, r=oli-obk
Mara Bos [Fri, 22 Jan 2021 14:30:19 +0000 (14:30 +0000)]
Rollup merge of #81236 - estebank:everybody-loop-now, r=oli-obk

Gracefully handle loop labels missing leading `'` in different positions

Fix #81192.

* Account for labels when suggesting `loop` instead of `while true`
* Suggest `'a` when given `a` only when appropriate
* Add loop head span to hir
* Tweak error for invalid `break expr`
* Add more misspelled label tests
* Avoid emitting redundant "unused label" lint
* Parse loop labels missing a leading `'`

Each commit can be reviewed in isolation.

3 years agoAuto merge of #6621 - giraffate:improve_the_example_in_ref_in_deref, r=flip1995
bors [Fri, 22 Jan 2021 14:04:31 +0000 (14:04 +0000)]
Auto merge of #6621 - giraffate:improve_the_example_in_ref_in_deref, r=flip1995

Improve the example in `ref_in_deref`

Add a suggested code to the example in doc

changelog: none

3 years agoImprove the example in `ref_in_deref`
Takayuki Nakata [Fri, 22 Jan 2021 13:51:06 +0000 (22:51 +0900)]
Improve the example in `ref_in_deref`

3 years agoAuto merge of #81135 - jyn514:no-backticks, r=flip1995
bors [Fri, 22 Jan 2021 06:13:19 +0000 (06:13 +0000)]
Auto merge of #81135 - jyn514:no-backticks, r=flip1995

Fix formatting for removed lints

- Don't add backticks for the reason a lint was removed. This is almost
never a code block, and when it is the backticks should be in the reason
itself.
- Don't assume clippy is the only tool that needs to be checked for
backwards compatibility

I split this out of https://github.com/rust-lang/rust/pull/80527/ because it kept causing tests to fail, and it's a good change to have anyway.

r? `@flip1995`

3 years agoFix clippy and comment
Esteban Küber [Fri, 22 Jan 2021 00:48:17 +0000 (16:48 -0800)]
Fix clippy and comment

3 years agoAdd loop head span to hir
Esteban Küber [Thu, 21 Jan 2021 01:15:08 +0000 (17:15 -0800)]
Add loop head span to hir

3 years agoDeprecate find_map lint
Cameron Steffen [Thu, 14 Jan 2021 22:47:22 +0000 (16:47 -0600)]
Deprecate find_map lint

3 years agoRemove unneeded allow's
Cameron Steffen [Mon, 14 Dec 2020 20:03:11 +0000 (14:03 -0600)]
Remove unneeded allow's

3 years agoReplace find_map with manual_find_map
Cameron Steffen [Thu, 14 Jan 2021 22:36:36 +0000 (16:36 -0600)]
Replace find_map with manual_find_map

3 years agoSplit filter_map into manual_filter_map
Cameron Steffen [Fri, 1 Jan 2021 19:00:09 +0000 (13:00 -0600)]
Split filter_map into manual_filter_map

3 years agoAdd expr_fallback to SpanlessEq
Cameron Steffen [Fri, 1 Jan 2021 19:00:44 +0000 (13:00 -0600)]
Add expr_fallback to SpanlessEq

3 years agoFix comment
Cameron Steffen [Mon, 14 Dec 2020 19:50:53 +0000 (13:50 -0600)]
Fix comment

3 years agoCheck if let guard in collapsible_match
Cameron Steffen [Fri, 22 Jan 2021 00:12:46 +0000 (18:12 -0600)]
Check if let guard in collapsible_match

3 years agoAdded documentation for common abbreviations
xFrednet [Thu, 21 Jan 2021 23:19:22 +0000 (00:19 +0100)]
Added documentation for common abbreviations

This list was created as a collaborative effort on Zulip and the [thread] is definitely worth a read as we had quite some fun. A big **THANK YOU** goes out to everyone who participated you make this project fun to work on!!!

The Zulip [thread]: https://rust-lang.zulipchat.com/#narrow/stream/257328-clippy/topic/Common.20abbreviations.20in.20basics.2Emd/near/223548065

3 years agoExhaustiveEnums -> ExhaustiveItems
Manish Goregaokar [Thu, 21 Jan 2021 21:36:18 +0000 (13:36 -0800)]
ExhaustiveEnums -> ExhaustiveItems

3 years agoMake exhaustive_enums only warn on exported items
Manish Goregaokar [Thu, 21 Jan 2021 21:34:44 +0000 (13:34 -0800)]
Make exhaustive_enums only warn on exported items

3 years agoMake exhaustive_enums a late pass
Manish Goregaokar [Thu, 21 Jan 2021 21:31:15 +0000 (13:31 -0800)]
Make exhaustive_enums a late pass

3 years agoNew lint: exhaustive_enums
Manish Goregaokar [Thu, 21 Jan 2021 20:48:30 +0000 (12:48 -0800)]
New lint: exhaustive_enums

3 years agoAuto merge of #6609 - giraffate:fix_wrong_suggestion_of_ref_in_deref, r=llogiq
bors [Thu, 21 Jan 2021 19:16:11 +0000 (19:16 +0000)]
Auto merge of #6609 - giraffate:fix_wrong_suggestion_of_ref_in_deref, r=llogiq

Fix a wrong suggestion of `ref_in_deref`

Fix #6358.

changelog: Fix a wrong suggestion of `ref_in_deref`

3 years agoAuto merge of #6605 - kawogi:doc-markdown, r=llogiq
bors [Thu, 21 Jan 2021 19:05:50 +0000 (19:05 +0000)]
Auto merge of #6605 - kawogi:doc-markdown, r=llogiq

Doc markdown

I added "WebGL" along the lines of the existing "OpenGL" to the whitelist of `doc_markdown` as I found this to be a pretty common term.

(this is a follow-up of the now closed https://github.com/rust-lang/rust-clippy/pull/6388)

changelog: Whitelist "WebGL" in `doc_markdown`.

3 years agoAuto merge of #6532 - matthiaskrgr:mlmm, r=llogiq
bors [Thu, 21 Jan 2021 18:34:55 +0000 (18:34 +0000)]
Auto merge of #6532 - matthiaskrgr:mlmm, r=llogiq

match_like_matches_macro: strip refs in suggestion

fixes #6503

changelog: match_like_matches_macro: strip refs in suggestion (#6503)

3 years agoAuto merge of #6408 - pro-grammer1:master, r=oli-obk
bors [Thu, 21 Jan 2021 14:23:25 +0000 (14:23 +0000)]
Auto merge of #6408 - pro-grammer1:master, r=oli-obk

Fix false positive in write_literal and print_literal (numeric literals)

changelog: No longer lint numeric literals in [`write_literal`] and [`print_literal`].

Fixes #6335

3 years agoAuto merge of #6611 - pastchick3:master, r=flip1995
bors [Thu, 21 Jan 2021 14:12:43 +0000 (14:12 +0000)]
Auto merge of #6611 - pastchick3:master, r=flip1995

Fix the reversed suggestion message of `stable_sort_primitive`.

Now Clippy emits `stable_sort_primitive` warning as follows:

```
warning: used sort instead of sort_unstable to sort primitive type `usize`
  --> src\asm.rs:41:13
   |
41 |             self.successors.sort();
   |             ^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.successors.sort_unstable()`
   |
   = note: `#[warn(clippy::stable_sort_primitive)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#stable_sort_primitive
```

I think the position of `sort` and `sort_unstable` in the first line should be reversed.

changelog: Fix the reversed suggestion message of `stable_sort_primitive`.

3 years agoImprove the suggestion message of `stable_sort_primitive`.
pastchick3 [Wed, 20 Jan 2021 12:05:25 +0000 (20:05 +0800)]
Improve the suggestion message of `stable_sort_primitive`.

3 years agoForce token collection to run when parsing nonterminals
Aaron Hill [Mon, 18 Jan 2021 21:47:37 +0000 (16:47 -0500)]
Force token collection to run when parsing nonterminals

Fixes #81007

Previously, we would fail to collect tokens in the proper place when
only builtin attributes were present. As a result, we would end up with
attribute tokens in the collected `TokenStream`, leading to duplication
when we attempted to prepend the attributes from the AST node.

We now explicitly track when token collection must be performed due to
nomterminal parsing.

3 years agoAuto merge of #6567 - camsteffen:path-to-res-enum, r=Manishearth
bors [Wed, 20 Jan 2021 21:35:11 +0000 (21:35 +0000)]
Auto merge of #6567 - camsteffen:path-to-res-enum, r=Manishearth

Fix path_to_res for enum inherent items

changelog: none

I tried to add `Option::is_some` to the paths but got a false positive from the invalid paths lint. Turns out the `path_to_res` function does not find inherent impls for enums. I fixed this and took the liberty to do some additional cleanup in the method.

3 years agoAuto merge of #6475 - matsujika:capitalized_acronyms, r=flip1995
bors [Wed, 20 Jan 2021 10:26:01 +0000 (10:26 +0000)]
Auto merge of #6475 - matsujika:capitalized_acronyms, r=flip1995

Add new lint `upper_case_acronyms`

Close #1335
I need some reviews on the English sentences because I feel they're messed up. ;)

changelog: Add new lint `upper_case_acronyms`

3 years agoRemove nightly-gate of `split_inclusive`
Hirochika Matsumoto [Wed, 20 Jan 2021 09:14:09 +0000 (18:14 +0900)]
Remove nightly-gate of `split_inclusive`

Co-authored-by: Philipp Krones <hello@philkrones.com>
3 years agoAdd new lint `upper_case_acronyms`
Hirochika Matsumoto [Sat, 19 Dec 2020 13:50:45 +0000 (22:50 +0900)]
Add new lint `upper_case_acronyms`

3 years agoRun `cargo dev new_lint`
Hirochika Matsumoto [Sat, 19 Dec 2020 09:57:11 +0000 (18:57 +0900)]
Run `cargo dev new_lint`

3 years agoAuto merge of #6578 - MarijnS95:size-in-element-count-divide-by-byte-size, r=flip1995
bors [Wed, 20 Jan 2021 07:24:34 +0000 (07:24 +0000)]
Auto merge of #6578 - MarijnS95:size-in-element-count-divide-by-byte-size, r=flip1995

size_of_in_element_count: Disable lint on division by byte-size

Fixes #6511

It is fairly common to divide some length in bytes by the byte-size of a single element before creating a `from_raw_parts` slice or similar operation. This lint would erroneously disallow such expressions.

Just in case, instead of simply disabling this lint in the RHS of a division, keep track of the inversion and enable it again on recursive division.

---

changelog: Do not trigger size_of_in_element_count when dividing by element size

3 years agosize_of_in_element_count: Disable lint on division by byte-size
Marijn Suijten [Tue, 12 Jan 2021 10:35:44 +0000 (11:35 +0100)]
size_of_in_element_count: Disable lint on division by byte-size

It is fairly common to divide some length in bytes by the byte-size of a
single element before creating a `from_raw_parts` slice or similar
operation. This lint would erroneously disallow such expressions.

Just in case, instead of simply disabling this lint in the RHS of a
division, keep track of the inversion and enable it again on recursive
division.

3 years agosize_of_in_element_count: Separate test file in expressions and functions
Marijn Suijten [Tue, 19 Jan 2021 18:20:26 +0000 (19:20 +0100)]
size_of_in_element_count: Separate test file in expressions and functions

An upcoming test case for new expresssion variants make the stderr file
go over 200 lines. Split this test case in two to have a clear
distinction between checking whether the lint is still applying on
all the functions with member counts as argument, versus validating
various member-count expressions that may or may not be invalid.

3 years agoFix a wrong suggestion of `ref_in_deref`
Takayuki Nakata [Tue, 19 Jan 2021 14:51:10 +0000 (23:51 +0900)]
Fix a wrong suggestion of `ref_in_deref`

3 years agoAuto merge of #6577 - nahuakang:inspect_then_for_each, r=flip1995
bors [Tue, 19 Jan 2021 13:12:39 +0000 (13:12 +0000)]
Auto merge of #6577 - nahuakang:inspect_then_for_each, r=flip1995

New Lint: inspect_then_for_each

**Work In Progress**

This PR addresses [Issue 5209](https://github.com/rust-lang/rust-clippy/issues/5209) and adds a new lint called `inspect_then_for_each`.

Current seek some guidance.

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

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

[lint_naming]: https://rust-lang.github.io/rfcs/0344-conventions-galore.html#lints

---

changelog: Add [`inspect_for_each`] lint for the use of `inspect().for_each()` on `Iterators`.

3 years agoCreate new lint for the usage of inspect for each.
nahuakang [Mon, 11 Jan 2021 22:56:12 +0000 (23:56 +0100)]
Create new lint for the usage of inspect for each.