@@ -112,47 +112,32 @@ fn fast_print_path(path: &ast::Path) -> Symbol {
112
112
}
113
113
}
114
114
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) {
124
118
for nested_meta in attr. meta_item_list ( ) . unwrap_or_default ( ) {
125
119
match nested_meta. ident ( ) {
126
120
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) ;
129
123
sess. struct_span_err ( ident. span , & msg)
130
124
. span_label ( old_ident. span , "already registered here" )
131
125
. emit ( ) ;
132
126
}
133
127
}
134
128
None => {
135
- let msg = format ! ( "`{}` only accepts identifiers" , attr_name ) ;
129
+ let msg = format ! ( "`{}` only accepts identifiers" , sym :: register_tool ) ;
136
130
let span = nested_meta. span ( ) ;
137
131
sess. struct_span_err ( span, & msg) . span_label ( span, "not an identifier" ) . emit ( ) ;
138
132
}
139
133
}
140
134
}
141
135
}
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" ) ;
151
136
// We implicitly add `rustfmt` and `clippy` to known tools,
152
137
// but it's not an error to register them explicitly.
153
138
let predefined_tools = [ sym:: clippy, sym:: rustfmt] ;
154
139
registered_tools. extend ( predefined_tools. iter ( ) . cloned ( ) . map ( Ident :: with_dummy_span) ) ;
155
- ( registered_attrs , registered_tools)
140
+ registered_tools
156
141
}
157
142
158
143
// Some feature gates for inner attributes are reported as lints for backward compatibility.
0 commit comments