|  | 
| 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