@@ -14,7 +14,7 @@ use rustc_middle::lint::{
1414 COMMAND_LINE ,
1515} ;
1616use rustc_middle:: ty:: query:: Providers ;
17- use rustc_middle:: ty:: TyCtxt ;
17+ use rustc_middle:: ty:: { RegisteredTools , TyCtxt } ;
1818use rustc_session:: lint:: {
1919 builtin:: { self , FORBIDDEN_LINT_GROUPS } ,
2020 Level , Lint , LintId ,
@@ -27,8 +27,8 @@ use tracing::debug;
2727
2828fn lint_levels ( tcx : TyCtxt < ' _ > , ( ) : ( ) ) -> LintLevelMap {
2929 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 ) ;
3232 let mut builder = LintLevelMapBuilder { levels, tcx } ;
3333 let krate = tcx. hir ( ) . krate ( ) ;
3434
@@ -49,7 +49,7 @@ pub struct LintLevelsBuilder<'s> {
4949 cur : LintStackIndex ,
5050 warn_about_weird_lints : bool ,
5151 store : & ' s LintStore ,
52- crate_attrs : & ' s [ ast :: Attribute ] ,
52+ registered_tools : & ' s RegisteredTools ,
5353}
5454
5555pub struct BuilderPush {
@@ -62,7 +62,7 @@ impl<'s> LintLevelsBuilder<'s> {
6262 sess : & ' s Session ,
6363 warn_about_weird_lints : bool ,
6464 store : & ' s LintStore ,
65- crate_attrs : & ' s [ ast :: Attribute ] ,
65+ registered_tools : & ' s RegisteredTools ,
6666 ) -> Self {
6767 let mut builder = LintLevelsBuilder {
6868 sess,
@@ -71,7 +71,7 @@ impl<'s> LintLevelsBuilder<'s> {
7171 id_to_set : Default :: default ( ) ,
7272 warn_about_weird_lints,
7373 store,
74- crate_attrs ,
74+ registered_tools ,
7575 } ;
7676 builder. process_command_line ( sess, store) ;
7777 assert_eq ! ( builder. sets. list. len( ) , 1 ) ;
@@ -91,7 +91,7 @@ impl<'s> LintLevelsBuilder<'s> {
9191 self . sets . lint_cap = sess. opts . lint_cap . unwrap_or ( Level :: Forbid ) ;
9292
9393 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 ) ;
9595 let orig_level = level;
9696 let lint_flag_val = Symbol :: intern ( lint_name) ;
9797
@@ -314,7 +314,7 @@ impl<'s> LintLevelsBuilder<'s> {
314314 let tool_name = tool_ident. map ( |ident| ident. name ) ;
315315 let name = pprust:: path_to_string ( & meta_item. path ) ;
316316 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 ) ;
318318 match & lint_result {
319319 CheckLintNameResult :: Ok ( ids) => {
320320 let src = LintLevelSource :: Node (
@@ -463,7 +463,7 @@ impl<'s> LintLevelsBuilder<'s> {
463463 // Ignore any errors or warnings that happen because the new name is inaccurate
464464 // NOTE: `new_name` already includes the tool name, so we don't have to add it again.
465465 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 )
467467 {
468468 let src = LintLevelSource :: Node ( Symbol :: intern ( & new_name) , sp, reason) ;
469469 for & id in ids {
@@ -566,20 +566,6 @@ impl<'s> LintLevelsBuilder<'s> {
566566 }
567567}
568568
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-
583569struct LintLevelMapBuilder < ' tcx > {
584570 levels : LintLevelsBuilder < ' tcx > ,
585571 tcx : TyCtxt < ' tcx > ,
0 commit comments