@@ -14,7 +14,7 @@ use rustc_middle::lint::{
14
14
COMMAND_LINE ,
15
15
} ;
16
16
use rustc_middle:: ty:: query:: Providers ;
17
- use rustc_middle:: ty:: TyCtxt ;
17
+ use rustc_middle:: ty:: { RegisteredTools , TyCtxt } ;
18
18
use rustc_session:: lint:: {
19
19
builtin:: { self , FORBIDDEN_LINT_GROUPS } ,
20
20
Level , Lint , LintId ,
@@ -27,8 +27,8 @@ use tracing::debug;
27
27
28
28
fn lint_levels ( tcx : TyCtxt < ' _ > , ( ) : ( ) ) -> LintLevelMap {
29
29
let store = unerased_lint_store ( tcx) ;
30
- let crate_attrs = tcx . hir ( ) . attrs ( CRATE_HIR_ID ) ;
31
- let levels = LintLevelsBuilder :: new ( tcx. sess , false , & store, crate_attrs ) ;
30
+ let levels =
31
+ LintLevelsBuilder :: new ( tcx. sess , false , & store, & tcx . resolutions ( ( ) ) . registered_tools ) ;
32
32
let mut builder = LintLevelMapBuilder { levels, tcx } ;
33
33
let krate = tcx. hir ( ) . krate ( ) ;
34
34
@@ -49,7 +49,7 @@ pub struct LintLevelsBuilder<'s> {
49
49
cur : LintStackIndex ,
50
50
warn_about_weird_lints : bool ,
51
51
store : & ' s LintStore ,
52
- crate_attrs : & ' s [ ast :: Attribute ] ,
52
+ registered_tools : & ' s RegisteredTools ,
53
53
}
54
54
55
55
pub struct BuilderPush {
@@ -62,7 +62,7 @@ impl<'s> LintLevelsBuilder<'s> {
62
62
sess : & ' s Session ,
63
63
warn_about_weird_lints : bool ,
64
64
store : & ' s LintStore ,
65
- crate_attrs : & ' s [ ast :: Attribute ] ,
65
+ registered_tools : & ' s RegisteredTools ,
66
66
) -> Self {
67
67
let mut builder = LintLevelsBuilder {
68
68
sess,
@@ -71,7 +71,7 @@ impl<'s> LintLevelsBuilder<'s> {
71
71
id_to_set : Default :: default ( ) ,
72
72
warn_about_weird_lints,
73
73
store,
74
- crate_attrs ,
74
+ registered_tools ,
75
75
} ;
76
76
builder. process_command_line ( sess, store) ;
77
77
assert_eq ! ( builder. sets. list. len( ) , 1 ) ;
@@ -91,7 +91,7 @@ impl<'s> LintLevelsBuilder<'s> {
91
91
self . sets . lint_cap = sess. opts . lint_cap . unwrap_or ( Level :: Forbid ) ;
92
92
93
93
for & ( ref lint_name, level) in & sess. opts . lint_opts {
94
- store. check_lint_name_cmdline ( sess, & lint_name, level, self . crate_attrs ) ;
94
+ store. check_lint_name_cmdline ( sess, & lint_name, level, self . registered_tools ) ;
95
95
let orig_level = level;
96
96
let lint_flag_val = Symbol :: intern ( lint_name) ;
97
97
@@ -314,7 +314,7 @@ impl<'s> LintLevelsBuilder<'s> {
314
314
let tool_name = tool_ident. map ( |ident| ident. name ) ;
315
315
let name = pprust:: path_to_string ( & meta_item. path ) ;
316
316
let lint_result =
317
- self . store . check_lint_name ( sess , & name, tool_name, self . crate_attrs ) ;
317
+ self . store . check_lint_name ( & name, tool_name, self . registered_tools ) ;
318
318
match & lint_result {
319
319
CheckLintNameResult :: Ok ( ids) => {
320
320
let src = LintLevelSource :: Node (
@@ -463,7 +463,7 @@ impl<'s> LintLevelsBuilder<'s> {
463
463
// Ignore any errors or warnings that happen because the new name is inaccurate
464
464
// NOTE: `new_name` already includes the tool name, so we don't have to add it again.
465
465
if let CheckLintNameResult :: Ok ( ids) =
466
- self . store . check_lint_name ( sess , & new_name, None , self . crate_attrs )
466
+ self . store . check_lint_name ( & new_name, None , self . registered_tools )
467
467
{
468
468
let src = LintLevelSource :: Node ( Symbol :: intern ( & new_name) , sp, reason) ;
469
469
for & id in ids {
@@ -566,20 +566,6 @@ impl<'s> LintLevelsBuilder<'s> {
566
566
}
567
567
}
568
568
569
- pub fn is_known_lint_tool ( m_item : Symbol , sess : & Session , attrs : & [ ast:: Attribute ] ) -> bool {
570
- if [ sym:: clippy, sym:: rustc, sym:: rustdoc] . contains ( & m_item) {
571
- return true ;
572
- }
573
- // Look for registered tools
574
- // NOTE: does no error handling; error handling is done by rustc_resolve.
575
- sess. filter_by_name ( attrs, sym:: register_tool)
576
- . filter_map ( |attr| attr. meta_item_list ( ) )
577
- . flatten ( )
578
- . filter_map ( |nested_meta| nested_meta. ident ( ) )
579
- . map ( |ident| ident. name )
580
- . any ( |name| name == m_item)
581
- }
582
-
583
569
struct LintLevelMapBuilder < ' tcx > {
584
570
levels : LintLevelsBuilder < ' tcx > ,
585
571
tcx : TyCtxt < ' tcx > ,
0 commit comments