Tweak chained comparison errors.

Lower case and give a more precise span: from operator to operator, not
just the last one.
This commit is contained in:
Huon Wilson 2015-01-13 15:18:55 +11:00
parent 2e888d0341
commit ec790d6fcc
3 changed files with 10 additions and 9 deletions

View File

@ -2882,12 +2882,13 @@ impl<'a> Parser<'a> {
debug_assert!(ast_util::is_comparison_binop(outer_op));
match lhs.node {
ExprBinary(op, _, _) if ast_util::is_comparison_binop(op.node) => {
let op_span = self.span;
// respan to include both operators
let op_span = mk_sp(op.span.lo, self.span.hi);
self.span_err(op_span,
"Chained comparison operators require parentheses");
"chained comparison operators require parentheses");
if op.node == BiLt && outer_op == BiGt {
self.span_help(op_span,
"use ::< instead of < if you meant to specify type arguments");
"use `::<...>` instead of `<...>` if you meant to specify type arguments");
}
}
_ => {}

View File

@ -12,12 +12,12 @@ fn f<T>() {}
fn main() {
false == false == false;
//~^ ERROR: Chained comparison operators require parentheses
//~^ ERROR: chained comparison operators require parentheses
false == 0 < 2;
//~^ ERROR: Chained comparison operators require parentheses
//~^ ERROR: chained comparison operators require parentheses
f<X>();
//~^ ERROR: Chained comparison operators require parentheses
//~^^ HELP: use ::< instead of < if you meant to specify type arguments
//~^ ERROR: chained comparison operators require parentheses
//~^^ HELP: use `::<...>` instead of `<...>`
}

View File

@ -15,6 +15,6 @@ fn f<X>() {}
pub fn main() {
f<type>();
//~^ ERROR expected identifier, found keyword `type`
//~^^ ERROR: Chained comparison operators require parentheses
//~^^^ HELP: use ::< instead of < if you meant to specify type arguments
//~^^ ERROR: chained comparison
//~^^^ HELP: use `::<
}