Skip to content

Commit f58aae5

Browse files
committed
Turn declare_clippy_lint into a common macro
1 parent fb9913e commit f58aae5

File tree

7 files changed

+181
-201
lines changed

7 files changed

+181
-201
lines changed

clippy_lints/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ arrayvec = { version = "0.7", default-features = false }
1313
cargo_metadata = "0.18"
1414
clippy_config = { path = "../clippy_config" }
1515
clippy_utils = { path = "../clippy_utils" }
16-
declare_clippy_lint = { path = "../declare_clippy_lint" }
1716
itertools = "0.12"
1817
quine-mc_cluskey = "0.2"
1918
regex-syntax = "0.8"

clippy_lints/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ extern crate thin_vec;
6060

6161
#[macro_use]
6262
extern crate clippy_utils;
63-
#[macro_use]
64-
extern crate declare_clippy_lint;
6563

6664
#[cfg_attr(feature = "internal", allow(clippy::missing_clippy_version_attribute))]
6765
mod utils;

clippy_utils/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ arrayvec = { version = "0.7", default-features = false }
1010
itertools = "0.12"
1111
# FIXME(f16_f128): remove when no longer needed for parsing
1212
rustc_apfloat = "0.2.0"
13+
paste = "1.0.15"
1314

1415
[package.metadata.rust-analyzer]
1516
# This crate uses #[feature(rustc_private)]
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
// warn on lints, that are included in `rust-lang/rust`s bootstrap
2+
#![warn(rust_2018_idioms, unused_lifetimes)]
3+
4+
pub use paste;
5+
6+
#[macro_export]
7+
macro_rules! declare_clippy_lint {
8+
(@
9+
// $(#[$($attrss:tt)*])*
10+
$(#[doc = $lit:literal])*
11+
pub $lint_name:ident,
12+
$category:ident,
13+
$lintcategory:expr,
14+
$desc:literal,
15+
$version_expr:expr,
16+
$version_lit:literal
17+
) => {
18+
rustc_session::declare_tool_lint! {
19+
$(#[doc = $lit])*
20+
#[clippy::version = $version_lit]
21+
pub clippy::$lint_name,$category,$desc,
22+
report_in_external_macro:true
23+
}
24+
25+
$crate::paste::paste! {
26+
pub(crate) static [< $lint_name _INFO >]: &'static crate::LintInfo = &crate::LintInfo {
27+
lint: &$lint_name,
28+
category: $lintcategory,
29+
explanation: concat!($($lit,"\n",)*),
30+
location: concat!(file!(), "#L", line!()),
31+
version: $version_expr
32+
};
33+
}
34+
};
35+
(
36+
$(#[doc = $lit:literal])*
37+
#[clippy::version = $version:literal]
38+
pub $lint_name:ident,
39+
restriction,
40+
$desc:literal
41+
) => {
42+
declare_clippy_lint! {@
43+
$(#[doc = $lit])*
44+
pub $lint_name,Allow, crate::LintCategory::Restriction,$desc,
45+
declare_clippy_lint!(__version = $version), $version
46+
}
47+
};
48+
(
49+
$(#[doc = $lit:literal])*
50+
#[clippy::version = $version:literal]
51+
pub $lint_name:ident,
52+
style,
53+
$desc:literal
54+
) => {
55+
declare_clippy_lint! {@
56+
$(#[doc = $lit])*
57+
pub $lint_name, Warn, crate::LintCategory::Style,$desc,
58+
declare_clippy_lint!(__version = $version), $version
59+
60+
}
61+
};
62+
(
63+
$(#[doc = $lit:literal])*
64+
#[clippy::version = $version:literal]
65+
pub $lint_name:ident,
66+
correctness,
67+
$desc:literal
68+
) => {
69+
declare_clippy_lint! {@
70+
$(#[doc = $lit])*
71+
pub $lint_name,Deny, crate::LintCategory::Correctness,$desc,
72+
declare_clippy_lint!(__version = $version), $version
73+
74+
}
75+
};
76+
(
77+
$(#[doc = $lit:literal])*
78+
#[clippy::version = $version:literal]
79+
pub $lint_name:ident,
80+
perf,
81+
$desc:literal
82+
) => {
83+
declare_clippy_lint! {@
84+
$(#[doc = $lit])*
85+
pub $lint_name, Warn, crate::LintCategory::Perf,$desc,
86+
declare_clippy_lint!(__version = $version), $version
87+
}
88+
};
89+
(
90+
$(#[doc = $lit:literal])*
91+
#[clippy::version = $version:literal]
92+
pub $lint_name:ident,
93+
complexity,
94+
$desc:literal
95+
) => {
96+
declare_clippy_lint! {@
97+
$(#[doc = $lit])*
98+
pub $lint_name, Warn, crate::LintCategory::Complexity,$desc,
99+
declare_clippy_lint!(__version = $version), $version
100+
}
101+
};
102+
(
103+
$(#[doc = $lit:literal])*
104+
#[clippy::version = $version:literal]
105+
pub $lint_name:ident,
106+
suspicious,
107+
$desc:literal
108+
) => {
109+
declare_clippy_lint! {@
110+
$(#[doc = $lit])*
111+
pub $lint_name, Warn, crate::LintCategory::Suspicious,$desc,
112+
declare_clippy_lint!(__version = $version), $version
113+
}
114+
};
115+
(
116+
$(#[doc = $lit:literal])*
117+
#[clippy::version = $version:literal]
118+
pub $lint_name:ident,
119+
nursery,
120+
$desc:literal
121+
) => {
122+
declare_clippy_lint! {@
123+
$(#[doc = $lit])*
124+
pub $lint_name,Allow, crate::LintCategory::Nursery,$desc,
125+
declare_clippy_lint!(__version = $version), $version
126+
}
127+
};
128+
(
129+
$(#[doc = $lit:literal])*
130+
#[clippy::version = $version:literal]
131+
pub $lint_name:ident,
132+
pedantic,
133+
$desc:literal
134+
) => {
135+
declare_clippy_lint! {@
136+
$(#[doc = $lit])*
137+
pub $lint_name,Allow, crate::LintCategory::Pedantic,$desc,
138+
declare_clippy_lint!(__version = $version), $version
139+
}
140+
};
141+
(
142+
$(#[doc = $lit:literal])*
143+
#[clippy::version = $version:literal]
144+
pub $lint_name:ident,
145+
cargo,
146+
$desc:literal
147+
) => {
148+
declare_clippy_lint! {@
149+
$(#[doc = $lit])*
150+
pub $lint_name,Allow, crate::LintCategory::Cargo,$desc,
151+
declare_clippy_lint!(__version = $version), $version
152+
}
153+
};
154+
155+
(
156+
$(#[doc = $lit:literal])*
157+
$(#[clippy::version = $version:literal])?
158+
pub $lint_name:ident,
159+
internal,
160+
$desc:literal
161+
) => {
162+
declare_clippy_lint! {@
163+
$(#[doc = $lit])*
164+
pub $lint_name,Allow, crate::LintCategory::Internal,$desc,
165+
declare_clippy_lint!(__version = $($version)?), "0.0.0"
166+
}
167+
};
168+
169+
// VERSION HANDLING
170+
(__version = ) => {
171+
None
172+
};
173+
(__version = $version:literal) => {
174+
Some($version)
175+
};
176+
}

clippy_utils/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ pub mod attrs;
5858
mod check_proc_macro;
5959
pub mod comparisons;
6060
pub mod consts;
61+
pub mod declare_clippy_lint;
6162
pub mod diagnostics;
6263
pub mod eager_or_lazy;
6364
pub mod higher;
@@ -130,6 +131,9 @@ use crate::higher::Range;
130131
use crate::ty::{adt_and_variant_of_res, can_partially_move_ty, expr_sig, is_copy, is_recursively_primitive_type};
131132
use crate::visitors::for_each_expr_without_closures;
132133

134+
#[doc(hidden)]
135+
pub use paste;
136+
133137
use rustc_middle::hir::nested_filter;
134138

135139
#[macro_export]

declare_clippy_lint/Cargo.toml

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)