Skip to content

Commit 5b09d4e

Browse files
committed
Auto merge of #9541 - Alexendoo:declare-proc-macro, r=flip1995
Generate lint categories and explanations with `declare_clippy_lint` This means contributors will no longer have to run `cargo dev update_lints` after changing a lints documentation or its category, which may also mean fewer merge conflicts in general It works by swapping `declare_clippy_lint` out for a `proc_macro` of the same name. The proc macro emits a `LintInfo` alongside the generated `Lint` which are gathered into `declared_lint::LINTS`. The categories/explanations are then read from `declared_lint::LINTS` at runtime The removal of `src/docs` is split into a separate commit to be more easily ignored It is slightly slower though, adding a bit under a second to build time. Less noticeable in full builds or with a slower linker (benchmark uses mold) ```bash hyperfine --warmup 2 \ --parameter-list commit "declare-proc-macro,master" \ --command-name "{commit}" \ --setup "git checkout {commit}" \ --prepare "touch clippy_lints/src/lib.rs" \ "cargo build" ``` ``` Benchmark 1: declare-proc-macro Time (mean ± σ): 10.731 s ± 0.154 s [User: 7.739 s, System: 1.791 s] Range (min … max): 10.598 s … 11.125 s 10 runs Benchmark 2: master Time (mean ± σ): 9.422 s ± 0.094 s [User: 7.183 s, System: 1.732 s] Range (min … max): 9.287 s … 9.624 s 10 runs Summary 'master' ran 1.14 ± 0.02 times faster than 'declare-proc-macro' ``` r? `@flip1995` cc `@llogiq` for `--explain` changelog: none
2 parents 191c983 + 8134566 commit 5b09d4e

File tree

603 files changed

+958
-15907
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

603 files changed

+958
-15907
lines changed

clippy_dev/src/update_lints.rs

+30-223
Large diffs are not rendered by default.

clippy_lints/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ edition = "2021"
1111
[dependencies]
1212
cargo_metadata = "0.14"
1313
clippy_utils = { path = "../clippy_utils" }
14+
declare_clippy_lint = { path = "../declare_clippy_lint" }
1415
if_chain = "1.0"
1516
itertools = "0.10.1"
1617
pulldown-cmark = { version = "0.9", default-features = false }

clippy_lints/src/declared_lints.rs

+620
Large diffs are not rendered by default.

clippy_lints/src/lib.register_all.rs

-370
This file was deleted.

clippy_lints/src/lib.register_cargo.rs

-11
This file was deleted.

clippy_lints/src/lib.register_complexity.rs

-111
This file was deleted.

clippy_lints/src/lib.register_correctness.rs

-78
This file was deleted.

clippy_lints/src/lib.register_internal.rs

-22
This file was deleted.

0 commit comments

Comments
 (0)