about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-03-06 17:54:35 -0800
committerEsteban Küber <esteban@kuber.com.ar>2019-03-07 13:17:50 -0800
commit369058eacde8ffdfeed9b362b10720799729a835 (patch)
treee5c9b2b287ffd8005fb5e876aabb660e1911d95f /src/test
parentf22dca0a1bef4141e75326caacc3cd59f3d5be8e (diff)
downloadrust-369058eacde8ffdfeed9b362b10720799729a835.tar.gz
rust-369058eacde8ffdfeed9b362b10720799729a835.zip
Point at coercion reason for if exprs without else clause
```
error[E0317]: if may be missing an else clause
  --> $DIR/if-without-else-as-fn-expr.rs:2:5
   |
LL |   fn foo(bar: usize) -> usize {
   |                         ----- found `usize` because of this return type
LL | /     if bar % 5 == 0 {
LL | |         return 3;
LL | |     }
   | |_____^ expected (), found usize
   |
   = note: expected type `()`
              found type `usize`
   = note: `if` expressions without `else` must evaluate to `()`
```
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/if/if-without-else-as-fn-expr.rs10
-rw-r--r--src/test/ui/if/if-without-else-as-fn-expr.stderr17
-rw-r--r--src/test/ui/if/if-without-else-result.stderr1
-rw-r--r--src/test/ui/issues/issue-4201.stderr1
-rw-r--r--src/test/ui/issues/issue-50577.stderr1
5 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/if/if-without-else-as-fn-expr.rs b/src/test/ui/if/if-without-else-as-fn-expr.rs
new file mode 100644
index 00000000000..76ffb49697f
--- /dev/null
+++ b/src/test/ui/if/if-without-else-as-fn-expr.rs
@@ -0,0 +1,10 @@
+fn foo(bar: usize) -> usize {
+    if bar % 5 == 0 {
+        return 3;
+    }
+    //~^^^ ERROR if may be missing an else clause
+}
+
+fn main() {
+    let _ = foo(1);
+}
diff --git a/src/test/ui/if/if-without-else-as-fn-expr.stderr b/src/test/ui/if/if-without-else-as-fn-expr.stderr
new file mode 100644
index 00000000000..b8628ee291d
--- /dev/null
+++ b/src/test/ui/if/if-without-else-as-fn-expr.stderr
@@ -0,0 +1,17 @@
+error[E0317]: if may be missing an else clause
+  --> $DIR/if-without-else-as-fn-expr.rs:2:5
+   |
+LL |   fn foo(bar: usize) -> usize {
+   |                         ----- found `usize` because of this return type
+LL | /     if bar % 5 == 0 {
+LL | |         return 3;
+LL | |     }
+   | |_____^ expected (), found usize
+   |
+   = note: expected type `()`
+              found type `usize`
+   = note: `if` expressions without `else` must evaluate to `()`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0317`.
diff --git a/src/test/ui/if/if-without-else-result.stderr b/src/test/ui/if/if-without-else-result.stderr
index 2134781088c..6e720d59af5 100644
--- a/src/test/ui/if/if-without-else-result.stderr
+++ b/src/test/ui/if/if-without-else-result.stderr
@@ -6,6 +6,7 @@ LL |     let a = if true { true };
    |
    = note: expected type `()`
               found type `bool`
+   = note: `if` expressions without `else` must evaluate to `()`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-4201.stderr b/src/test/ui/issues/issue-4201.stderr
index 4f8ec96d531..fcda41d78cc 100644
--- a/src/test/ui/issues/issue-4201.stderr
+++ b/src/test/ui/issues/issue-4201.stderr
@@ -13,6 +13,7 @@ LL | |     };
    |
    = note: expected type `()`
               found type `{integer}`
+   = note: `if` expressions without `else` must evaluate to `()`
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/issues/issue-50577.stderr b/src/test/ui/issues/issue-50577.stderr
index f26f5a9a9ba..2747f9375f8 100644
--- a/src/test/ui/issues/issue-50577.stderr
+++ b/src/test/ui/issues/issue-50577.stderr
@@ -6,6 +6,7 @@ LL |         Drop = assert_eq!(1, 1)
    |
    = note: expected type `()`
               found type `isize`
+   = note: `if` expressions without `else` must evaluate to `()`
    = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
 
 error: aborting due to previous error