mirror of
https://github.com/rust-lang/rust
synced 2024-09-15 22:50:55 +00:00
add hint for =< as <=
This commit is contained in:
parent
74c4821045
commit
a183ac6f90
|
@ -1448,8 +1448,19 @@ fn parse_expr_array_or_repeat(&mut self, close_delim: Delimiter) -> PResult<'a,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_expr_path_start(&mut self) -> PResult<'a, P<Expr>> {
|
fn parse_expr_path_start(&mut self) -> PResult<'a, P<Expr>> {
|
||||||
|
let maybe_eq_tok = self.prev_token.clone();
|
||||||
let (qself, path) = if self.eat_lt() {
|
let (qself, path) = if self.eat_lt() {
|
||||||
let (qself, path) = self.parse_qpath(PathStyle::Expr)?;
|
let lt_span = self.prev_token.span;
|
||||||
|
let (qself, path) = self.parse_qpath(PathStyle::Expr).map_err(|mut err| {
|
||||||
|
// Suggests using '<=' if there is an error parsing qpath when the previous token
|
||||||
|
// is an '=' token. Only emits suggestion if the '<' token and '=' token are
|
||||||
|
// directly adjacent (i.e. '=<')
|
||||||
|
if maybe_eq_tok.kind == TokenKind::Eq && maybe_eq_tok.span.hi() == lt_span.lo() {
|
||||||
|
let eq_lt = maybe_eq_tok.span.to(lt_span);
|
||||||
|
err.span_suggestion(eq_lt, "did you mean", "<=", Applicability::Unspecified);
|
||||||
|
}
|
||||||
|
err
|
||||||
|
})?;
|
||||||
(Some(qself), path)
|
(Some(qself), path)
|
||||||
} else {
|
} else {
|
||||||
(None, self.parse_path(PathStyle::Expr)?)
|
(None, self.parse_path(PathStyle::Expr)?)
|
||||||
|
|
33
tests/ui/parser/eq-less-to-less-eq.rs
Normal file
33
tests/ui/parser/eq-less-to-less-eq.rs
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
fn foo() {
|
||||||
|
let a = 0;
|
||||||
|
let b = 4;
|
||||||
|
if a =< b { //~ERROR
|
||||||
|
println!("yay!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bar() {
|
||||||
|
let a = 0;
|
||||||
|
let b = 4;
|
||||||
|
if a = <b { //~ERROR
|
||||||
|
println!("yay!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn baz() {
|
||||||
|
let a = 0;
|
||||||
|
let b = 4;
|
||||||
|
if a = < b { //~ERROR
|
||||||
|
println!("yay!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn qux() {
|
||||||
|
let a = 0;
|
||||||
|
let b = 4;
|
||||||
|
if a =< i32>::abs(-4) { //~ERROR: mismatched types
|
||||||
|
println!("yay!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
34
tests/ui/parser/eq-less-to-less-eq.stderr
Normal file
34
tests/ui/parser/eq-less-to-less-eq.stderr
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
error: expected one of `!`, `(`, `+`, `::`, `<`, `>`, or `as`, found `{`
|
||||||
|
--> $DIR/eq-less-to-less-eq.rs:4:15
|
||||||
|
|
|
||||||
|
LL | if a =< b {
|
||||||
|
| -- ^ expected one of 7 possible tokens
|
||||||
|
| |
|
||||||
|
| help: did you mean: `<=`
|
||||||
|
|
||||||
|
error: expected one of `!`, `(`, `+`, `::`, `<`, `>`, or `as`, found `{`
|
||||||
|
--> $DIR/eq-less-to-less-eq.rs:12:15
|
||||||
|
|
|
||||||
|
LL | if a = <b {
|
||||||
|
| ^ expected one of 7 possible tokens
|
||||||
|
|
||||||
|
error: expected one of `!`, `(`, `+`, `::`, `<`, `>`, or `as`, found `{`
|
||||||
|
--> $DIR/eq-less-to-less-eq.rs:20:16
|
||||||
|
|
|
||||||
|
LL | if a = < b {
|
||||||
|
| ^ expected one of 7 possible tokens
|
||||||
|
|
||||||
|
error[E0308]: mismatched types
|
||||||
|
--> $DIR/eq-less-to-less-eq.rs:28:8
|
||||||
|
|
|
||||||
|
LL | if a =< i32>::abs(-4) {
|
||||||
|
| ^^^^^^^^^^^^^^^^^^ expected `bool`, found `()`
|
||||||
|
|
|
||||||
|
help: you might have meant to compare for equality
|
||||||
|
|
|
||||||
|
LL | if a ==< i32>::abs(-4) {
|
||||||
|
| +
|
||||||
|
|
||||||
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0308`.
|
Loading…
Reference in a new issue