summaryrefslogtreecommitdiffstats
path: root/src/test/ui/expr/if
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/expr/if
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/expr/if')
-rw-r--r--src/test/ui/expr/if/attrs/bad-cfg.rs5
-rw-r--r--src/test/ui/expr/if/attrs/bad-cfg.stderr8
-rw-r--r--src/test/ui/expr/if/attrs/builtin-if-attr.rs12
-rw-r--r--src/test/ui/expr/if/attrs/cfg-false-if-attr.rs43
-rw-r--r--src/test/ui/expr/if/attrs/else-attrs.rs25
-rw-r--r--src/test/ui/expr/if/attrs/else-attrs.stderr26
-rw-r--r--src/test/ui/expr/if/attrs/gate-whole-expr.rs15
-rw-r--r--src/test/ui/expr/if/attrs/let-chains-attr.rs13
-rw-r--r--src/test/ui/expr/if/attrs/stmt-expr-gated.rs6
-rw-r--r--src/test/ui/expr/if/attrs/stmt-expr-gated.stderr12
-rw-r--r--src/test/ui/expr/if/bad-if-let-suggestion.rs24
-rw-r--r--src/test/ui/expr/if/bad-if-let-suggestion.stderr74
-rw-r--r--src/test/ui/expr/if/expr-if-panic-fn.rs20
-rw-r--r--src/test/ui/expr/if/expr-if-panic-pass.rs18
-rw-r--r--src/test/ui/expr/if/expr-if-panic.rs13
-rw-r--r--src/test/ui/expr/if/expr-if.rs52
-rw-r--r--src/test/ui/expr/if/if-branch-types.rs5
-rw-r--r--src/test/ui/expr/if/if-branch-types.stderr16
-rw-r--r--src/test/ui/expr/if/if-check-panic.rs25
-rw-r--r--src/test/ui/expr/if/if-check.rs17
-rw-r--r--src/test/ui/expr/if/if-cond-bot.rs13
-rw-r--r--src/test/ui/expr/if/if-else-type-mismatch.rs46
-rw-r--r--src/test/ui/expr/if/if-else-type-mismatch.stderr116
-rw-r--r--src/test/ui/expr/if/if-let-arm-types.rs11
-rw-r--r--src/test/ui/expr/if/if-let-arm-types.stderr17
-rw-r--r--src/test/ui/expr/if/if-let.rs49
-rw-r--r--src/test/ui/expr/if/if-let.stderr69
-rw-r--r--src/test/ui/expr/if/if-loop.rs8
-rw-r--r--src/test/ui/expr/if/if-no-match-bindings.rs28
-rw-r--r--src/test/ui/expr/if/if-no-match-bindings.stderr95
-rw-r--r--src/test/ui/expr/if/if-ret.rs8
-rw-r--r--src/test/ui/expr/if/if-ret.stderr12
-rw-r--r--src/test/ui/expr/if/if-typeck.rs10
-rw-r--r--src/test/ui/expr/if/if-typeck.stderr12
-rw-r--r--src/test/ui/expr/if/if-without-block.rs7
-rw-r--r--src/test/ui/expr/if/if-without-block.stderr14
-rw-r--r--src/test/ui/expr/if/if-without-else-as-fn-expr.rs49
-rw-r--r--src/test/ui/expr/if/if-without-else-as-fn-expr.stderr83
-rw-r--r--src/test/ui/expr/if/if-without-else-result.rs6
-rw-r--r--src/test/ui/expr/if/if-without-else-result.stderr15
-rw-r--r--src/test/ui/expr/if/issue-4201.rs9
-rw-r--r--src/test/ui/expr/if/issue-4201.stderr18
42 files changed, 0 insertions, 1124 deletions
diff --git a/src/test/ui/expr/if/attrs/bad-cfg.rs b/src/test/ui/expr/if/attrs/bad-cfg.rs
deleted file mode 100644
index 3f84929a0..000000000
--- a/src/test/ui/expr/if/attrs/bad-cfg.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#![feature(stmt_expr_attributes)]
-
-fn main() {
- let _ = #[cfg(FALSE)] if true {}; //~ ERROR removing an expression
-}
diff --git a/src/test/ui/expr/if/attrs/bad-cfg.stderr b/src/test/ui/expr/if/attrs/bad-cfg.stderr
deleted file mode 100644
index 8a2890886..000000000
--- a/src/test/ui/expr/if/attrs/bad-cfg.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: removing an expression is not supported in this position
- --> $DIR/bad-cfg.rs:4:13
- |
-LL | let _ = #[cfg(FALSE)] if true {};
- | ^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/expr/if/attrs/builtin-if-attr.rs b/src/test/ui/expr/if/attrs/builtin-if-attr.rs
deleted file mode 100644
index 7e2906615..000000000
--- a/src/test/ui/expr/if/attrs/builtin-if-attr.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// check-pass
-
-fn main() {
- #[allow(unused_variables)]
- if true {
- let a = 1;
- } else if false {
- let b = 1;
- } else {
- let c = 1;
- }
-}
diff --git a/src/test/ui/expr/if/attrs/cfg-false-if-attr.rs b/src/test/ui/expr/if/attrs/cfg-false-if-attr.rs
deleted file mode 100644
index 1f77a1bb3..000000000
--- a/src/test/ui/expr/if/attrs/cfg-false-if-attr.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-// check-pass
-
-#[cfg(FALSE)]
-fn simple_attr() {
- #[attr] if true {}
- #[allow_warnings] if true {}
-}
-
-#[cfg(FALSE)]
-fn if_else_chain() {
- #[first_attr] if true {
- } else if false {
- } else {
- }
-}
-
-#[cfg(FALSE)]
-fn if_let() {
- #[attr] if let Some(_) = Some(true) {}
-}
-
-fn bar() {
- #[cfg(FALSE)]
- if true {
- let x: () = true; // Should not error due to the #[cfg(FALSE)]
- }
-
- #[cfg_attr(not(unset_attr), cfg(FALSE))]
- if true {
- let a: () = true; // Should not error due to the applied #[cfg(FALSE)]
- }
-}
-
-macro_rules! custom_macro {
- ($expr:expr) => {}
-}
-
-custom_macro! {
- #[attr] if true {}
-}
-
-
-fn main() {}
diff --git a/src/test/ui/expr/if/attrs/else-attrs.rs b/src/test/ui/expr/if/attrs/else-attrs.rs
deleted file mode 100644
index 85da7cf6b..000000000
--- a/src/test/ui/expr/if/attrs/else-attrs.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-#[cfg(FALSE)]
-fn if_else_parse_error() {
- if true {
- } #[attr] else if false { //~ ERROR expected
- }
-}
-
-#[cfg(FALSE)]
-fn else_attr_ifparse_error() {
- if true {
- } else #[attr] if false { //~ ERROR outer attributes are not allowed
- } else {
- }
-}
-
-#[cfg(FALSE)]
-fn else_parse_error() {
- if true {
- } else if false {
- } #[attr] else { //~ ERROR expected
- }
-}
-
-fn main() {
-}
diff --git a/src/test/ui/expr/if/attrs/else-attrs.stderr b/src/test/ui/expr/if/attrs/else-attrs.stderr
deleted file mode 100644
index 273337705..000000000
--- a/src/test/ui/expr/if/attrs/else-attrs.stderr
+++ /dev/null
@@ -1,26 +0,0 @@
-error: expected expression, found keyword `else`
- --> $DIR/else-attrs.rs:4:15
- |
-LL | } #[attr] else if false {
- | ^^^^ expected expression
-
-error: outer attributes are not allowed on `if` and `else` branches
- --> $DIR/else-attrs.rs:11:12
- |
-LL | } else #[attr] if false {
- | _______----_^^^^^^^_-
- | | | |
- | | | help: remove the attributes
- | | the branch belongs to this `else`
-LL | | } else {
-LL | | }
- | |_____- the attributes are attached to this branch
-
-error: expected expression, found keyword `else`
- --> $DIR/else-attrs.rs:20:15
- |
-LL | } #[attr] else {
- | ^^^^ expected expression
-
-error: aborting due to 3 previous errors
-
diff --git a/src/test/ui/expr/if/attrs/gate-whole-expr.rs b/src/test/ui/expr/if/attrs/gate-whole-expr.rs
deleted file mode 100644
index 63772d54b..000000000
--- a/src/test/ui/expr/if/attrs/gate-whole-expr.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-// run-pass
-
-fn main() {
- let x = 1;
-
- #[cfg(FALSE)]
- if false {
- x = 2;
- } else if true {
- x = 3;
- } else {
- x = 4;
- }
- assert_eq!(x, 1);
-}
diff --git a/src/test/ui/expr/if/attrs/let-chains-attr.rs b/src/test/ui/expr/if/attrs/let-chains-attr.rs
deleted file mode 100644
index 2cd873114..000000000
--- a/src/test/ui/expr/if/attrs/let-chains-attr.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// check-pass
-
-#![feature(let_chains)]
-
-#[cfg(FALSE)]
-fn foo() {
- #[attr]
- if let Some(_) = Some(true) && let Ok(_) = Ok(1) {
- } else if let Some(false) = Some(true) {
- }
-}
-
-fn main() {}
diff --git a/src/test/ui/expr/if/attrs/stmt-expr-gated.rs b/src/test/ui/expr/if/attrs/stmt-expr-gated.rs
deleted file mode 100644
index 38599c8e6..000000000
--- a/src/test/ui/expr/if/attrs/stmt-expr-gated.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
- let _ = #[deny(warnings)] if true { //~ ERROR attributes on expressions
- } else if false {
- } else {
- };
-}
diff --git a/src/test/ui/expr/if/attrs/stmt-expr-gated.stderr b/src/test/ui/expr/if/attrs/stmt-expr-gated.stderr
deleted file mode 100644
index 47dac39a9..000000000
--- a/src/test/ui/expr/if/attrs/stmt-expr-gated.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0658]: attributes on expressions are experimental
- --> $DIR/stmt-expr-gated.rs:2:13
- |
-LL | let _ = #[deny(warnings)] if true {
- | ^^^^^^^^^^^^^^^^^
- |
- = note: see issue #15701 <https://github.com/rust-lang/rust/issues/15701> for more information
- = help: add `#![feature(stmt_expr_attributes)]` to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/expr/if/bad-if-let-suggestion.rs b/src/test/ui/expr/if/bad-if-let-suggestion.rs
deleted file mode 100644
index a8b2a2830..000000000
--- a/src/test/ui/expr/if/bad-if-let-suggestion.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-// FIXME(compiler-errors): This really should suggest `let` on the RHS of the
-// `&&` operator, but that's kinda hard to do because of precedence.
-// Instead, for now we just make sure not to suggest `if let let`.
-fn a() {
- if let x = 1 && i = 2 {}
- //~^ ERROR cannot find value `i` in this scope
- //~| ERROR `let` expressions in this position are unstable
- //~| ERROR mismatched types
- //~| ERROR `let` expressions are not supported here
-}
-
-fn b() {
- if (i + j) = i {}
- //~^ ERROR cannot find value `i` in this scope
- //~| ERROR cannot find value `i` in this scope
- //~| ERROR cannot find value `j` in this scope
-}
-
-fn c() {
- if x[0] = 1 {}
- //~^ ERROR cannot find value `x` in this scope
-}
-
-fn main() {}
diff --git a/src/test/ui/expr/if/bad-if-let-suggestion.stderr b/src/test/ui/expr/if/bad-if-let-suggestion.stderr
deleted file mode 100644
index 3a53a20b4..000000000
--- a/src/test/ui/expr/if/bad-if-let-suggestion.stderr
+++ /dev/null
@@ -1,74 +0,0 @@
-error: `let` expressions are not supported here
- --> $DIR/bad-if-let-suggestion.rs:5:8
- |
-LL | if let x = 1 && i = 2 {}
- | ^^^^^^^^^
- |
- = note: only supported directly in conditions of `if` and `while` expressions
-
-error[E0425]: cannot find value `i` in this scope
- --> $DIR/bad-if-let-suggestion.rs:5:21
- |
-LL | if let x = 1 && i = 2 {}
- | ^ not found in this scope
-
-error[E0425]: cannot find value `i` in this scope
- --> $DIR/bad-if-let-suggestion.rs:13:9
- |
-LL | fn a() {
- | ------ similarly named function `a` defined here
-...
-LL | if (i + j) = i {}
- | ^ help: a function with a similar name exists: `a`
-
-error[E0425]: cannot find value `j` in this scope
- --> $DIR/bad-if-let-suggestion.rs:13:13
- |
-LL | fn a() {
- | ------ similarly named function `a` defined here
-...
-LL | if (i + j) = i {}
- | ^ help: a function with a similar name exists: `a`
-
-error[E0425]: cannot find value `i` in this scope
- --> $DIR/bad-if-let-suggestion.rs:13:18
- |
-LL | fn a() {
- | ------ similarly named function `a` defined here
-...
-LL | if (i + j) = i {}
- | ^ help: a function with a similar name exists: `a`
-
-error[E0425]: cannot find value `x` in this scope
- --> $DIR/bad-if-let-suggestion.rs:20:8
- |
-LL | fn a() {
- | ------ similarly named function `a` defined here
-...
-LL | if x[0] = 1 {}
- | ^ help: a function with a similar name exists: `a`
-
-error[E0658]: `let` expressions in this position are unstable
- --> $DIR/bad-if-let-suggestion.rs:5:8
- |
-LL | if let x = 1 && i = 2 {}
- | ^^^^^^^^^
- |
- = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
- = help: add `#![feature(let_chains)]` to the crate attributes to enable
-
-error[E0308]: mismatched types
- --> $DIR/bad-if-let-suggestion.rs:5:8
- |
-LL | if let x = 1 && i = 2 {}
- | ^^^^^^^^^^^^^^^^^^ expected `bool`, found `()`
- |
-help: you might have meant to compare for equality
- |
-LL | if let x = 1 && i == 2 {}
- | +
-
-error: aborting due to 8 previous errors
-
-Some errors have detailed explanations: E0308, E0425, E0658.
-For more information about an error, try `rustc --explain E0308`.
diff --git a/src/test/ui/expr/if/expr-if-panic-fn.rs b/src/test/ui/expr/if/expr-if-panic-fn.rs
deleted file mode 100644
index 36e49785a..000000000
--- a/src/test/ui/expr/if/expr-if-panic-fn.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-// run-fail
-// error-pattern:explicit panic
-// ignore-emscripten no processes
-
-fn f() -> ! {
- panic!()
-}
-
-fn g() -> isize {
- let x = if true {
- f()
- } else {
- 10
- };
- return x;
-}
-
-fn main() {
- g();
-}
diff --git a/src/test/ui/expr/if/expr-if-panic-pass.rs b/src/test/ui/expr/if/expr-if-panic-pass.rs
deleted file mode 100644
index 6069cd835..000000000
--- a/src/test/ui/expr/if/expr-if-panic-pass.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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/expr-if-panic.rs b/src/test/ui/expr/if/expr-if-panic.rs
deleted file mode 100644
index 520ee0870..000000000
--- a/src/test/ui/expr/if/expr-if-panic.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// run-fail
-// error-pattern:explicit panic
-// ignore-emscripten no processes
-
-fn main() {
- let _x = if false {
- 0
- } else if true {
- panic!()
- } else {
- 10
- };
-}
diff --git a/src/test/ui/expr/if/expr-if.rs b/src/test/ui/expr/if/expr-if.rs
deleted file mode 100644
index 2b8474ff4..000000000
--- a/src/test/ui/expr/if/expr-if.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-// run-pass
-// Tests for if as expressions
-
-fn test_if() { let rs: bool = if true { true } else { false }; assert!((rs)); }
-
-fn test_else() {
- let rs: bool = if false { false } else { true };
- assert!((rs));
-}
-
-fn test_elseif1() {
- let rs: bool = if true { true } else if true { false } else { false };
- assert!((rs));
-}
-
-fn test_elseif2() {
- let rs: bool = if false { false } else if true { true } else { false };
- assert!((rs));
-}
-
-fn test_elseif3() {
- let rs: bool = if false { false } else if false { false } else { true };
- assert!((rs));
-}
-
-fn test_inferrence() {
- let rs = if true { true } else { false };
- assert!((rs));
-}
-
-fn test_if_as_if_condition() {
- let rs1 = if if false { false } else { true } { true } else { false };
- assert!((rs1));
- let rs2 = if if true { false } else { true } { false } else { true };
- assert!((rs2));
-}
-
-fn test_if_as_block_result() {
- let rs = if true { if false { false } else { true } } else { false };
- assert!((rs));
-}
-
-pub fn main() {
- test_if();
- test_else();
- test_elseif1();
- test_elseif2();
- test_elseif3();
- test_inferrence();
- test_if_as_if_condition();
- test_if_as_block_result();
-}
diff --git a/src/test/ui/expr/if/if-branch-types.rs b/src/test/ui/expr/if/if-branch-types.rs
deleted file mode 100644
index c125ba306..000000000
--- a/src/test/ui/expr/if/if-branch-types.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-fn main() {
- let x = if true { 10i32 } else { 10u32 };
- //~^ ERROR `if` and `else` have incompatible types
- //~| expected `i32`, found `u32`
-}
diff --git a/src/test/ui/expr/if/if-branch-types.stderr b/src/test/ui/expr/if/if-branch-types.stderr
deleted file mode 100644
index d2bba8821..000000000
--- a/src/test/ui/expr/if/if-branch-types.stderr
+++ /dev/null
@@ -1,16 +0,0 @@
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-branch-types.rs:2:38
- |
-LL | let x = if true { 10i32 } else { 10u32 };
- | ----- ^^^^^ expected `i32`, found `u32`
- | |
- | expected because of this
- |
-help: change the type of the numeric literal from `u32` to `i32`
- |
-LL | let x = if true { 10i32 } else { 10i32 };
- | ~~~
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/expr/if/if-check-panic.rs b/src/test/ui/expr/if/if-check-panic.rs
deleted file mode 100644
index 037cd427c..000000000
--- a/src/test/ui/expr/if/if-check-panic.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// run-fail
-// error-pattern:Number is odd
-// ignore-emscripten no processes
-
-fn even(x: usize) -> bool {
- if x < 2 {
- return false;
- } else if x == 2 {
- return true;
- } else {
- return even(x - 2);
- }
-}
-
-fn foo(x: usize) {
- if even(x) {
- println!("{}", x);
- } else {
- panic!("Number is odd");
- }
-}
-
-fn main() {
- foo(3);
-}
diff --git a/src/test/ui/expr/if/if-check.rs b/src/test/ui/expr/if/if-check.rs
deleted file mode 100644
index 6593225e7..000000000
--- a/src/test/ui/expr/if/if-check.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// run-pass
-
-fn even(x: usize) -> bool {
- if x < 2 {
- return false;
- } else if x == 2 { return true; } else { return even(x - 2); }
-}
-
-fn foo(x: usize) {
- if even(x) {
- println!("{}", x);
- } else {
- panic!();
- }
-}
-
-pub fn main() { foo(2); }
diff --git a/src/test/ui/expr/if/if-cond-bot.rs b/src/test/ui/expr/if/if-cond-bot.rs
deleted file mode 100644
index bcd114678..000000000
--- a/src/test/ui/expr/if/if-cond-bot.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-// run-fail
-// error-pattern:quux
-// ignore-emscripten no processes
-
-fn my_err(s: String) -> ! {
- println!("{}", s);
- panic!("quux");
-}
-
-fn main() {
- if my_err("bye".to_string()) {
- }
-}
diff --git a/src/test/ui/expr/if/if-else-type-mismatch.rs b/src/test/ui/expr/if/if-else-type-mismatch.rs
deleted file mode 100644
index 1a0a36df2..000000000
--- a/src/test/ui/expr/if/if-else-type-mismatch.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-fn main() {
- let _ = if true {
- 1i32
- } else {
- 2u32
- };
- //~^^ ERROR `if` and `else` have incompatible types
- let _ = if true { 42i32 } else { 42u32 };
- //~^ ERROR `if` and `else` have incompatible types
- let _ = if true {
- 3u32;
- } else {
- 4u32
- };
- //~^^ ERROR `if` and `else` have incompatible types
- let _ = if true {
- 5u32
- } else {
- 6u32;
- };
- //~^^ ERROR `if` and `else` have incompatible types
- let _ = if true {
- 7i32;
- } else {
- 8u32
- };
- //~^^ ERROR `if` and `else` have incompatible types
- let _ = if true {
- 9i32
- } else {
- 10u32;
- };
- //~^^ ERROR `if` and `else` have incompatible types
- let _ = if true {
-
- } else {
- 11u32
- };
- //~^^ ERROR `if` and `else` have incompatible types
- let _ = if true {
- 12i32
- } else {
-
- };
- //~^^^ ERROR `if` and `else` have incompatible types
-}
diff --git a/src/test/ui/expr/if/if-else-type-mismatch.stderr b/src/test/ui/expr/if/if-else-type-mismatch.stderr
deleted file mode 100644
index f1fffdb1e..000000000
--- a/src/test/ui/expr/if/if-else-type-mismatch.stderr
+++ /dev/null
@@ -1,116 +0,0 @@
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:5:9
- |
-LL | let _ = if true {
- | _____________-
-LL | | 1i32
- | | ---- expected because of this
-LL | | } else {
-LL | | 2u32
- | | ^^^^ expected `i32`, found `u32`
-LL | | };
- | |_____- `if` and `else` have incompatible types
- |
-help: change the type of the numeric literal from `u32` to `i32`
- |
-LL | 2i32
- | ~~~
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:8:38
- |
-LL | let _ = if true { 42i32 } else { 42u32 };
- | ----- ^^^^^ expected `i32`, found `u32`
- | |
- | expected because of this
- |
-help: change the type of the numeric literal from `u32` to `i32`
- |
-LL | let _ = if true { 42i32 } else { 42i32 };
- | ~~~
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:13:9
- |
-LL | let _ = if true {
- | _____________-
-LL | | 3u32;
- | | -----
- | | | |
- | | | help: consider removing this semicolon
- | | expected because of this
-LL | | } else {
-LL | | 4u32
- | | ^^^^ expected `()`, found `u32`
-LL | | };
- | |_____- `if` and `else` have incompatible types
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:19:9
- |
-LL | let _ = if true {
- | _____________-
-LL | | 5u32
- | | ---- expected because of this
-LL | | } else {
-LL | | 6u32;
- | | ^^^^-
- | | | |
- | | | help: consider removing this semicolon
- | | expected `u32`, found `()`
-LL | | };
- | |_____- `if` and `else` have incompatible types
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:25:9
- |
-LL | let _ = if true {
- | _____________-
-LL | | 7i32;
- | | ----- expected because of this
-LL | | } else {
-LL | | 8u32
- | | ^^^^ expected `()`, found `u32`
-LL | | };
- | |_____- `if` and `else` have incompatible types
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:31:9
- |
-LL | let _ = if true {
- | _____________-
-LL | | 9i32
- | | ---- expected because of this
-LL | | } else {
-LL | | 10u32;
- | | ^^^^^^ expected `i32`, found `()`
-LL | | };
- | |_____- `if` and `else` have incompatible types
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:37:9
- |
-LL | let _ = if true {
- | _____________________-
-LL | |
-LL | | } else {
- | |_____- expected because of this
-LL | 11u32
- | ^^^^^ expected `()`, found `u32`
-
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-else-type-mismatch.rs:42:12
- |
-LL | let _ = if true {
- | ------- `if` and `else` have incompatible types
-LL | 12i32
- | ----- expected because of this
-LL | } else {
- | ____________^
-LL | |
-LL | | };
- | |_____^ expected `i32`, found `()`
-
-error: aborting due to 8 previous errors
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/expr/if/if-let-arm-types.rs b/src/test/ui/expr/if/if-let-arm-types.rs
deleted file mode 100644
index 1e8260a01..000000000
--- a/src/test/ui/expr/if/if-let-arm-types.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-fn main() {
- if let Some(b) = None {
- //~^ NOTE `if` and `else` have incompatible types
- ()
- //~^ NOTE expected because of this
- } else {
- 1
- };
- //~^^ ERROR: `if` and `else` have incompatible types
- //~| NOTE expected `()`, found integer
-}
diff --git a/src/test/ui/expr/if/if-let-arm-types.stderr b/src/test/ui/expr/if/if-let-arm-types.stderr
deleted file mode 100644
index b40a0f479..000000000
--- a/src/test/ui/expr/if/if-let-arm-types.stderr
+++ /dev/null
@@ -1,17 +0,0 @@
-error[E0308]: `if` and `else` have incompatible types
- --> $DIR/if-let-arm-types.rs:7:9
- |
-LL | / if let Some(b) = None {
-LL | |
-LL | | ()
- | | -- expected because of this
-LL | |
-LL | | } else {
-LL | | 1
- | | ^ expected `()`, found integer
-LL | | };
- | |_____- `if` and `else` have incompatible types
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/expr/if/if-let.rs b/src/test/ui/expr/if/if-let.rs
deleted file mode 100644
index 7fdd2be95..000000000
--- a/src/test/ui/expr/if/if-let.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-// check-pass
-
-fn macros() {
- macro_rules! foo {
- ($p:pat, $e:expr, $b:block) => {{
- if let $p = $e $b
- //~^ WARN irrefutable `if let`
- //~| WARN irrefutable `if let`
- }}
- }
- macro_rules! bar{
- ($p:pat, $e:expr, $b:block) => {{
- foo!($p, $e, $b)
- }}
- }
-
- foo!(a, 1, {
- println!("irrefutable pattern");
- });
- bar!(a, 1, {
- println!("irrefutable pattern");
- });
-}
-
-pub fn main() {
- if let a = 1 { //~ WARN irrefutable `if let`
- println!("irrefutable pattern");
- }
-
- if let a = 1 { //~ WARN irrefutable `if let`
- println!("irrefutable pattern");
- } else if true {
- println!("else-if in irrefutable `if let`");
- } else {
- println!("else in irrefutable `if let`");
- }
-
- if let 1 = 2 {
- println!("refutable pattern");
- } else if let a = 1 { //~ WARN irrefutable `if let`
- println!("irrefutable pattern");
- }
-
- if true {
- println!("if");
- } else if let a = 1 { //~ WARN irrefutable `if let`
- println!("irrefutable pattern");
- }
-}
diff --git a/src/test/ui/expr/if/if-let.stderr b/src/test/ui/expr/if/if-let.stderr
deleted file mode 100644
index c4bba3cb1..000000000
--- a/src/test/ui/expr/if/if-let.stderr
+++ /dev/null
@@ -1,69 +0,0 @@
-warning: irrefutable `if let` pattern
- --> $DIR/if-let.rs:6:16
- |
-LL | if let $p = $e $b
- | ^^^
-...
-LL | / foo!(a, 1, {
-LL | | println!("irrefutable pattern");
-LL | | });
- | |______- in this macro invocation
- |
- = note: this pattern will always match, so the `if let` is useless
- = help: consider replacing the `if let` with a `let`
- = note: `#[warn(irrefutable_let_patterns)]` on by default
- = note: this warning originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-warning: irrefutable `if let` pattern
- --> $DIR/if-let.rs:6:16
- |
-LL | if let $p = $e $b
- | ^^^
-...
-LL | / bar!(a, 1, {
-LL | | println!("irrefutable pattern");
-LL | | });
- | |______- in this macro invocation
- |
- = note: this pattern will always match, so the `if let` is useless
- = help: consider replacing the `if let` with a `let`
- = note: this warning originates in the macro `foo` which comes from the expansion of the macro `bar` (in Nightly builds, run with -Z macro-backtrace for more info)
-
-warning: irrefutable `if let` pattern
- --> $DIR/if-let.rs:26:8
- |
-LL | if let a = 1 {
- | ^^^^^^^^^
- |
- = note: this pattern will always match, so the `if let` is useless
- = help: consider replacing the `if let` with a `let`
-
-warning: irrefutable `if let` pattern
- --> $DIR/if-let.rs:30:8
- |
-LL | if let a = 1 {
- | ^^^^^^^^^
- |
- = note: this pattern will always match, so the `if let` is useless
- = help: consider replacing the `if let` with a `let`
-
-warning: irrefutable `if let` pattern
- --> $DIR/if-let.rs:40:15
- |
-LL | } else if let a = 1 {
- | ^^^^^^^^^
- |
- = note: this pattern will always match, so the `if let` is useless
- = help: consider replacing the `if let` with a `let`
-
-warning: irrefutable `if let` pattern
- --> $DIR/if-let.rs:46:15
- |
-LL | } else if let a = 1 {
- | ^^^^^^^^^
- |
- = note: this pattern will always match, so the `if let` is useless
- = help: consider replacing the `if let` with a `let`
-
-warning: 6 warnings emitted
-
diff --git a/src/test/ui/expr/if/if-loop.rs b/src/test/ui/expr/if/if-loop.rs
deleted file mode 100644
index 06d0bdf45..000000000
--- a/src/test/ui/expr/if/if-loop.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// check-pass
-
-// This used to ICE because the "if" being unreachable was not handled correctly
-fn err() {
- if loop {} {}
-}
-
-fn main() {}
diff --git a/src/test/ui/expr/if/if-no-match-bindings.rs b/src/test/ui/expr/if/if-no-match-bindings.rs
deleted file mode 100644
index ca3df0fdd..000000000
--- a/src/test/ui/expr/if/if-no-match-bindings.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-// Checks for `if` expressions with respect to default match bindings.
-// Specifically, we do not accept `if cond { ... }` where `cond: &mut? bool`.
-// Meanwhile, `match cond { true => ..., _ => ... }` does accept that.
-
-// FIXME(@rust-lang/lang-team): consider relaxing this?
-
-fn b_ref<'a>() -> &'a bool { &true }
-fn b_mut_ref<'a>() -> &'a mut bool { &mut true }
-
-fn main() {
- // This is OK:
- match b_ref() { true => {}, _ => {} }
- match b_mut_ref() { true => {}, _ => {} }
- match &true { true => {}, _ => {} }
- match &mut true { true => {}, _ => {} }
-
- // This is NOT:
- if b_ref() {} //~ ERROR mismatched types [E0308]
- if b_mut_ref() {} //~ ERROR mismatched types [E0308]
- if &true {} //~ ERROR mismatched types [E0308]
- if &mut true {} //~ ERROR mismatched types [E0308]
-
- // This is also NOT:
- while b_ref() {} //~ ERROR mismatched types [E0308]
- while b_mut_ref() {} //~ ERROR mismatched types [E0308]
- while &true {} //~ ERROR mismatched types [E0308]
- while &mut true {} //~ ERROR mismatched types [E0308]
-}
diff --git a/src/test/ui/expr/if/if-no-match-bindings.stderr b/src/test/ui/expr/if/if-no-match-bindings.stderr
deleted file mode 100644
index 737a5d604..000000000
--- a/src/test/ui/expr/if/if-no-match-bindings.stderr
+++ /dev/null
@@ -1,95 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:18:8
- |
-LL | if b_ref() {}
- | ^^^^^^^ expected `bool`, found `&bool`
- |
-help: consider dereferencing the borrow
- |
-LL | if *b_ref() {}
- | +
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:19:8
- |
-LL | if b_mut_ref() {}
- | ^^^^^^^^^^^ expected `bool`, found `&mut bool`
- |
-help: consider dereferencing the borrow
- |
-LL | if *b_mut_ref() {}
- | +
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:20:8
- |
-LL | if &true {}
- | ^^^^^ expected `bool`, found `&bool`
- |
-help: consider removing the borrow
- |
-LL - if &true {}
-LL + if true {}
- |
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:21:8
- |
-LL | if &mut true {}
- | ^^^^^^^^^ expected `bool`, found `&mut bool`
- |
-help: consider removing the borrow
- |
-LL - if &mut true {}
-LL + if true {}
- |
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:24:11
- |
-LL | while b_ref() {}
- | ^^^^^^^ expected `bool`, found `&bool`
- |
-help: consider dereferencing the borrow
- |
-LL | while *b_ref() {}
- | +
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:25:11
- |
-LL | while b_mut_ref() {}
- | ^^^^^^^^^^^ expected `bool`, found `&mut bool`
- |
-help: consider dereferencing the borrow
- |
-LL | while *b_mut_ref() {}
- | +
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:26:11
- |
-LL | while &true {}
- | ^^^^^ expected `bool`, found `&bool`
- |
-help: consider removing the borrow
- |
-LL - while &true {}
-LL + while true {}
- |
-
-error[E0308]: mismatched types
- --> $DIR/if-no-match-bindings.rs:27:11
- |
-LL | while &mut true {}
- | ^^^^^^^^^ expected `bool`, found `&mut bool`
- |
-help: consider removing the borrow
- |
-LL - while &mut true {}
-LL + while true {}
- |
-
-error: aborting due to 8 previous errors
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/expr/if/if-ret.rs b/src/test/ui/expr/if/if-ret.rs
deleted file mode 100644
index 896072ce7..000000000
--- a/src/test/ui/expr/if/if-ret.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-// run-pass
-
-#![allow(unused_parens)]
-// pretty-expanded FIXME #23616
-
-fn foo() { if (return) { } } //~ WARNING unreachable block in `if`
-
-pub fn main() { foo(); }
diff --git a/src/test/ui/expr/if/if-ret.stderr b/src/test/ui/expr/if/if-ret.stderr
deleted file mode 100644
index 8ced271aa..000000000
--- a/src/test/ui/expr/if/if-ret.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-warning: unreachable block in `if` or `while` expression
- --> $DIR/if-ret.rs:6:24
- |
-LL | fn foo() { if (return) { } }
- | -------- ^^^ unreachable block in `if` or `while` expression
- | |
- | any code following this expression is unreachable
- |
- = note: `#[warn(unreachable_code)]` on by default
-
-warning: 1 warning emitted
-
diff --git a/src/test/ui/expr/if/if-typeck.rs b/src/test/ui/expr/if/if-typeck.rs
deleted file mode 100644
index d8c262bd6..000000000
--- a/src/test/ui/expr/if/if-typeck.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-// error-pattern:mismatched types
-// issue #513
-
-fn f() { }
-
-fn main() {
-
- // f is not a bool
- if f { }
-}
diff --git a/src/test/ui/expr/if/if-typeck.stderr b/src/test/ui/expr/if/if-typeck.stderr
deleted file mode 100644
index 74ed0ed0a..000000000
--- a/src/test/ui/expr/if/if-typeck.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/if-typeck.rs:9:8
- |
-LL | if f { }
- | ^ expected `bool`, found fn item
- |
- = note: expected type `bool`
- found fn item `fn() {f}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/expr/if/if-without-block.rs b/src/test/ui/expr/if/if-without-block.rs
deleted file mode 100644
index 5add9dfda..000000000
--- a/src/test/ui/expr/if/if-without-block.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-fn main() {
- let n = 1;
- if 5 == {
- //~^ ERROR this `if` expression is missing a block after the condition
- println!("five");
- }
-}
diff --git a/src/test/ui/expr/if/if-without-block.stderr b/src/test/ui/expr/if/if-without-block.stderr
deleted file mode 100644
index 2d1ee04ce..000000000
--- a/src/test/ui/expr/if/if-without-block.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error: this `if` expression is missing a block after the condition
- --> $DIR/if-without-block.rs:3:5
- |
-LL | if 5 == {
- | ^^
- |
-help: this binary operation is possibly unfinished
- --> $DIR/if-without-block.rs:3:8
- |
-LL | if 5 == {
- | ^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/expr/if/if-without-else-as-fn-expr.rs b/src/test/ui/expr/if/if-without-else-as-fn-expr.rs
deleted file mode 100644
index 19fbfb27b..000000000
--- a/src/test/ui/expr/if/if-without-else-as-fn-expr.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-fn foo(bar: usize) -> usize {
- if bar % 5 == 0 {
- return 3;
- }
- //~^^^ ERROR `if` may be missing an `else` clause
-}
-
-fn foo2(bar: usize) -> usize {
- let x: usize = if bar % 5 == 0 {
- return 3;
- };
- //~^^^ ERROR `if` may be missing an `else` clause
- x
-}
-
-fn foo3(bar: usize) -> usize {
- if bar % 5 == 0 {
- 3
- }
- //~^^^ ERROR `if` may be missing an `else` clause
-}
-
-fn foo_let(bar: usize) -> usize {
- if let 0 = 1 {
- return 3;
- }
- //~^^^ ERROR `if` may be missing an `else` clause
-}
-
-fn foo2_let(bar: usize) -> usize {
- let x: usize = if let 0 = 1 {
- return 3;
- };
- //~^^^ ERROR `if` may be missing an `else` clause
- x
-}
-
-fn foo3_let(bar: usize) -> usize {
- if let 0 = 1 {
- 3
- }
- //~^^^ ERROR `if` may be missing an `else` clause
-}
-
-// FIXME(60254): deduplicate first error in favor of second.
-
-fn main() {
- let _ = foo(1);
-}
diff --git a/src/test/ui/expr/if/if-without-else-as-fn-expr.stderr b/src/test/ui/expr/if/if-without-else-as-fn-expr.stderr
deleted file mode 100644
index 4daf27493..000000000
--- a/src/test/ui/expr/if/if-without-else-as-fn-expr.stderr
+++ /dev/null
@@ -1,83 +0,0 @@
-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 {
- | ----- expected `usize` because of this return type
-LL | / if bar % 5 == 0 {
-LL | | return 3;
-LL | | }
- | |_____^ expected `usize`, found `()`
- |
- = note: `if` expressions without `else` evaluate to `()`
- = help: consider adding an `else` block that evaluates to the expected type
-
-error[E0317]: `if` may be missing an `else` clause
- --> $DIR/if-without-else-as-fn-expr.rs:9:20
- |
-LL | let x: usize = if bar % 5 == 0 {
- | _________-__________^
- | | |
- | | expected because of this assignment
-LL | | return 3;
-LL | | };
- | |_____^ expected `usize`, found `()`
- |
- = note: `if` expressions without `else` evaluate to `()`
- = help: consider adding an `else` block that evaluates to the expected type
-
-error[E0317]: `if` may be missing an `else` clause
- --> $DIR/if-without-else-as-fn-expr.rs:17:5
- |
-LL | fn foo3(bar: usize) -> usize {
- | ----- expected `usize` because of this return type
-LL | / if bar % 5 == 0 {
-LL | | 3
-LL | | }
- | |_____^ expected `usize`, found `()`
- |
- = note: `if` expressions without `else` evaluate to `()`
- = help: consider adding an `else` block that evaluates to the expected type
-
-error[E0317]: `if` may be missing an `else` clause
- --> $DIR/if-without-else-as-fn-expr.rs:24:5
- |
-LL | fn foo_let(bar: usize) -> usize {
- | ----- expected `usize` because of this return type
-LL | / if let 0 = 1 {
-LL | | return 3;
-LL | | }
- | |_____^ expected `usize`, found `()`
- |
- = note: `if` expressions without `else` evaluate to `()`
- = help: consider adding an `else` block that evaluates to the expected type
-
-error[E0317]: `if` may be missing an `else` clause
- --> $DIR/if-without-else-as-fn-expr.rs:31:20
- |
-LL | let x: usize = if let 0 = 1 {
- | _________-__________^
- | | |
- | | expected because of this assignment
-LL | | return 3;
-LL | | };
- | |_____^ expected `usize`, found `()`
- |
- = note: `if` expressions without `else` evaluate to `()`
- = help: consider adding an `else` block that evaluates to the expected type
-
-error[E0317]: `if` may be missing an `else` clause
- --> $DIR/if-without-else-as-fn-expr.rs:39:5
- |
-LL | fn foo3_let(bar: usize) -> usize {
- | ----- expected `usize` because of this return type
-LL | / if let 0 = 1 {
-LL | | 3
-LL | | }
- | |_____^ expected `usize`, found `()`
- |
- = note: `if` expressions without `else` evaluate to `()`
- = help: consider adding an `else` block that evaluates to the expected type
-
-error: aborting due to 6 previous errors
-
-For more information about this error, try `rustc --explain E0317`.
diff --git a/src/test/ui/expr/if/if-without-else-result.rs b/src/test/ui/expr/if/if-without-else-result.rs
deleted file mode 100644
index 95604758a..000000000
--- a/src/test/ui/expr/if/if-without-else-result.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-fn main() {
- let a = if true { true };
- //~^ ERROR `if` may be missing an `else` clause [E0317]
- //~| expected `bool`, found `()`
- println!("{}", a);
-}
diff --git a/src/test/ui/expr/if/if-without-else-result.stderr b/src/test/ui/expr/if/if-without-else-result.stderr
deleted file mode 100644
index 317faf7c6..000000000
--- a/src/test/ui/expr/if/if-without-else-result.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0317]: `if` may be missing an `else` clause
- --> $DIR/if-without-else-result.rs:2:13
- |
-LL | let a = if true { true };
- | ^^^^^^^^^^----^^
- | | |
- | | found here
- | expected `bool`, found `()`
- |
- = 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`.
diff --git a/src/test/ui/expr/if/issue-4201.rs b/src/test/ui/expr/if/issue-4201.rs
deleted file mode 100644
index 59c465b9e..000000000
--- a/src/test/ui/expr/if/issue-4201.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-fn main() {
- let a = if true {
- 0
- } else if false {
-//~^ ERROR `if` may be missing an `else` clause
-//~| expected integer, found `()`
- 1
- };
-}
diff --git a/src/test/ui/expr/if/issue-4201.stderr b/src/test/ui/expr/if/issue-4201.stderr
deleted file mode 100644
index 612fe7764..000000000
--- a/src/test/ui/expr/if/issue-4201.stderr
+++ /dev/null
@@ -1,18 +0,0 @@
-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 integer, found `()`
- |
- = 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`.