diff options
Diffstat (limited to 'src/test/ui/expr')
| -rw-r--r-- | src/test/ui/expr/if/expr-if-panic-pass.rs | 18 | ||||
| -rw-r--r-- | src/test/ui/expr/if/issue-4201.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/expr/if/issue-4201.stderr | 18 |
3 files changed, 45 insertions, 0 deletions
diff --git a/src/test/ui/expr/if/expr-if-panic-pass.rs b/src/test/ui/expr/if/expr-if-panic-pass.rs new file mode 100644 index 00000000000..6069cd835e1 --- /dev/null +++ b/src/test/ui/expr/if/expr-if-panic-pass.rs @@ -0,0 +1,18 @@ +// run-pass + +fn test_if_panic() { + let x = if false { panic!() } else { 10 }; + assert_eq!(x, 10); +} + +fn test_else_panic() { + let x = if true { 10 } else { panic!() }; + assert_eq!(x, 10); +} + +fn test_elseif_panic() { + let x = if false { 0 } else if false { panic!() } else { 10 }; + assert_eq!(x, 10); +} + +pub fn main() { test_if_panic(); test_else_panic(); test_elseif_panic(); } diff --git a/src/test/ui/expr/if/issue-4201.rs b/src/test/ui/expr/if/issue-4201.rs new file mode 100644 index 00000000000..1f292229fd6 --- /dev/null +++ b/src/test/ui/expr/if/issue-4201.rs @@ -0,0 +1,9 @@ +fn main() { + let a = if true { + 0 + } else if false { +//~^ ERROR `if` may be missing an `else` clause +//~| expected `()`, found integer + 1 + }; +} diff --git a/src/test/ui/expr/if/issue-4201.stderr b/src/test/ui/expr/if/issue-4201.stderr new file mode 100644 index 00000000000..bc638ddf55b --- /dev/null +++ b/src/test/ui/expr/if/issue-4201.stderr @@ -0,0 +1,18 @@ +error[E0317]: `if` may be missing an `else` clause + --> $DIR/issue-4201.rs:4:12 + | +LL | } else if false { + | ____________^ +LL | | +LL | | +LL | | 1 + | | - found here +LL | | }; + | |_____^ expected `()`, found integer + | + = note: `if` expressions without `else` evaluate to `()` + = help: consider adding an `else` block that evaluates to the expected type + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0317`. |
