1
Fork 0

Rollup merge of #97370 - compiler-errors:else-no-if-2, r=Dylan-DPC

Minor improvement on else-no-if diagnostic

Don't suggest wrapping in block since it's highly likely to be a missing `if` after `else`. Also rework message a bit (open to further suggestions).

cc: https://github.com/rust-lang/rust/pull/97298#discussion_r880933431

r? `@estebank`
This commit is contained in:
Dylan DPC 2022-05-25 10:48:30 +02:00 committed by GitHub
commit fe727e4dfc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 18 deletions

View file

@ -2291,16 +2291,9 @@ impl<'a> Parser<'a> {
.span_label(else_span, "expected an `if` or a block after this `else`") .span_label(else_span, "expected an `if` or a block after this `else`")
.span_suggestion( .span_suggestion(
cond.span.shrink_to_lo(), cond.span.shrink_to_lo(),
"add an `if` if this is the condition to an chained `if` statement after the `else`", "add an `if` if this is the condition of a chained `else if` statement",
"if ".to_string(), "if ".to_string(),
Applicability::MaybeIncorrect, Applicability::MaybeIncorrect,
).multipart_suggestion(
"... otherwise, place this expression inside of a block if it is not an `if` condition",
vec![
(cond.span.shrink_to_lo(), "{ ".to_string()),
(cond.span.shrink_to_hi(), " }".to_string()),
],
Applicability::MaybeIncorrect,
) )
.emit(); .emit();
self.parse_if_after_cond(AttrVec::new(), cond.span.shrink_to_lo(), cond)? self.parse_if_after_cond(AttrVec::new(), cond.span.shrink_to_lo(), cond)?

View file

@ -6,14 +6,10 @@ LL | } else false {
| | | |
| expected an `if` or a block after this `else` | expected an `if` or a block after this `else`
| |
help: add an `if` if this is the condition to an chained `if` statement after the `else` help: add an `if` if this is the condition of a chained `else if` statement
| |
LL | } else if false { LL | } else if false {
| ++ | ++
help: ... otherwise, place this expression inside of a block if it is not an `if` condition
|
LL | } else { false } {
| + +
error: expected `{`, found `falsy` error: expected `{`, found `falsy`
--> $DIR/else-no-if.rs:10:12 --> $DIR/else-no-if.rs:10:12
@ -23,14 +19,10 @@ LL | } else falsy() {
| | | |
| expected an `if` or a block after this `else` | expected an `if` or a block after this `else`
| |
help: add an `if` if this is the condition to an chained `if` statement after the `else` help: add an `if` if this is the condition of a chained `else if` statement
| |
LL | } else if falsy() { LL | } else if falsy() {
| ++ | ++
help: ... otherwise, place this expression inside of a block if it is not an `if` condition
|
LL | } else { falsy() } {
| + +
error: expected `{`, found `falsy` error: expected `{`, found `falsy`
--> $DIR/else-no-if.rs:17:12 --> $DIR/else-no-if.rs:17:12