Commit graph

20613 commits

Author SHA1 Message Date
bors
87f8a5b374 Auto merge of #13056 - y21:rm-compiler-lint-functions, r=Manishearth
Remove internal `compiler_lint_functions` lint

This internal lint has effectively been superseded by `disallowed_methods` when we started using that in #11811 (I didn't even know that we also had this internal lint at the time of when I created that PR).

Some of the methods that this looks for also don't exist anymore (`span_lint_note` and `span_lint_help`), though there was one that that lint had but wasn't disallowed in clippy.toml (`LintContext::lint`)

changelog: none
2024-07-08 23:10:11 +00:00
bors
e64236ca3a Auto merge of #13044 - Jarcho:bool_int, r=Manishearth
Refactor `bool_to_int_with_if`

Rearranges things to check the HIR tree first and simplifies how the literals are read.

changelog: None
2024-07-08 22:58:50 +00:00
bors
058e6eaa3a Auto merge of #13043 - Jarcho:assign_clone, r=Manishearth
Refactor `assigning_clones`

Short list of changes:
* Inline and simplify `extract_call`
* Inline `is_ok_to_suggest`
* Inline `skip_drop_block`
* Check the HIR tree before the macro check
* Don't call `outer_expn_data`
* Use `find` instead of a loop in `clone_source_borrows_from_dest`

changelog: none
2024-07-08 22:48:19 +00:00
bors
f6020fbd44 Auto merge of #13042 - Jarcho:almost_range, r=Manishearth
`almost_complete_range`: Delay suggestion creation.

Does less work when the lint doesn't trigger.

changelog: none
2024-07-08 22:39:01 +00:00
Michael Goulet
920cbcdd45 Move trait selection error reporting to its own top-level module 2024-07-08 16:04:47 -04:00
John Arundel
d23df74712 resolve code review comments 2024-07-08 19:05:35 +01:00
bors
510cfe3dc4 Auto merge of #13067 - Jarcho:misc_small3, r=Manishearth
Misc refactorings part 3

And some more changes. Same general idea of checking the HIR tree first when linting.

changelog: none
2024-07-08 17:52:47 +00:00
bors
dfb92532fa Auto merge of #12870 - lrh2000:sig-drop-while, r=blyxyas
`significant_drop_in_scrutinee`: Trigger lint also for scrutinees in `while let` and `if let`

This lint should also work for `if let` and `while let`, so this PR makes it actually work.

For `while let`, I can't think of any reason why this lint shouldn't be enabled. The only problem is that the lint suggests moving the significant drop above the `while let`, which is clearly invalid in the case of `while let`. I don't know if this is fixable, but this PR simply disables the wrong suggestions.

For `if let`, it seems that another lint called `if_let_mutex` has some overlapping functionality. But `significant_drop_in_scrutinee` is a bit stricter, as it will trigger even if the `else` branch does not try to lock the same mutex.

changelog: [`significant_drop_in_scrutinee`]: Trigger lint also for scrutinees in `while let` and `if let`.

