Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit c53bbd4

Browse files
committedApr 30, 2025··
attempt to have rustfmt use the new logic
apparently it doesn't really use the asm parsing at present, so this may work?
1 parent 7935e87 commit c53bbd4

File tree

2 files changed

+11
-17
lines changed
  • compiler/rustc_builtin_macros/src
  • src/tools/rustfmt/src/parse/macros

2 files changed

+11
-17
lines changed
 

‎compiler/rustc_builtin_macros/src/asm.rs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub enum RawAsmArgKind {
3333
}
3434

3535
/// Validated assembly arguments, ready for macro expansion.
36-
pub struct AsmArgs {
36+
struct AsmArgs {
3737
pub templates: Vec<P<ast::Expr>>,
3838
pub operands: Vec<(ast::InlineAsmOperand, Span)>,
3939
named_args: FxIndexMap<Symbol, usize>,
@@ -144,6 +144,7 @@ fn parse_asm_operand<'a>(
144144
}))
145145
}
146146

147+
// Public for rustfmt
147148
pub fn parse_raw_asm_args<'a>(
148149
p: &mut Parser<'a>,
149150
sp: Span,
@@ -259,21 +260,11 @@ fn parse_args<'a>(
259260
asm_macro: AsmMacro,
260261
) -> PResult<'a, AsmArgs> {
261262
let mut p = ecx.new_parser_from_tts(tts);
262-
parse_asm_args(&mut p, sp, asm_macro)
263+
let raw_args = parse_raw_asm_args(&mut p, sp, asm_macro)?;
264+
validate_raw_asm_args(ecx.dcx(), asm_macro, raw_args)
263265
}
264266

265-
// public for use in rustfmt
266-
// FIXME: use `RawAsmArg` in the formatting code instead.
267-
pub fn parse_asm_args<'a>(
268-
p: &mut Parser<'a>,
269-
sp: Span,
270-
asm_macro: AsmMacro,
271-
) -> PResult<'a, AsmArgs> {
272-
let raw_args = parse_raw_asm_args(p, sp, asm_macro)?;
273-
validate_raw_asm_args(p.dcx(), asm_macro, raw_args)
274-
}
275-
276-
pub fn validate_raw_asm_args<'a>(
267+
fn validate_raw_asm_args<'a>(
277268
dcx: DiagCtxtHandle<'a>,
278269
asm_macro: AsmMacro,
279270
raw_args: Vec<RawAsmArg>,
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
use rustc_ast::ast;
2-
use rustc_builtin_macros::asm::{AsmArgs, parse_asm_args};
2+
use rustc_builtin_macros::asm::{RawAsmArg, parse_raw_asm_args};
33

44
use crate::rewrite::RewriteContext;
55

66
#[allow(dead_code)]
7-
pub(crate) fn parse_asm(context: &RewriteContext<'_>, mac: &ast::MacCall) -> Option<AsmArgs> {
7+
pub(crate) fn parse_asm(
8+
context: &RewriteContext<'_>,
9+
mac: &ast::MacCall,
10+
) -> Option<Vec<RawAsmArg>> {
811
let ts = mac.args.tokens.clone();
912
let mut parser = super::build_parser(context, ts);
10-
parse_asm_args(&mut parser, mac.span(), ast::AsmMacro::Asm).ok()
13+
parse_raw_asm_args(&mut parser, mac.span(), ast::AsmMacro::Asm).ok()
1114
}

0 commit comments

Comments
 (0)
Please sign in to comment.