rewrite #[naked] parser

This commit is contained in:
Jana Dönszelmann
2025-06-13 01:36:52 +02:00
parent 22be76b7e2
commit 82cbc3a35e
10 changed files with 44 additions and 16 deletions

View File

@@ -51,12 +51,29 @@ impl<S: Stage> SingleAttributeParser<S> for ColdParser {
if !args.no_args() {
cx.expected_no_args(args.span().unwrap_or(cx.attr_span));
return None;
};
}
Some(AttributeKind::Cold(cx.attr_span))
}
}
pub(crate) struct NakedParser;
impl<S: Stage> SingleAttributeParser<S> for NakedParser {
const PATH: &[rustc_span::Symbol] = &[sym::naked];
const ATTRIBUTE_ORDER: AttributeOrder = AttributeOrder::KeepLast;
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn;
const TEMPLATE: AttributeTemplate = template!(Word);
fn convert(cx: &mut AcceptContext<'_, '_, S>, args: &ArgParser<'_>) -> Option<AttributeKind> {
if !args.no_args() {
cx.expected_no_args(args.span().unwrap_or(cx.attr_span));
return None;
}
Some(AttributeKind::Naked(cx.attr_span))
}
}
pub(crate) struct NoMangleParser;
impl<S: Stage> SingleAttributeParser<S> for NoMangleParser {

View File

@@ -15,7 +15,7 @@ use rustc_session::Session;
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span, Symbol, sym};
use crate::attributes::allow_unstable::{AllowConstFnUnstableParser, AllowInternalUnstableParser};
use crate::attributes::codegen_attrs::{ColdParser, NoMangleParser, OptimizeParser};
use crate::attributes::codegen_attrs::{ColdParser, NakedParser, NoMangleParser, OptimizeParser};
use crate::attributes::confusables::ConfusablesParser;
use crate::attributes::deprecation::DeprecationParser;
use crate::attributes::inline::{InlineParser, RustcForceInlineParser};
@@ -114,6 +114,7 @@ attribute_parsers!(
Single<InlineParser>,
Single<MayDangleParser>,
Single<MustUseParser>,
Single<NakedParser>,
Single<NoMangleParser>,
Single<OptimizeParser>,
Single<PubTransparentParser>,