about summary refs log tree commit diff
path: root/tests/ui/reserve_after_initialization.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/reserve_after_initialization.rs')
-rw-r--r--tests/ui/reserve_after_initialization.rs51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/ui/reserve_after_initialization.rs b/tests/ui/reserve_after_initialization.rs
new file mode 100644
index 00000000000..b57a8e162c5
--- /dev/null
+++ b/tests/ui/reserve_after_initialization.rs
@@ -0,0 +1,51 @@
+//@aux-build:proc_macros.rs
+#![warn(clippy::reserve_after_initialization)]
+#![no_main]
+
+extern crate proc_macros;
+use proc_macros::{external, with_span};
+
+// Should lint
+fn standard() {
+    let mut v1: Vec<usize> = vec![];
+    v1.reserve(10);
+}
+
+// Should lint
+fn capacity_as_expr() {
+    let capacity = 10;
+    let mut v2: Vec<usize> = vec![];
+    v2.reserve(capacity);
+}
+
+// Shouldn't lint
+fn vec_init_with_argument() {
+    let mut v3 = vec![1];
+    v3.reserve(10);
+}
+
+// Shouldn't lint
+fn called_with_capacity() {
+    let _v4: Vec<usize> = Vec::with_capacity(10);
+}
+
+// Should lint
+fn assign_expression() {
+    let mut v5: Vec<usize> = Vec::new();
+    v5 = Vec::new();
+    v5.reserve(10);
+}
+
+fn in_macros() {
+    external! {
+        let mut v: Vec<usize> = vec![];
+        v.reserve(10);
+    }
+
+    with_span! {
+        span
+
+        let mut v: Vec<usize> = vec![];
+        v.reserve(10);
+    }
+}