| 
1 | 1 | //! Meta-syntax validation logic of attributes for post-expansion.  | 
2 | 2 | 
  | 
 | 3 | +use std::slice;  | 
 | 4 | + | 
3 | 5 | use rustc_ast::token::Delimiter;  | 
4 | 6 | use rustc_ast::tokenstream::DelimSpan;  | 
5 | 7 | use rustc_ast::{  | 
6 | 8 |     self as ast, AttrArgs, Attribute, DelimArgs, MetaItem, MetaItemInner, MetaItemKind, NodeId,  | 
7 | 9 |     Path, Safety,  | 
8 | 10 | };  | 
 | 11 | +use rustc_attr_parsing::{AttributeParser, Late};  | 
9 | 12 | use rustc_errors::{Applicability, DiagCtxtHandle, FatalError, PResult};  | 
10 | 13 | use rustc_feature::{AttributeSafety, AttributeTemplate, BUILTIN_ATTRIBUTE_MAP, BuiltinAttribute};  | 
11 | 14 | use rustc_session::errors::report_lit_error;  | 
@@ -266,67 +269,7 @@ pub fn check_builtin_meta_item(  | 
266 | 269 | ) {  | 
267 | 270 |     if !is_attr_template_compatible(&template, &meta.kind) {  | 
268 | 271 |         // attrs with new parsers are locally validated so excluded here  | 
269 |  | -        if matches!(  | 
270 |  | -            name,  | 
271 |  | -            sym::inline  | 
272 |  | -                | sym::export_stable  | 
273 |  | -                | sym::ffi_const  | 
274 |  | -                | sym::ffi_pure  | 
275 |  | -                | sym::rustc_std_internal_symbol  | 
276 |  | -                | sym::may_dangle  | 
277 |  | -                | sym::rustc_as_ptr  | 
278 |  | -                | sym::rustc_pub_transparent  | 
279 |  | -                | sym::rustc_const_stable_indirect  | 
280 |  | -                | sym::rustc_force_inline  | 
281 |  | -                | sym::rustc_confusables  | 
282 |  | -                | sym::rustc_skip_during_method_dispatch  | 
283 |  | -                | sym::rustc_pass_by_value  | 
284 |  | -                | sym::rustc_deny_explicit_impl  | 
285 |  | -                | sym::rustc_do_not_implement_via_object  | 
286 |  | -                | sym::rustc_coinductive  | 
287 |  | -                | sym::const_trait  | 
288 |  | -                | sym::stable  | 
289 |  | -                | sym::unstable  | 
290 |  | -                | sym::rustc_allowed_through_unstable_modules  | 
291 |  | -                | sym::rustc_specialization_trait  | 
292 |  | -                | sym::rustc_unsafe_specialization_marker  | 
293 |  | -                | sym::rustc_allow_incoherent_impl  | 
294 |  | -                | sym::rustc_coherence_is_core  | 
295 |  | -                | sym::marker  | 
296 |  | -                | sym::fundamental  | 
297 |  | -                | sym::rustc_paren_sugar  | 
298 |  | -                | sym::type_const  | 
299 |  | -                | sym::repr  | 
300 |  | -                // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres  | 
301 |  | -                // ambiguity  | 
302 |  | -                | sym::rustc_align  | 
303 |  | -                | sym::deprecated  | 
304 |  | -                | sym::optimize  | 
305 |  | -                | sym::pointee  | 
306 |  | -                | sym::cold  | 
307 |  | -                | sym::target_feature  | 
308 |  | -                | sym::rustc_allow_const_fn_unstable  | 
309 |  | -                | sym::macro_use  | 
310 |  | -                | sym::macro_escape  | 
311 |  | -                | sym::naked  | 
312 |  | -                | sym::no_mangle  | 
313 |  | -                | sym::non_exhaustive  | 
314 |  | -                | sym::omit_gdb_pretty_printer_section  | 
315 |  | -                | sym::path  | 
316 |  | -                | sym::ignore  | 
317 |  | -                | sym::must_use  | 
318 |  | -                | sym::track_caller  | 
319 |  | -                | sym::link_name  | 
320 |  | -                | sym::link_ordinal  | 
321 |  | -                | sym::export_name  | 
322 |  | -                | sym::rustc_macro_transparency  | 
323 |  | -                | sym::link_section  | 
324 |  | -                | sym::rustc_layout_scalar_valid_range_start  | 
325 |  | -                | sym::rustc_layout_scalar_valid_range_end  | 
326 |  | -                | sym::no_implicit_prelude  | 
327 |  | -                | sym::automatically_derived  | 
328 |  | -                | sym::coverage  | 
329 |  | -        ) {  | 
 | 272 | +        if AttributeParser::<Late>::is_parsed_attribute(slice::from_ref(&name)) {  | 
330 | 273 |             return;  | 
331 | 274 |         }  | 
332 | 275 |         emit_malformed_attribute(psess, style, meta.span, name, template);  | 
 | 
0 commit comments