Commit graph

18325 commits

Author SHA1 Message Date
Dev381
d9d25e98fc Fix redundant_as_str .fixed file not being consistent 2023-09-18 16:46:00 -04:00
Dev381
17d174d113 Reformat redundant_as_str ui test 2023-09-18 16:39:09 -04:00
Dev381
5224853434 Remove periods from end of sentences in redundant_as_str comments 2023-09-18 16:37:27 -04:00
Dev381
367ba9cd00 Add not redundant examples for redundant_as_str 2023-09-18 16:36:10 -04:00
Dev381
00ca47b97d Add more examples and comments to redundant_as_str test 2023-09-18 16:32:22 -04:00
Dev381
f2ab16eac1 Add not triggering examples to redundant_as_str test 2023-09-18 16:08:02 -04:00
bors
e9dc753b7b Auto merge of #115748 - RalfJung:post-mono, r=oli-obk
move required_consts check to general post-mono-check function

This factors some code that is common between the interpreter and the codegen backends into shared helper functions. Also as a side-effect the interpreter now uses the same `eval` functions as everyone else to get the evaluated MIR constants.

Also this is in preparation for another post-mono check that will be needed for (the current hackfix for) https://github.com/rust-lang/rust/issues/115709: ensuring that all locals are dynamically sized.

I didn't expect this to change diagnostics, but it's just cycle errors that change.

r? `@oli-obk`
2023-09-18 19:41:21 +00:00
bors
4022591cfd Auto merge of #11517 - mojave2:issue-11426, r=Alexendoo
fix ICE by `u64::try_from(<u128>)`

changelog: Fix the ICE in [`cast_possible_truncation`], when the `Shr` bits is larger than `u64::MAX`

fix #11426
2023-09-18 14:21:48 +00:00
Guillaume Gomez
b8b420cc79 Improve code readability by moving the retrieval of closures inside async functions right besides other closures handling.
Add doc comment explaining what `MutablyUsedVariablesCtxt::prev_move_to_closure` is about.
2023-09-18 15:47:24 +02:00
bors
ea16f812be Auto merge of #11531 - Alexendoo:remark-deps, r=flip1995
Update remark CI deps

