rust/clippy_utils/src
Esteban Küber 39d73d5bbb Use MIR body to identify more "default equivalent" calls
When looking for `Default` impls that could be derived, we look at the
body of their `fn default()` and if it is an fn call or literal we check
if they are equivalent to what `#[derive(Default)]` would have used.

Now, when checking those fn calls in the `fn default()` body, we also
compare against the corresponding type's `Default::default` body to see
if our call is equivalent to that one.

For example, given

```rust
struct S;

impl S {
    fn new() -> S { S }
}

impl Default for S {
    fn default() -> S { S::new() }
}
```

`<S as Default>::default()` and `S::new()` are considered equivalent.
Given that, if the user also writes

```rust
struct R {
    s: S,
}

impl Default for R {
    fn default() -> R {
        R { s: S::new() }
    }
}
```

the `derivable_impls` lint will now trigger.
2025-02-11 02:59:06 +00:00
..
ast_utils Merge remote-tracking branch 'upstream/master' into rustup 2025-02-06 14:31:01 +01:00
mir Merge remote-tracking branch 'upstream/master' into rustup 2025-02-06 14:31:01 +01:00
ty Handle more cases in is_normalizable (#13833) 2025-02-07 13:20:11 +00:00
attrs.rs Merge commit '609cd310be' into clippy-subtree-update 2024-12-26 15:15:54 +01:00
check_proc_macro.rs Merge commit '51d49c1ae2' into clippy-subtree-update 2025-01-28 19:33:54 +01:00
comparisons.rs Merge commit 'd9c24d1b1e' into clippyup 2023-07-17 10:22:32 +02:00
consts.rs Merge commit '51d49c1ae2' into clippy-subtree-update 2025-01-28 19:33:54 +01:00
diagnostics.rs Clippy: cfg out validate_diag on release builds 2024-11-08 10:49:54 +01:00
eager_or_lazy.rs Fix tools 2024-12-12 16:43:36 +00:00
higher.rs Merge commit '51d49c1ae2' into clippy-subtree-update 2025-01-28 19:33:54 +01:00
hir_utils.rs Use a different hir type for patterns in pattern types than we use in match patterns 2025-02-03 08:18:30 +00:00
lib.rs Use MIR body to identify more "default equivalent" calls 2025-02-11 02:59:06 +00:00
macros.rs Merge commit '51d49c1ae2' into clippy-subtree-update 2025-01-28 19:33:54 +01:00
msrvs.rs add MSRV check for lines_filter_map_ok (#14130) 2025-02-07 12:24:50 +00:00
numeric_literal.rs Merge commit '51d49c1ae2' into clippy-subtree-update 2025-01-28 19:33:54 +01:00
paths.rs Merge commit '19e305bb57' into clippy-subtree-update 2025-01-09 18:57:00 +01:00
ptr.rs Merge commit '7901289135' into clippy-subtree-update 2024-09-24 11:58:04 +02:00
qualify_min_const_fn.rs Merge remote-tracking branch 'upstream/master' into rustup 2025-02-06 14:31:01 +01:00
source.rs Simplify reindent_multiline() signature (#14101) 2025-02-07 00:45:33 +00:00
str_utils.rs Merge remote-tracking branch 'upstream/master' into rustup 2025-02-06 14:31:01 +01:00
sugg.rs Fix tools 2024-12-12 16:43:36 +00:00
sym_helper.rs Merge commit '928e72dd10' into clippyup 2021-02-25 11:25:22 +01:00
usage.rs Merge commit 'ff4a26d442' into clippy-subtree-update 2024-11-28 19:38:59 +01:00
visitors.rs Merge commit '51d49c1ae2' into clippy-subtree-update 2025-01-28 19:33:54 +01:00