@@ -112,47 +112,32 @@ fn fast_print_path(path: &ast::Path) -> Symbol {
112112 }
113113}
114114
115- /// The code common between processing `#![register_tool]` and `#![register_attr]`.
116- fn registered_idents (
117- sess : & Session ,
118- attrs : & [ ast:: Attribute ] ,
119- attr_name : Symbol ,
120- descr : & str ,
121- ) -> FxHashSet < Ident > {
122- let mut registered = FxHashSet :: default ( ) ;
123- for attr in sess. filter_by_name ( attrs, attr_name) {
115+ pub ( crate ) fn registered_tools ( sess : & Session , attrs : & [ ast:: Attribute ] ) -> FxHashSet < Ident > {
116+ let mut registered_tools = FxHashSet :: default ( ) ;
117+ for attr in sess. filter_by_name ( attrs, sym:: register_tool) {
124118 for nested_meta in attr. meta_item_list ( ) . unwrap_or_default ( ) {
125119 match nested_meta. ident ( ) {
126120 Some ( ident) => {
127- if let Some ( old_ident) = registered . replace ( ident) {
128- let msg = format ! ( "{} `{}` was already registered" , descr , ident) ;
121+ if let Some ( old_ident) = registered_tools . replace ( ident) {
122+ let msg = format ! ( "{} `{}` was already registered" , "tool" , ident) ;
129123 sess. struct_span_err ( ident. span , & msg)
130124 . span_label ( old_ident. span , "already registered here" )
131125 . emit ( ) ;
132126 }
133127 }
134128 None => {
135- let msg = format ! ( "`{}` only accepts identifiers" , attr_name ) ;
129+ let msg = format ! ( "`{}` only accepts identifiers" , sym :: register_tool ) ;
136130 let span = nested_meta. span ( ) ;
137131 sess. struct_span_err ( span, & msg) . span_label ( span, "not an identifier" ) . emit ( ) ;
138132 }
139133 }
140134 }
141135 }
142- registered
143- }
144-
145- pub ( crate ) fn registered_attrs_and_tools (
146- sess : & Session ,
147- attrs : & [ ast:: Attribute ] ,
148- ) -> ( FxHashSet < Ident > , FxHashSet < Ident > ) {
149- let registered_attrs = registered_idents ( sess, attrs, sym:: register_attr, "attribute" ) ;
150- let mut registered_tools = registered_idents ( sess, attrs, sym:: register_tool, "tool" ) ;
151136 // We implicitly add `rustfmt` and `clippy` to known tools,
152137 // but it's not an error to register them explicitly.
153138 let predefined_tools = [ sym:: clippy, sym:: rustfmt] ;
154139 registered_tools. extend ( predefined_tools. iter ( ) . cloned ( ) . map ( Ident :: with_dummy_span) ) ;
155- ( registered_attrs , registered_tools)
140+ registered_tools
156141}
157142
158143// Some feature gates for inner attributes are reported as lints for backward compatibility.
0 commit comments