| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The `TyCtxt::hir_get_fn_id_for_return_block()` function was too broad,
as it will return positively even when given part of an expression that
can be used as a return value. A new
`potential_return_of_enclosing_body()` utility function has been made to
represent the fact that an expression might be directly returned from
its enclosing body.
changelog: [`return_and_then`]: prevent false positives in case of a
partially used expression
Fixes rust-lang/rust-clippy#15111
Fixes rust-lang/rust-clippy#14927
<!-- TRIAGEBOT_START -->
<!-- TRIAGEBOT_SUMMARY_START -->
### Summary Notes
-
[Beta-nomination](https://github.com/rust-lang/rust-clippy/pull/15115#issuecomment-2996222332)
by [samueltardieu](https://github.com/samueltardieu)
*Managed by `@rustbot`—see
[help](https://forge.rust-lang.org/triagebot/note.html) for details*
<!-- TRIAGEBOT_SUMMARY_END -->
<!-- TRIAGEBOT_END -->
|
|
This commit also adds more test cases, which already worked but were
mentioned in the issue.
Fixes rust-lang/rust-clippy#9939
changelog: [`manual_let_else`]: correctly handle binding subpattern with
unused name
|
|
Fixes: rust-lang/rust-clippy#14897, rust-lang/rust-clippy#10015
This is not a perfect solution, but it fixes the issue. Happy to discuss
further with the clippy team.
This PR refines check_mul_add to avoid false positives on ambiguous
float types (e.g., f32 vs f64). It improves type detection and ensures
mul_add is only suggested when the type is clear.
Changes:
- Improved detection of ambiguous float types
- Refined mul_add suggestion logic
- Added tests for ambiguous cases
## Example
Before this change, expressions like:
```rust
let x = 1.0; // ambiguous type
let _ = x * 2.0 + 0.5; // could incorrectly suggest mul_add
```
----
changelog: [`suboptimal_flops`]: improve handling of ambiguous float
types in mul_add suggestions
|
|
Fixes rust-lang/rust-clippy#15141
----
changelog: [`borrow_as_ptr`]: do not remove cast to trait object pointer
|
|
Hi,
I noticed that the lint
[neg_multiply](https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply)
generates bad code when we call a method on the expression.
Consider `((a.delta - 0.5).abs() * -1.0).total_cmp(&1.0)`. Currently
this would be changed by clippy to `-(a.delta - 0.5).abs()
.total_cmp(&1.0)` - which does not compile because we are trying to
negate an ordering enum - but what we really want is `(-(a.delta -
0.5).abs()).total_cmp(&1.0)`.
This PR fixes this.
changelog: [`neg_multiply`] does not remove parenthesis anymore if a
method is being called on the affected expression
NOTE: This is the first time I am contributing to clippy or the rust
repo in general. So I am not sure whether my approach to fixing this
issue is goo, if there are better solutions or if I missed something.
Thanks & hope you have a good day,
Dario
|
|
|
|
check stage for it
|
|
|
|
Fixes rust-lang/rust-clippy#9583
When a closure with no parameters is called immediately after being
defined, clippy can now suggest replacing the entire expression with
just the closure's body.
----
changelog: [`redundant_closure_call`]: add fixes for closures with block
|
|
|
|
|
|
|
|
rustc_builtin_macros: Make sure registered attributes stay sorted
As with the list of builtin macros, use tidy to make sure the list of
builtin attributes stays sorted.
|
|
Organize macro tests a bit more
- Move some macro parsing tests from `tests/ui/parser` to `tests/ui/parser/macro`.
- Most macro tests use `macro` in the name, making it easy to find and run tests relevant to macros. However, a few use `mbe` instead. Rename those to say `macro`.
|
|
Use `object` crate from crates.io to fix windows build error
See https://rust-lang.zulipchat.com/#narrow/channel/386786-rustc-codegen-gcc/topic/Cannot.20compile.20rustc.20on.20Windows.2010/with/527240094
|
|
r=jdonszelmann
Rewrite empty attribute lint for new attribute parser
cc `@jdonszelmann`
|
|
Weekly `cargo update`
Automation to keep dependencies in `Cargo.lock` current.
r? dep-bumps
The following is the output from `cargo update`:
```txt
compiler & tools dependencies:
Locking 6 packages to latest compatible versions
Adding io-uring v0.7.8
Updating jsonpath-rust v1.0.2 -> v1.0.3
Updating libffi v4.1.0 -> v4.1.1
Updating libffi-sys v3.3.1 -> v3.3.2
Updating tokio v1.45.1 -> v1.46.1
Updating wasm-component-ld v0.5.14 -> v0.5.15
note: pass `--verbose` to see 41 unchanged dependencies behind latest
library dependencies:
Locking 0 packages to latest compatible versions
note: pass `--verbose` to see 4 unchanged dependencies behind latest
rustbook dependencies:
Locking 1 package to latest compatible version
Updating cc v1.2.27 -> v1.2.29
```
|
|
the`stable_mir` crate
As part of this reorganization, some traits need to be moved from `rustc_smir::context::traits` to `stable_mir::unstable::internal_cx`. These traits are specifically designed for `InternalCx` to clarify the behavior of different functions that share the same name. This move is necessary to avoid orphan rule violations.
|
|
I opted to not include enum variant imports, only under the enum, and to not gate this behind a setting.
|
|
Rollup of 6 pull requests
Successful merges:
- rust-lang/rust#143416 (mbe: Defer checks for `compile_error!` until reporting an unused macro rule)
- rust-lang/rust#143470 (std: sys: net: uefi: tcp4: Implement read)
- rust-lang/rust#143477 (use `is_multiple_of` and `div_ceil`)
- rust-lang/rust#143484 (distinguish the duplicate item of rpitit)
- rust-lang/rust#143493 (tidy: use --bless for tidy spellcheck instead of spellcheck:fix)
- rust-lang/rust#143504 (compiletest: print slightly more information on fs::write failure)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
While `expr as T` can be removed as a statement if `expr` has no
side-effect, the `as T` part alone cannot be removed if the type of
`expr` would be ambiguous without the cast.
changelog: [`unnecessary_operation`]: do not remove casts if they are
useful to type the expression
Fixes rust-lang/rust-clippy#15173
|
|
chore: Remove dead field from `InferenceContext`
|
|
|
|
compiletest: print slightly more information on fs::write failure
See [#t-infra > compiletest: panic in dump_output_file: No such file or dire @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/compiletest.3A.20panic.20in.20dump_output_file.3A.20No.20such.20file.20or.20dire/near/527294714)
|
|
tidy: use --bless for tidy spellcheck instead of spellcheck:fix
previous behavior was inconsistent with existing extra checks.
unsure if this needs a change tracker entry or a warning for people who try to use the old behavior.
unsure if we should call this `spellcheck:lint` for consistency.
making this consistent is a prerequisite for https://github.com/rust-lang/rust/pull/143398
cc `@nnethercote`
r? `@Kobzol`
|
|
distinguish the duplicate item of rpitit
Fixes rust-lang/rust#140796
r? compiler
cc `@Zoxc`
|
|
use `is_multiple_of` and `div_ceil`
In tricky logic, these functions are much more informative than the manual implementations. They also catch subtle bugs:
- the manual `is_multiple_of` often does not handle division by zero
- manual `div_ceil` often does not consider overflow
The transformation is free for `is_multiple_of` if the divisor is compile-time known to be non-zero. For `div_ceil` there is a small cost to considering overflow. Here is some assembly https://godbolt.org/z/5zP8KaE1d.
|
|
std: sys: net: uefi: tcp4: Implement read
- A blocking implementation of tcp4 read.
- Basically a copy of [write](https://github.com/rust-lang/rust/pull/141532)
|
|
mbe: Defer checks for `compile_error!` until reporting an unused macro rule
The current MBE parser checks rules at initial parse time to see if their RHS has `compile_error!` in it, and returns a list of rule indexes and LHS spans that don't map to `compile_error!`, for use in unused macro rule checking.
Instead, have the unused macro rule reporting ask the macro for the rule to report, and let the macro check at that time. That avoids checking rules unless they're unused.
In the process, refactor the data structure used to store macro rules, to group the LHS and RHS (and LHS span) of each rule together, and refactor the unused rule tracking to only track rule indexes.
This builds atop a couple of minor MBE refactors. I would suggest reviewing commit-by-commit.
The overall result is a further simplification of the macro code.
|
|
Add AsMut, Borrow and BorrowMut to minicore and famous_defs
|
|
fix: Avoid .unwrap() when running the discover command
|
|
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
|
|
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
|
|
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
|
|
Turns out that things like `#[attr]return unsafe { func(); }` didn't
work because we weren't checking above attributes on statements, only on
blocks!
fixes https://github.com/rust-lang/rust-clippy/issues/13189
Useful for Rust-For-Linux
changelog:[`undocumented_unsafe_blocks`]: Make sure to propagate
`accept-comment-above-attributes` to **all** statements.
|
|
Port streaming commands in bootstrap to `BootstrapCommand` and remove `as_command_mut`
This PR adds streaming capabilities to BootstrapCommand and migrate existing command streaming scenario's used in bootstrap.
r? `@Kobzol`
|
|
fix: Fix diverging destructuring assignments
|