@@ -12,6 +12,7 @@ use std::ops::Range;
12
12
use std:: path:: Path ;
13
13
use toml_edit:: ImDocument ;
14
14
15
+ const LINT_GROUPS : & [ LintGroup ] = & [ TEST_DUMMY_UNSTABLE ] ;
15
16
const LINTS : & [ Lint ] = & [ IM_A_TEAPOT , IMPLICIT_FEATURES , UNUSED_OPTIONAL_DEPENDENCY ] ;
16
17
17
18
pub fn verify_lints (
@@ -33,11 +34,20 @@ pub fn verify_lints(
33
34
. keys ( )
34
35
. chain ( ws_lints. map ( |l| l. keys ( ) ) . unwrap_or_default ( ) )
35
36
{
36
- if let Some ( lint) = LINTS . iter ( ) . find ( |l| l. name == lint_name) {
37
- let ( _, reason) = lint. level ( pkg_lints, ws_lints, manifest. edition ( ) ) ;
38
- if let Some ( feature_gate) = lint. feature_gate {
37
+ if let Some ( ( name, default_level, edition_lint_opts, feature_gate) ) =
38
+ find_lint_or_group ( lint_name)
39
+ {
40
+ let ( _, reason, _) = level_priority (
41
+ name,
42
+ * default_level,
43
+ * edition_lint_opts,
44
+ pkg_lints,
45
+ ws_lints,
46
+ manifest. edition ( ) ,
47
+ ) ;
48
+ if let Some ( feature_gate) = feature_gate {
39
49
feature_gated_lint (
40
- lint . name ,
50
+ name,
41
51
feature_gate,
42
52
reason,
43
53
manifest,
@@ -60,6 +70,33 @@ pub fn verify_lints(
60
70
}
61
71
}
62
72
73
+ fn find_lint_or_group < ' a > (
74
+ name : & str ,
75
+ ) -> Option < (
76
+ & ' static str ,
77
+ & LintLevel ,
78
+ & Option < ( Edition , LintLevel ) > ,
79
+ & Option < & ' static Feature > ,
80
+ ) > {
81
+ if let Some ( lint) = LINTS . iter ( ) . find ( |l| l. name == name) {
82
+ Some ( (
83
+ lint. name ,
84
+ & lint. default_level ,
85
+ & lint. edition_lint_opts ,
86
+ & lint. feature_gate ,
87
+ ) )
88
+ } else if let Some ( group) = LINT_GROUPS . iter ( ) . find ( |g| g. name == name) {
89
+ Some ( (
90
+ group. name ,
91
+ & group. default_level ,
92
+ & group. edition_lint_opts ,
93
+ & group. feature_gate ,
94
+ ) )
95
+ } else {
96
+ None
97
+ }
98
+ }
99
+
63
100
fn feature_gated_lint (
64
101
lint_name : & str ,
65
102
feature_gate : & Feature ,
0 commit comments