Resolved #56 -- mut was eaten out of mut self in fn args.

This commit is contained in:
defyrlt 2015-05-01 14:08:22 +03:00 committed by Matthew Hall
parent 47b29abd92
commit 59554dd5e1
2 changed files with 22 additions and 1 deletions

View File

@ -164,7 +164,22 @@ fn rewrite_args(&self,
arg_item_strs[0] = format!("self: {}", pprust::ty_to_string(ty));
}
ast::ExplicitSelf_::SelfValue(_) => {
arg_item_strs[0] = "self".to_owned();
assert!(args.len() >= 1, "&[ast::Arg] shouldn't be empty.");
// this hacky solution caused by absence of `Mutability` in `SelfValue`.
let mut_str = {
if let ast::Pat_::PatIdent(ast::BindingMode::BindByValue(mutability), _, _)
= args[0].pat.node {
match mutability {
ast::Mutability::MutMutable => "mut ",
ast::Mutability::MutImmutable => "",
}
} else {
panic!("there is a bug or change in structure of AST, aborting.");
}
};
arg_item_strs[0] = format!("{}self", mut_str);
min_args = 2;
}
_ => {}

View File

@ -39,6 +39,12 @@ fn with_no_errors<T, F>(&mut self, f: F) -> T
where F: FnOnce(&mut Resolver) -> T
{
}
fn foo(mut self, mut bar: u32) {
}
fn bar(self, mut bazz: u32) {
}
}
pub fn render<'a,