|
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