]> git.lizzy.rs Git - rust.git/commitdiff
Add test for `for` loop maybe initializing binding
authorEsteban Küber <esteban@kuber.com.ar>
Wed, 22 Jun 2022 18:26:08 +0000 (11:26 -0700)
committerEsteban Küber <esteban@kuber.com.ar>
Thu, 7 Jul 2022 19:25:56 +0000 (12:25 -0700)
src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.rs [new file with mode: 0644]
src/test/ui/borrowck/borrowck-for-loop-uninitialized-binding.stderr [new file with mode: 0644]

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 (file)
index 0000000..f619c04
--- /dev/null
@@ -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 (file)
index 0000000..c08c93f
--- /dev/null
@@ -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`.