asm! parsing and lowering fixes

This commit is contained in:
Lukas Wirth 2024-09-05 15:06:37 +02:00
parent c075a9980e
commit f74a0c8801
10 changed files with 106 additions and 18 deletions

View file

@ -361,16 +361,20 @@ fn parse_asm_expr(p: &mut Parser<'_>, m: Marker) -> Option<CompletedMarker> {
if p.eat(T![in]) || p.eat_contextual_kw(T![out]) || p.eat_contextual_kw(T![lateout]) {
dir_spec.complete(p, ASM_DIR_SPEC);
parse_reg(p);
let op_expr = p.start();
expr(p);
op_expr.complete(p, ASM_OPERAND_EXPR);
op.complete(p, ASM_REG_OPERAND);
op_n.complete(p, ASM_OPERAND_NAMED);
} else if p.eat_contextual_kw(T![inout]) || p.eat_contextual_kw(T![inlateout]) {
dir_spec.complete(p, ASM_DIR_SPEC);
parse_reg(p);
let op_expr = p.start();
expr(p);
if p.eat(T![=>]) {
expr(p);
}
op_expr.complete(p, ASM_OPERAND_EXPR);
op.complete(p, ASM_REG_OPERAND);
op_n.complete(p, ASM_OPERAND_NAMED);
} else if p.eat_contextual_kw(T![label]) {

View file

@ -50,11 +50,12 @@ SOURCE_FILE
IDENT "reg"
R_PAREN ")"
WHITESPACE " "
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "x"
ASM_OPERAND_EXPR
PATH_EXPR
PATH
PATH_SEGMENT
NAME_REF
IDENT "x"
COMMA ","
WHITESPACE "\n "
ASM_OPERAND_NAMED
@ -72,8 +73,9 @@ SOURCE_FILE
IDENT "reg"
R_PAREN ")"
WHITESPACE " "
UNDERSCORE_EXPR
UNDERSCORE "_"
ASM_OPERAND_EXPR
UNDERSCORE_EXPR
UNDERSCORE "_"
COMMA ","
WHITESPACE "\n "
R_PAREN ")"