1
Fork 0

libsyntax: De-mut the parser. rs=demuting

This commit is contained in:
Patrick Walton 2013-02-21 18:12:13 -08:00
parent 77dc3ad810
commit 934c938f90
10 changed files with 332 additions and 333 deletions

View file

@ -49,6 +49,9 @@ pub trait gen_init {
pub impl gen_send for message {
fn gen_send(&mut self, cx: ext_ctxt, try: bool) -> @ast::item {
debug!("pipec: gen_send");
let name = self.name();
let params = self.get_params();
match *self {
message(ref _id, span, ref tys, this, Some(ref next_state)) => {
debug!("pipec: next state exists");
@ -67,7 +70,7 @@ pub impl gen_send for message {
args_ast);
let mut body = ~"{\n";
body += fmt!("use super::%s;\n", self.name());
body += fmt!("use super::%s;\n", name);
if this.proto.is_bounded() {
let (sp, rp) = match (this.dir, next.dir) {
@ -96,7 +99,7 @@ pub impl gen_send for message {
body += fmt!("let %s = ::core::pipes::entangle();\n", pat);
}
body += fmt!("let message = %s(%s);\n",
self.name(),
name,
str::connect(vec::append_one(
arg_names.map(|x| cx.str_of(*x)),
~"s"), ~", "));
@ -121,13 +124,12 @@ pub impl gen_send for message {
rty = cx.ty_option(rty);
}
let name = cx.ident_of(if try { ~"try_" + self.name()
} else { self.name() } );
let name = cx.ident_of(if try { ~"try_" + name } else { name } );
cx.item_fn_poly(name,
args_ast,
rty,
self.get_params(),
params,
cx.expr_block(body))
}
@ -156,10 +158,8 @@ pub impl gen_send for message {
};
let mut body = ~"{ ";
body += fmt!("use super::%s;\n", self.name());
body += fmt!("let message = %s%s;\n",
self.name(),
message_args);
body += fmt!("use super::%s;\n", name);
body += fmt!("let message = %s%s;\n", name, message_args);
if !try {
body += fmt!("::core::pipes::send(pipe, message);\n");
@ -175,10 +175,7 @@ pub impl gen_send for message {
let body = cx.parse_expr(body);
let name = if try {
~"try_" + self.name()
}
else { self.name() };
let name = if try { ~"try_" + name } else { name };
cx.item_fn_poly(cx.ident_of(name),
args_ast,
@ -187,7 +184,7 @@ pub impl gen_send for message {
} else {
cx.ty_nil_ast_builder()
},
self.get_params(),
params,
cx.expr_block(body))
}
}