r? `@blyxyas` (the third PR as promised in https://github.com/rust-lang/rust-clippy/pull/12740#issuecomment-2094876350, thanks for your review!)
2024-07-08 15:09:45 +00:00
bors
edc6b00e73 Auto merge of #13064 - Alexendoo:lintcheck-shrink-json, r=xFrednet
Reduce the size of lintcheck JSON output

Saves about 80% of the size by picking out what we need rather than serialising the whole diagnostic

r? `@xFrednet`

changelog: none
2024-07-08 14:57:42 +00:00
bors
2ad8cdc81b Auto merge of #13045 - J-ZhengLi:missing_const_for_fn_FP, r=blyxyas
[`missing_const_for_fn`]: fix FP when arg ty is impl trait alias ty

closes: #13009

---

changelog: [`missing_const_for_fn`]: fix FP when arg ty is impl trait alias ty
2024-07-08 14:39:12 +00:00
Matthias Krüger
a988389ce8 Rollup merge of #127355 - aceArt-GmbH:126475, r=oli-obk
Mark format! with must_use hint

Uses unstable feature https://github.com/rust-lang/rust/issues/94745

Part of #126475

First contribution to rust, please let me know if the blessing of tests is correct
Thanks `@bjorn3` for the help
2024-07-08 16:28:15 +02:00
J-ZhengLi
08992d0372 [missing_const_for_fn]: fix FP when arg ty is impl trait alias ty 2024-07-08 18:09:49 +08:00
bors
e82cfdc559 Auto merge of #127476 - jieyouxu:rollup-16wyb0b, r=jieyouxu
Rollup of 10 pull requests

Successful merges:

 - #126841 ([`macro_metavar_expr_concat`] Add support for literals)
 - #126881 (Make `NEVER_TYPE_FALLBACK_FLOWING_INTO_UNSAFE` a deny-by-default lint in edition 2024)
 - #126921 (Give VaList its own home)
 - #127367 (Run alloc sync tests)
 - #127431 (Use field ident spans directly instead of the full field span in diagnostics on local fields)
 - #127437 (Uplift trait ref is knowable into `rustc_next_trait_solver`)
 - #127439 (Uplift elaboration into `rustc_type_ir`)
 - #127451 (Improve `run-make/output-type-permutations` code and improve `filename_not_in_denylist` API)
 - #127452 (Fix intrinsic const parameter counting with `effects`)
 - #127459 (rustdoc-json: add type/trait alias tests)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-07-08 06:47:12 +00:00
bors
1e3f8c6e13 Auto merge of #113128 - WaffleLapkin:become_trully_unuwuable, r=oli-obk,RalfJung
Support tail calls in mir via `TerminatorKind::TailCall`

This is one of the interesting bits in tail call implementation — MIR support.

This adds a new `TerminatorKind` which represents a tail call:
```rust
    TailCall {
        func: Operand<'tcx>,
        args: Vec<Operand<'tcx>>,
        fn_span: Span,
    },
```

*Structurally* this is very similar to a normal `Call` but is missing a few fields:
- `destination` — tail calls don't write to destination, instead they pass caller's destination to the callee (such that eventual `return` will write to the caller of the function that used tail call)
- `target` — similarly to `destination` tail calls pass the caller's return address to the callee, so there is nothing to do
- `unwind` — I _think_ this is applicable too, although it's a bit confusing
- `call_source` — `become` forbids operators and is not created as a lowering of something else; tail calls always come from HIR (at least for now)

It might be helpful to read the interpreter implementation to understand what `TailCall` means exactly, although I've tried documenting it too.

-----

There are a few `FIXME`-questions still left, ideally we'd be able to answer them during review ':)

-----

r? `@oli-obk`
cc `@scottmcm` `@DrMeepster` `@JakobDegen`
2024-07-08 04:35:04 +00:00
Jason Newcomb
0c72a99cac raw_strings Check HIR tree first. 2024-07-07 22:19:06 -04:00
Jason Newcomb
e12ff630fd permissions_set_readonly_false: Check HIR tree first. 2024-07-07 22:17:43 -04:00
Jason Newcomb
15eac5abd6 Simplify option_env_unwrap. 2024-07-07 22:17:31 -04:00
Jason Newcomb
ff28de20b4 neg_cmp_op_on_partial_ord: Delay macro check 2024-07-07 22:14:43 -04:00
Jason Newcomb
7c17dd331b needless_for_each: Check HIR tree first. 2024-07-07 22:14:24 -04:00
Jason Newcomb
139dad8849 mut_mut: Delay macro check 2024-07-07 22:13:05 -04:00
Jason Newcomb
c22608823f needless_borrowed_ref: Check HIR tree first. 2024-07-07 22:13:05 -04:00
Jason Newcomb
58aa804ada mismatching_type_param_order: Delay macro check. 2024-07-07 22:06:15 -04:00
Jason Newcomb
36a14e3a12 misc:
* Delay macro checks.
* Use `span_lint_hir`.
2024-07-07 22:05:26 -04:00
bors
1de41b18d2 Auto merge of #13068 - Jarcho:init_numbered, r=Alexendoo
Rework `init_numbered_fields`

