summaryrefslogtreecommitdiffstats
path: root/tests/ui/loops/loop-break-value.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/loops/loop-break-value.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/loops/loop-break-value.rs')
-rw-r--r--tests/ui/loops/loop-break-value.rs98
1 files changed, 98 insertions, 0 deletions
diff --git a/tests/ui/loops/loop-break-value.rs b/tests/ui/loops/loop-break-value.rs
new file mode 100644
index 000000000..51c9a36a0
--- /dev/null
+++ b/tests/ui/loops/loop-break-value.rs
@@ -0,0 +1,98 @@
+#![feature(never_type)]
+
+fn main() {
+ let val: ! = loop { break break; };
+ //~^ ERROR mismatched types
+
+ loop {
+ if true {
+ break "asdf";
+ } else {
+ break 123; //~ ERROR mismatched types
+ }
+ };
+
+ let _: i32 = loop {
+ break "asdf"; //~ ERROR mismatched types
+ };
+
+ let _: i32 = 'outer_loop: loop {
+ loop {
+ break 'outer_loop "nope"; //~ ERROR mismatched types
+ break "ok";
+ };
+ };
+
+ 'while_loop: while true { //~ WARN denote infinite loops with
+ break;
+ break (); //~ ERROR `break` with value from a `while` loop
+ loop {
+ break 'while_loop 123;
+ //~^ ERROR `break` with value from a `while` loop
+ break 456;
+ break 789;
+ };
+ }
+
+ while let Some(_) = Some(()) {
+ if break () { //~ ERROR `break` with value from a `while` loop
+ }
+ }
+
+ while let Some(_) = Some(()) {
+ break None;
+ //~^ ERROR `break` with value from a `while` loop
+ }
+
+ 'while_let_loop: while let Some(_) = Some(()) {
+ loop {
+ break 'while_let_loop "nope";
+ //~^ ERROR `break` with value from a `while` loop
+ break 33;
+ };
+ }
+
+ for _ in &[1,2,3] {
+ break (); //~ ERROR `break` with value from a `for` loop
+ break [()];
+ //~^ ERROR `break` with value from a `for` loop
+ }
+
+ 'for_loop: for _ in &[1,2,3] {
+ loop {
+ break Some(3);
+ break 'for_loop Some(17);
+ //~^ ERROR `break` with value from a `for` loop
+ };
+ }
+
+ let _: i32 = 'a: loop {
+ let _: () = 'b: loop {
+ break ('c: loop {
+ break;
+ break 'c 123; //~ ERROR mismatched types
+ });
+ break 'a 123;
+ };
+ };
+
+ loop {
+ break (break, break); //~ ERROR mismatched types
+ };
+
+ loop {
+ break;
+ break 2; //~ ERROR mismatched types
+ };
+
+ loop {
+ break 2;
+ break; //~ ERROR mismatched types
+ break 4;
+ };
+
+ 'LOOP: for _ in 0 .. 9 {
+ break LOOP;
+ //~^ ERROR cannot find value `LOOP` in this scope
+ }
+}