Skip to content

Commit 7f27f35

Browse files
committed
Unify walk_inline_asm
1 parent 1011fcc commit 7f27f35

File tree

1 file changed

+41
-63
lines changed

1 file changed

+41
-63
lines changed

compiler/rustc_ast/src/visitors.rs

Lines changed: 41 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,47 @@ macro_rules! make_ast_visitor {
538538
return_result!(V)
539539
}
540540

541+
pub fn walk_inline_asm<$($lt,)? V: $trait$(<$lt>)?>(
542+
vis: &mut V,
543+
asm: ref_t!(InlineAsm)
544+
) -> result!(V) {
545+
// FIXME: Visit spans inside all this currently ignored stuff.
546+
let InlineAsm {
547+
asm_macro: _,
548+
template: _,
549+
template_strs: _,
550+
operands,
551+
clobber_abis: _,
552+
options: _,
553+
line_spans: _,
554+
} = asm;
555+
for (op, span) in operands {
556+
match op {
557+
InlineAsmOperand::In { expr, reg: _ }
558+
| InlineAsmOperand::Out { expr: Some(expr), reg: _, late: _ }
559+
| InlineAsmOperand::InOut { expr, reg: _, late: _ } => {
560+
try_v!(vis.visit_expr(expr));
561+
}
562+
InlineAsmOperand::Out { expr: None, reg: _, late: _ } => {}
563+
InlineAsmOperand::SplitInOut { in_expr, out_expr, reg: _, late: _ } => {
564+
try_v!(vis.visit_expr(in_expr));
565+
visit_o!(out_expr, |out_expr| vis.visit_expr(out_expr));
566+
}
567+
InlineAsmOperand::Const { anon_const } => {
568+
try_v!(vis.visit_anon_const(anon_const));
569+
}
570+
InlineAsmOperand::Sym { sym } => {
571+
try_v!(vis.visit_inline_asm_sym(sym));
572+
}
573+
InlineAsmOperand::Label { block } => {
574+
try_v!(vis.visit_block(block));
575+
}
576+
}
577+
try_v!(visit_span!(vis, span));
578+
}
579+
return_result!(V)
580+
}
581+
541582
pub fn walk_label<$($lt,)? V: $trait$(<$lt>)?>(
542583
vis: &mut V,
543584
label: ref_t!(Label)
@@ -1339,38 +1380,6 @@ pub mod visit {
13391380
visitor.visit_path(path, DUMMY_NODE_ID)
13401381
}
13411382

1342-
pub fn walk_inline_asm<'a, V: Visitor<'a>>(visitor: &mut V, asm: &'a InlineAsm) -> V::Result {
1343-
let InlineAsm {
1344-
asm_macro: _,
1345-
template: _,
1346-
template_strs: _,
1347-
operands,
1348-
clobber_abis: _,
1349-
options: _,
1350-
line_spans: _,
1351-
} = asm;
1352-
for (op, _span) in operands {
1353-
match op {
1354-
InlineAsmOperand::In { expr, reg: _ }
1355-
| InlineAsmOperand::Out { expr: Some(expr), reg: _, late: _ }
1356-
| InlineAsmOperand::InOut { expr, reg: _, late: _ } => {
1357-
try_visit!(visitor.visit_expr(expr))
1358-
}
1359-
InlineAsmOperand::Out { expr: None, reg: _, late: _ } => {}
1360-
InlineAsmOperand::SplitInOut { in_expr, out_expr, reg: _, late: _ } => {
1361-
try_visit!(visitor.visit_expr(in_expr));
1362-
visit_opt!(visitor, visit_expr, out_expr);
1363-
}
1364-
InlineAsmOperand::Const { anon_const } => {
1365-
try_visit!(visitor.visit_anon_const(anon_const))
1366-
}
1367-
InlineAsmOperand::Sym { sym } => try_visit!(visitor.visit_inline_asm_sym(sym)),
1368-
InlineAsmOperand::Label { block } => try_visit!(visitor.visit_block(block)),
1369-
}
1370-
}
1371-
V::Result::output()
1372-
}
1373-
13741383
pub fn walk_inline_asm_sym<'a, V: Visitor<'a>>(
13751384
visitor: &mut V,
13761385
InlineAsmSym { id, qself, path }: &'a InlineAsmSym,
@@ -2522,37 +2531,6 @@ pub mod mut_visit {
25222531
vis.visit_span(span);
25232532
}
25242533

2525-
fn walk_inline_asm<T: MutVisitor>(vis: &mut T, asm: &mut InlineAsm) {
2526-
// FIXME: Visit spans inside all this currently ignored stuff.
2527-
let InlineAsm {
2528-
asm_macro: _,
2529-
template: _,
2530-
template_strs: _,
2531-
operands,
2532-
clobber_abis: _,
2533-
options: _,
2534-
line_spans: _,
2535-
} = asm;
2536-
for (op, span) in operands {
2537-
match op {
2538-
InlineAsmOperand::In { expr, reg: _ }
2539-
| InlineAsmOperand::Out { expr: Some(expr), reg: _, late: _ }
2540-
| InlineAsmOperand::InOut { expr, reg: _, late: _ } => vis.visit_expr(expr),
2541-
InlineAsmOperand::Out { expr: None, reg: _, late: _ } => {}
2542-
InlineAsmOperand::SplitInOut { in_expr, out_expr, reg: _, late: _ } => {
2543-
vis.visit_expr(in_expr);
2544-
if let Some(out_expr) = out_expr {
2545-
vis.visit_expr(out_expr);
2546-
}
2547-
}
2548-
InlineAsmOperand::Const { anon_const } => vis.visit_anon_const(anon_const),
2549-
InlineAsmOperand::Sym { sym } => vis.visit_inline_asm_sym(sym),
2550-
InlineAsmOperand::Label { block } => vis.visit_block(block),
2551-
}
2552-
vis.visit_span(span);
2553-
}
2554-
}
2555-
25562534
fn walk_inline_asm_sym<T: MutVisitor>(
25572535
vis: &mut T,
25582536
InlineAsmSym { id, qself, path }: &mut InlineAsmSym,

0 commit comments

Comments
 (0)