Two behaviour changes:
* Not linting in macros
* Not linting when side effects might be reordered

changelog: `init_numbered_fields`: Don't suggest reordering side effects.
2024-07-08 00:28:03 +00:00
Jason Newcomb
5b7ffa1a63 Rework init_numbered_fields:
* Only check the name of a single field
* Don't lint in macros
* Check for side effects
* Don't use a binary heap
2024-07-07 20:15:19 -04:00
Jason Newcomb
eda45aaba1 minmax: use let chain 2024-07-07 18:12:39 -04:00
Jason Newcomb
488a545a50 map_unit_fn: Delay macro check 2024-07-07 18:12:05 -04:00
Jason Newcomb
7a942a5c99 manual_unwrap_or_default: Check HIR tree first. 2024-07-07 18:11:55 -04:00
Jason Newcomb
5d333e862b manual_strip: Delay msrv check. 2024-07-07 18:11:43 -04:00
Jason Newcomb
c0068ba5ac manual_slice_size_calculation: Delay constant check. 2024-07-07 18:11:05 -04:00
Jason Newcomb
03117026ae manual_retain: Remove redundant match. 2024-07-07 18:10:46 -04:00
Jason Newcomb
0f4cd13f66 manual_rem_euclid: Check HIR tree first. 2024-07-07 18:08:44 -04:00
Jason Newcomb
44f87e8cc1 manual_range_patterns: Delay macro check. 2024-07-07 18:08:11 -04:00
Jason Newcomb
2309f8e4a1 manual_non_exhaustive: Delay msrv check. 2024-07-07 18:08:02 -04:00
Jason Newcomb
f46c981f3f manual_main_separator_str: Check HIR tree first. 2024-07-07 18:07:52 -04:00
Jason Newcomb
2d9e67ea8a manual_let_else: Delay msrv and macro checks. 2024-07-07 18:07:36 -04:00
Jason Newcomb
95348adcb9 manual_float_methods:
* Check HIR tree first.
* Use `partition_in_place`.
2024-07-07 18:07:16 -04:00
Jason Newcomb
b9ba340db6 manual_bits: Delay msrv check 2024-07-07 18:06:36 -04:00
Jason Newcomb
c0fa6a92f0 literal_representation: Delay macro check. 2024-07-07 18:06:27 -04:00
Jason Newcomb
15f640a7cb let_with_type_underscore:
* Delay macro check.
* Use `is_from_proc_macro
2024-07-07 18:06:17 -04:00
Jason Newcomb
5332def0fd let_underscore: Delay macro check. 2024-07-07 18:06:00 -04:00
Jason Newcomb
fed75b3895 let_if_seq: use array_windows. 2024-07-07 18:05:51 -04:00
Jason Newcomb
ff4e62d3ec len_zero: Check HIR tree first 2024-07-07 18:05:41 -04:00
Alex Macleod
eac1aab1ff Reduce the size of lintcheck JSON output 2024-07-07 21:05:51 +00:00
Jason Newcomb
5ae33c7699 legacy_numeric_constants: Check HIR tree first. 2024-07-07 16:52:59 -04:00
Jason Newcomb
03036c11b3 large_include_file: Check HIR tree first. 2024-07-07 16:52:33 -04:00
Jason Newcomb
c3dd028d3e large_futures: Delay macro check 2024-07-07 16:52:13 -04:00
Jason Newcomb
430c02cbd0 large_enum_variant: Delay macro check 2024-07-07 16:51:58 -04:00
Jason Newcomb
3092c8a5fd large_const_arrays: Check HIR tree first. 2024-07-07 16:51:33 -04:00
Jason Newcomb
6b10b4360c iter_without_into_iter: Delay macro check 2024-07-07 16:51:20 -04:00