let region_lb = ty::re_scope(expr.id);
instantiate_path(fcx, pth, tpt, expr.span, expr.id, region_lb);
}
- ast::expr_inline_asm(*) => {
+ ast::expr_inline_asm(*) => {
fcx.require_unsafe(expr.span, ~"use of inline assembly");
fcx.write_nil(id);
}
expr_again(Option<ident>),
expr_ret(Option<@expr>),
expr_log(log_level, @expr, @expr),
-
+
/* asm, clobbers + constraints, volatile */
expr_inline_asm(@~str, @~str, bool),
let mut state = Asm;
loop outer: {
-
match state {
Asm => {
asm = expr_to_str(cx, p.parse_expr(),
while *p.token != token::EOF &&
*p.token != token::COLON &&
*p.token != token::MOD_SEP {
-
+
if outputs.len() != 0 {
p.eat(&token::COMMA);
}
-
+
let constraint = p.parse_str();
p.expect(&token::LPAREN);
let out = p.parse_expr();
while *p.token != token::EOF &&
*p.token != token::COLON &&
*p.token != token::MOD_SEP {
-
+
if inputs.len() != 0 {
p.eat(&token::COMMA);
}
-
+
let constraint = p.parse_str();
p.expect(&token::LPAREN);
let in = p.parse_expr();
while *p.token != token::EOF &&
*p.token != token::COLON &&
*p.token != token::MOD_SEP {
-
+
if clobs.len() != 0 {
p.eat(&token::COMMA);
}
-
+
let clob = ~"~{" + *p.parse_str() + ~"}";
clobs.push(clob);
}
}
Options => {
let option = *p.parse_str();
-
+
if option == ~"volatile" {
volatile = true;
}
} else if *p.token == token::EOF {
break outer;
} else {
- state
+ state
};
}
}