Skip to content

Commit 7fbe95f

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

File tree

7 files changed

+179
-201
lines changed

7 files changed

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

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)