[Remark v15](https://github.com/remarkjs/remark/releases/tag/15.0.0) was just released that needs a newer node version, this updates us to 18 (the current LTS)

Also updates mdbook while we're at it

changelog: none
2023-09-18 13:12:18 +00:00
Alex Macleod
32519528df Update remark CI deps 2023-09-18 12:48:32 +00:00
Alex Macleod
b06b915dc0 Move zero_ptr to the casts module 2023-09-18 12:15:51 +00:00
bors
c92de58692 Auto merge of #11523 - Alexendoo:used-underscore-bindings-lint-levels, r=xFrednet
used_underscore_bindings: respect lint levels on the binding definition

Fixes #11520
Fixes #947

Also ignores usages of `PhantomData`

changelog: none
2023-09-18 09:04:44 +00:00
Dev381
01056c5aae Fix missing semicolon in redundant_as_str docstring example 2023-09-17 18:10:21 -04:00
Dev381
1c9f3bef8b Add redundant_as_str lint
This lint checks for `as_str` on a `String` immediately followed by `as_bytes` or `is_empty` as those methods are available on `String` too. This could possibly also be extended to `&[u8]` in the future.
2023-09-17 17:50:45 -04:00
Alex Macleod
32d3387c80 used_underscore_bindings: respect lint levels on the binding definition 2023-09-17 20:40:51 +00:00
bors
251a475b72 Auto merge of #11511 - Jarcho:split_borrow, r=llogiq
Split `needless_borrow` into two lints

Splits off the case where the borrow is used as a generic argument to a function. I think the two cases are different  enough to warrant a separate lint.

The tests for the new lint have been reordered to group related parts together. Two warning have been dropped, one looked like it was testing the generic argument form, but it ends up triggering the auto-deref variant. The second was just a redundant test that didn't do anything interesting.

An issue with cycle detection is also included. The old version was checking if a cycle was reachable from a block when it should have been checking if the block is part or a cycle.

As a side note, I'm liking the style of just jamming all the tests into separate scopes in main.

changelog: Split off `needless_borrows_for_generic_args` from `needless_borrow`
2023-09-17 13:48:40 +00:00
Jason Newcomb
79247d95f7 Split part of needless_borrow into needless_borrows_for_generic_args 2023-09-17 09:48:12 -04:00
y21
558ae4c6a8 [redundant_guards]: lint if the pattern is on the LHS 2023-09-17 15:34:32 +02:00
mojave2
3665a4102b
fix ICE by u64::try_from(<u128>) 2023-09-17 19:44:25 +08:00
Dylan DPC
66aa7f7cac Rollup merge of #115477 - kellerkindt:stabilized_int_impl, r=dtolnay
Stabilize the `Saturating` type

Closes #87920
Closes #92354

Stabilization report https://github.com/rust-lang/rust/issues/87920#issuecomment-1652346124
FCP https://github.com/rust-lang/rust/issues/87920#issuecomment-1676438885
2023-09-17 11:23:24 +00:00
bors
7b5e0199da Auto merge of #11515 - y21:filter_map_bool_then_peel_refs, r=Jarcho
[`filter_map_bool_then`]: include multiple derefs from adjustments

In #11506 this lint was improved to suggest one deref if the bool is behind references (fixed the FP #11503), however it might need multiple dereferences if the bool is behind multiple layers of references or custom derefs. E.g. `&&&bool` needs `***b`.

changelog: [`filter_map_bool_then`]: suggest as many dereferences as there are needed to get to the bool
2023-09-17 06:37:45 +00:00
mojave2
5b790ff9e0
fix FP with needless_raw_string_hashes 2023-09-17 12:54:00 +08:00
bors
ef736489e7 Auto merge of #11468 - mojave2:issue-11465, r=blyxyas
add extra `byref` checking for the guard's local

changelog: [`redundant_guards`]: Now checks if the variable is bound using `ref` before linting.

The lint should not be emitted, when the local variable is bind by-ref in the pattern.

fixes #11465
2023-09-16 22:02:10 +00:00
Chen Chen
3cad623716
更新 cast_lossless.rs
Co-authored-by: Timo <30553356+y21@users.noreply.github.com>
2023-09-17 02:42:12 +08:00
mojave2
af2a8478ba
fix cast_lossless with macro call 2023-09-16 23:17:47 +08:00
Chen Chen
67f0ba4af8
Update clippy_lints/src/matches/redundant_guards.rs
fix typo

Co-authored-by: Alejandra González <blyxyas@gmail.com>
2023-09-16 22:12:40 +08:00
y21
2ec6f3b1ed also count derefs through custom Deref impls 2023-09-16 15:13:44 +02:00
y21
860e800fa0 [filter_map_bool_then]: peel as many refs as needed 2023-09-16 14:14:51 +02:00
bors
f54275f20f Auto merge of #11509 - mojave2:issue-11502, r=llogiq
fix FP of let_unit_value on async fn args

changelog: [`let_unit_value`]: fix the FalsePostive on async fn arguments

fix #11502
2023-09-16 10:22:33 +00:00
bors
3f9db9025d Auto merge of #11507 - J-ZhengLi:issue11485, r=dswij
trigger [`transmute_null_to_fn`] on chain of casts

fixes: #11485

changelog: trigger [`transmute_null_to_fn`] on chain of casts
2023-09-16 06:19:09 +00:00
bors
59636a2aa3 Auto merge of #11301 - y21:issue11300, r=dswij
[`useless_conversion`]: don't lint if type parameter has unsatisfiable bounds for `.into_iter()` receiver

Fixes #11300.

Before this PR, clippy assumed that if it sees a `f(x.into_iter())` call and the type at that argument position is generic over any `IntoIterator`, then the `.into_iter()` call must be useless because `x` already implements `IntoIterator`, *however* this assumption is not right if the generic parameter has more than just the `IntoIterator` bound (because other traits can be implemented for the IntoIterator target type but not the IntoIterator implementor, as can be seen in the linked issue: `<[i32; 3] as IntoIterator>::IntoIter` satisfies `ExactSizeIterator`, but `[i32; 3]` does not).

So, this PR makes it check that the type parameter only has a single `IntoIterator` bound. It *might* be possible to check if the type of `x` in `f(x.into_iter())` satisfies all the bounds on the generic type parameter as defined on the function (which would allow removing the `.into_iter()` call even with multiple bounds), however I'm not sure how to do that, and the current fix should always work.

**Edit:** This PR has been changed to check if any of the bounds don't hold for the type of the `.into_iter()` receiver, so we can still lint in some cases.

changelog: [`useless_conversion`]: don't lint `.into_iter()` if type parameter has multiple bounds
2023-09-16 06:04:59 +00:00
Peter Jaszkowiak
6e0c456ec4 triagebot no-merges: exclude "Rustup"s, add labels 2023-09-15 21:56:10 -06:00
Jason Newcomb
fed036a57c Fix cycle detection in needless_borrow 2023-09-15 19:13:34 -04:00
mojave2
7426c83d8f
add a test case 2023-09-16 00:05:57 +08:00
bors
daadab515a Auto merge of #11483 - y21:path_ends_with, r=Alexendoo
new lint: `path_ends_with_ext`

Closes #11479

Not sure if it needs more test cases. I couldn't come up with any other ones, but it is a pretty simple lint logic wise with not too many checks

changelog: new lint: [`path_ends_with_ext`]
2023-09-15 15:38:55 +00:00
y21
981e96008b new lint: path_ends_with_ext 2023-09-15 16:17:51 +02:00
bors
eaf640dcf0 Auto merge of #11506 - mojave2:issue-11503, r=giraffate
fix filter_map_bool_then with a bool reference

changelog: [`filter_map_bool_then`]: Fix the incorrect autofix when the `bool` in question is a reference.

fix #11503
2023-09-15 13:13:16 +00:00
bors
e609279b2c Auto merge of #11484 - mkrasnitski:fix-11302, r=Jarcho
[`extra_unused_type_parameters`]: Fix edge case FP for parameters in where bounds

Generic parameters can end up being used on the left side of where-bounds if they are not directly bound but instead appear nested in some concrete generic type. Therefore, we should walk the left side of where bounds, but only if the bounded type is *not* a generic param, in which case we still need to ignore the bound.

Fixes #11302

changelog: [`extra_unused_type_parameters`]: Fix edge case false positive for parameters in where bounds
2023-09-15 12:59:15 +00:00
bors
21216297e9 Auto merge of #115851 - Alexendoo:clippy-doc-hidden-headers, r=flip1995
Ignore `#[doc(hidden)]` functions in clippy doc lints

Fixes https://github.com/rust-lang/rust-clippy/issues/11501

The implementation before #115689 had a check for unsugared doc comments that also happened to catch `#[doc(hidden)]`, this adds the check back in more explicitly

852bf4e51b/src/tools/clippy/clippy_lints/src/doc.rs (L526-L529)

r? `@flip1995`
2023-09-15 09:55:31 +00:00
bors
2c629cc137 Auto merge of #11504 - Alexendoo:type-lints-closures, r=xFrednet
Ignore closures for some type lints

Fixes #11417

`hir_ty_to_ty` is used in a couple of the `!is_local` lints, which doesn't play nicely inside bodies

changelog: none
2023-09-15 09:34:13 +00:00
mojave2
c81888eab3
fix FP of let_unit_value on async fn args 2023-09-15 15:05:43 +08:00
mojave2
c9b212d5ff
fix filter_map_bool_then with a bool reference 2023-09-15 14:23:58 +08:00
J-ZhengLi
1d76eede99 trigger [transmute_null_to_fn] on chain of casts 2023-09-15 12:24:45 +08:00
bors
6734e96ba4 Auto merge of #11505 - Alexendoo:metadata-collector-truncate, r=Manishearth
Truncate files when opening in metadata-collector

Fixes the issue seen here https://github.com/rust-lang/rust-clippy/pull/11483#discussion_r1324687136 and in a couple other PRs

The changelog file was opened without truncating it, so if the new version is shorter than the old one stray contents would remain at the end of the file

The other two files first removed the file so didn't have this problem, but in all cases we now use `fs::write`/`File::create` which is write + create + truncate

changelog: none
2023-09-14 23:05:24 +00:00
Alex Macleod
3c0fc15848 Truncate files when opening in metadata-collector 2023-09-14 22:17:51 +00:00
Alex Macleod
a2a31a0a2f Ignore closures for some type lints 2023-09-14 21:20:50 +00:00
Ralf Jung
3226e4b010 don't point at const usage site for resolution-time errors
also share the code that emits the actual error
2023-09-14 22:34:05 +02:00
Ralf Jung
1d49cb6118 move required_consts check to general post-mono-check function 2023-09-14 22:30:42 +02:00
bors
9756a13580 Auto merge of #115677 - matthewjasper:let-expr-recovery, r=b-naber
Improve invalid let expression handling

- Move all of the checks for valid let expression positions to parsing.
- Add a field to ExprKind::Let in AST/HIR to mark whether it's in a valid location.
- Suppress some later errors and MIR construction for invalid let expressions.
- Fix a (drop) scope issue that was also responsible for #104172.

Fixes #104172
Fixes #104868
2023-09-14 19:56:55 +00:00