about summary refs log tree commit diff
path: root/src/test/ui/parser/issues
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-05-27 21:58:48 -0700
committerMichael Goulet <michael@errs.io>2022-06-13 20:53:48 -0700
commitd1ba2d25d483a65f41ca6277c160e2ea6d813e3b (patch)
treed480e1569f36cc601d81acb748543c11cf8d6178 /src/test/ui/parser/issues
parent3bdec3c8abdc48e46715d7b14b764af28da1cee3 (diff)
downloadrust-d1ba2d25d483a65f41ca6277c160e2ea6d813e3b.tar.gz
rust-d1ba2d25d483a65f41ca6277c160e2ea6d813e3b.zip
Improve parsing errors and suggestions for bad if statements
Diffstat (limited to 'src/test/ui/parser/issues')
-rw-r--r--src/test/ui/parser/issues/issue-13483.rs8
-rw-r--r--src/test/ui/parser/issues/issue-13483.stderr29
-rw-r--r--src/test/ui/parser/issues/issue-51602.stderr10
-rw-r--r--src/test/ui/parser/issues/issue-62554.stderr9
4 files changed, 24 insertions, 32 deletions
diff --git a/src/test/ui/parser/issues/issue-13483.rs b/src/test/ui/parser/issues/issue-13483.rs
index a2fd9264b15..4e32fcab3f0 100644
--- a/src/test/ui/parser/issues/issue-13483.rs
+++ b/src/test/ui/parser/issues/issue-13483.rs
@@ -1,15 +1,15 @@
 fn main() {
     if true {
-    } else if { //~ ERROR missing condition
-    //~^ ERROR mismatched types
+    } else if {
+    //~^ ERROR missing condition for `if` expression
     } else {
     }
 }
 
 fn foo() {
     if true {
-    } else if { //~ ERROR missing condition
-    //~^ ERROR mismatched types
+    } else if {
+    //~^ ERROR missing condition for `if` expression
     }
     bar();
 }
diff --git a/src/test/ui/parser/issues/issue-13483.stderr b/src/test/ui/parser/issues/issue-13483.stderr
index 5fd05b18ce0..f5534090f18 100644
--- a/src/test/ui/parser/issues/issue-13483.stderr
+++ b/src/test/ui/parser/issues/issue-13483.stderr
@@ -2,32 +2,17 @@ error: missing condition for `if` expression
   --> $DIR/issue-13483.rs:3:14
    |
 LL |     } else if {
-   |              ^ expected if condition here
+   |              ^- if this block is the condition of the `if` expression, then it must be followed by another block
+   |              |
+   |              expected condition here
 
 error: missing condition for `if` expression
   --> $DIR/issue-13483.rs:11:14
    |
 LL |     } else if {
-   |              ^ expected if condition here
+   |              ^- if this block is the condition of the `if` expression, then it must be followed by another block
+   |              |
+   |              expected condition here
 
-error[E0308]: mismatched types
-  --> $DIR/issue-13483.rs:3:15
-   |
-LL |       } else if {
-   |  _______________^
-LL | |
-LL | |     } else {
-   | |_____^ expected `bool`, found `()`
-
-error[E0308]: mismatched types
-  --> $DIR/issue-13483.rs:11:15
-   |
-LL |       } else if {
-   |  _______________^
-LL | |
-LL | |     }
-   | |_____^ expected `bool`, found `()`
-
-error: aborting due to 4 previous errors
+error: aborting due to 2 previous errors
 
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/parser/issues/issue-51602.stderr b/src/test/ui/parser/issues/issue-51602.stderr
index d800890bca3..4a5653fdb51 100644
--- a/src/test/ui/parser/issues/issue-51602.stderr
+++ b/src/test/ui/parser/issues/issue-51602.stderr
@@ -2,9 +2,13 @@ error: expected `{`, found keyword `in`
   --> $DIR/issue-51602.rs:2:10
    |
 LL |     if i in 1..10 {
-   |     --   ^^ expected `{`
-   |     |
-   |     this `if` expression has a condition, but no block
+   |          ^^ expected `{`
+   |
+note: the `if` expression is missing a block after this condition
+  --> $DIR/issue-51602.rs:2:8
+   |
+LL |     if i in 1..10 {
+   |        ^
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/parser/issues/issue-62554.stderr b/src/test/ui/parser/issues/issue-62554.stderr
index 3589016e1dc..9e62572e388 100644
--- a/src/test/ui/parser/issues/issue-62554.stderr
+++ b/src/test/ui/parser/issues/issue-62554.stderr
@@ -57,10 +57,13 @@ error: expected `{`, found `macro_rules`
   --> $DIR/issue-62554.rs:6:23
    |
 LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
-   |                 --    ^^^^^^^^^^^ expected `{`
-   |                 |
-   |                 this `if` expression has a condition, but no block
+   |                       ^^^^^^^^^^^ expected `{`
    |
+note: the `if` expression is missing a block after this condition
+  --> $DIR/issue-62554.rs:6:20
+   |
+LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 {
+   |                    ^^
 help: try placing this code inside a block
    |
 LL | fn foo(u: u8) { if u8 { macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 { }