Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lint against manual impl Default that could have been derived #134175

Closed
Closed
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
1b36289
Make some manual `impl Default` derived
estebank Dec 11, 2024
75f1249
Introduce `default_could_be_derived` lint
estebank Dec 11, 2024
476fe03
Use `derive(Default)`
estebank Dec 11, 2024
9b209dc
Detect `impl Default` where fields are literals and `Default::default…
estebank Dec 11, 2024
3ec241b
Explicitly consider fields set to `None` as `Default` derivable
estebank Dec 11, 2024
9ef798c
Detect when user uses default unit variant in default impl
estebank Dec 11, 2024
9ab4f0c
Use `#[derive(Default)]` for `std::option::Option`
estebank Dec 11, 2024
2c7e43f
Also lint enums with type parameters with unit variant default
estebank Dec 11, 2024
c35fd36
Lint against manual `Default` impl if all fields are defaulted
estebank Dec 11, 2024
e5a4a88
Lint structs with default field values and manual `Default`
estebank Dec 11, 2024
34ecbb9
Extend `Default` lint to tuple-structs
estebank Dec 11, 2024
e39edf7
Extend support to unit-structs and add comments
estebank Dec 12, 2024
5558821
Rework logic to make it work x-crate and remove special cases
estebank Dec 12, 2024
da449e2
update test output
estebank Dec 12, 2024
132b49d
Add test for `const` "equivalent"
estebank Dec 12, 2024
f10d560
`#[derive(Default)] struct FixupContext`
estebank Dec 12, 2024
7c8b801
Tweak lint output
estebank Dec 12, 2024
4c421be
Split lints
estebank Dec 12, 2024
64c4938
Fix clippy tests
estebank Dec 12, 2024
810a245
Use `derive(Default)` in rustfmt
estebank Dec 12, 2024
448d80d
Derive `Default` in `tests::hash`
estebank Dec 12, 2024
433947b
Make lint deny-by-default (for crater run)
estebank Dec 12, 2024
32b933e
`allow(default_could_be_derived)` in `Default` examples
estebank Dec 13, 2024
814146c
Mention `#[default]` in E0655 code index
estebank Dec 13, 2024
c666eae
Fix lint example
estebank Dec 14, 2024
6fa30b6
fix rebase
estebank Dec 15, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use derive(Default) in rustfmt
estebank committed Dec 16, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 810a2457539e5e1f511deb808d107e265987d710
16 changes: 4 additions & 12 deletions src/tools/rustfmt/src/config/options.rs
Original file line number Diff line number Diff line change
@@ -155,9 +155,11 @@ pub enum ReportTactic {

/// What Rustfmt should emit. Mostly corresponds to the `--emit` command line
/// option.
#[derive(Default)]
#[config_type]
pub enum EmitMode {
/// Emits to files.
#[default]
Files,
/// Writes the output to stdout.
Stdout,
@@ -310,12 +312,6 @@ impl ::std::str::FromStr for WidthHeuristics {
}
}

impl Default for EmitMode {
fn default() -> EmitMode {
EmitMode::Files
}
}

/// A set of directories, files and modules that rustfmt should ignore.
#[derive(Default, Clone, Debug, PartialEq)]
pub struct IgnoreList {
@@ -425,10 +421,12 @@ pub trait CliOptions {
}

/// The edition of the syntax and semantics of code (RFC 2052).
#[derive(Default)]
#[config_type]
pub enum Edition {
#[value = "2015"]
#[doc_hint = "2015"]
#[default]
/// Edition 2015.
Edition2015,
#[value = "2018"]
@@ -445,12 +443,6 @@ pub enum Edition {
Edition2024,
}

impl Default for Edition {
fn default() -> Edition {
Edition::Edition2015
}
}

impl From<Edition> for rustc_span::edition::Edition {
fn from(edition: Edition) -> Self {
match edition {