|
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