about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2022-06-22 11:26:08 -0700
committerEsteban Küber <esteban@kuber.com.ar>2022-07-07 12:25:56 -0700
commit8ab1cd9fdcce6b189e37d481a9cc5a4f67c5ca72 (patch)
treec3f38002b05f653de9777e5c5a2c8ac5f3bcc903
parent95923d1676f565e6358183d5428513c1803f79c2 (diff)
downloadrust-8ab1cd9fdcce6b189e37d481a9cc5a4f67c5ca72.tar.gz
rust-8ab1cd9fdcce6b189e37d481a9cc5a4f67c5ca72.zip
Add test for `for` loop maybe initializing binding
-rw-r--r--src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs7
-rw-r--r--src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr13
2 files changed, 20 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs b/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs
new file mode 100644
index 00000000000..f619c045b25
--- /dev/null
+++ b/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs
@@ -0,0 +1,7 @@
+fn f() -> isize {
+    let mut x: isize;
+    for _ in 0..0 { x = 10; }
+    return x; //~ ERROR E0381
+}
+
+fn main() { f(); }
diff --git a/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr b/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr
new file mode 100644
index 00000000000..c08c93f3617
--- /dev/null
+++ b/src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr
@@ -0,0 +1,13 @@
+error[E0381]: used binding `x` is possibly-uninitialized
+  --> $DIR/borrowck-for-loop-uninitialized-binding.rs:4:12
+   |
+LL |     let mut x: isize;
+   |         ----- binding declared here but left uninitialized
+LL |     for _ in 0..0 { x = 10; }
+   |              ---- if the `for` loop runs 0 times, `x` is not initialized 
+LL |     return x;
+   |            ^ `x` used here but it is possibly-uninitialized
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0381`.