auto merge of #13713 : edwardw/rust/methodcall-span, r=alexcrichton

Specifically, the method parameter cardinality mismatch or missing
method error message span now gets method itself exactly. It was the
whole expression.

Closes #9390
Closes #13684
Closes #13709
This commit is contained in:
bors 2014-04-24 07:06:26 -07:00
commit 70647ccc6d
9 changed files with 53 additions and 17 deletions

View file

@ -1646,7 +1646,11 @@ impl<'a> Parser<'a> {
ExprCall(f, args)
}
fn mk_method_call(&mut self, ident: Ident, tps: Vec<P<Ty>> , args: Vec<@Expr> ) -> ast::Expr_ {
fn mk_method_call(&mut self,
ident: ast::SpannedIdent,
tps: Vec<P<Ty>>,
args: Vec<@Expr>)
-> ast::Expr_ {
ExprMethodCall(ident, tps, args)
}
@ -1919,6 +1923,7 @@ impl<'a> Parser<'a> {
if self.eat(&token::DOT) {
match self.token {
token::IDENT(i, _) => {
let dot = self.last_span.hi;
hi = self.span.hi;
self.bump();
let (_, tys) = if self.eat(&token::MOD_SEP) {
@ -1940,7 +1945,8 @@ impl<'a> Parser<'a> {
hi = self.last_span.hi;
es.unshift(e);
let nd = self.mk_method_call(i, tys, es);
let id = spanned(dot, hi, i);
let nd = self.mk_method_call(id, tys, es);
e = self.mk_expr(lo, hi, nd);
}
_ => {