about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorGabriel Fernandes <fernandesbgabriel@gmail.com>2024-02-11 21:11:13 -0300
committerGabriel Fernandes <fernandesbgabriel@gmail.com>2024-02-11 21:11:13 -0300
commit83555914edf10727bab5a97113ce2b3faa9abb7b (patch)
tree6004a80b162867b802cbd35883946c2f6ee8eabf /tests
parentfff46c1667a0f104e4537f638abfa35527bb541b (diff)
downloadrust-83555914edf10727bab5a97113ce2b3faa9abb7b.tar.gz
rust-83555914edf10727bab5a97113ce2b3faa9abb7b.zip
[mem_replace_with_default] No longer triggers on unused expression
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/mem_replace.fixed8
-rw-r--r--tests/ui/mem_replace.rs8
-rw-r--r--tests/ui/mem_replace.stderr10
-rw-r--r--tests/ui/mem_replace_macro.rs4
-rw-r--r--tests/ui/mem_replace_macro.stderr6
5 files changed, 26 insertions, 10 deletions
diff --git a/tests/ui/mem_replace.fixed b/tests/ui/mem_replace.fixed
index 453d0bcc57c..78d8b3e9bce 100644
--- a/tests/ui/mem_replace.fixed
+++ b/tests/ui/mem_replace.fixed
@@ -71,6 +71,14 @@ fn dont_lint_primitive() {
     let _ = std::mem::replace(&mut pint, 0);
 }
 
+// lint is disabled for expressions that are not used because changing to `take` is not the
+// recommended fix. Additionally, the `replace` is #[must_use], so that lint will provide
+// the correct suggestion
+fn dont_lint_not_used() {
+    let mut s = String::from("foo");
+    std::mem::replace(&mut s, String::default());
+}
+
 fn main() {
     replace_option_with_none();
     replace_with_default();
diff --git a/tests/ui/mem_replace.rs b/tests/ui/mem_replace.rs
index 0c4e0f6032d..28915bf6dae 100644
--- a/tests/ui/mem_replace.rs
+++ b/tests/ui/mem_replace.rs
@@ -71,6 +71,14 @@ fn dont_lint_primitive() {
     let _ = std::mem::replace(&mut pint, 0);
 }
 
+// lint is disabled for expressions that are not used because changing to `take` is not the
+// recommended fix. Additionally, the `replace` is #[must_use], so that lint will provide
+// the correct suggestion
+fn dont_lint_not_used() {
+    let mut s = String::from("foo");
+    std::mem::replace(&mut s, String::default());
+}
+
 fn main() {
     replace_option_with_none();
     replace_with_default();
diff --git a/tests/ui/mem_replace.stderr b/tests/ui/mem_replace.stderr
index ae5f4e5340a..c8ddf585fd2 100644
--- a/tests/ui/mem_replace.stderr
+++ b/tests/ui/mem_replace.stderr
@@ -119,31 +119,31 @@ LL |     let _ = std::mem::replace(&mut slice, &[]);
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut slice)`
 
 error: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take`
-  --> $DIR/mem_replace.rs:89:13
+  --> $DIR/mem_replace.rs:97:13
    |
 LL |     let _ = std::mem::replace(&mut s, String::default());
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut s)`
 
 error: replacing an `Option` with `None`
-  --> $DIR/mem_replace.rs:119:13
+  --> $DIR/mem_replace.rs:127:13
    |
 LL |     let _ = std::mem::replace(&mut f.0, None);
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `f.0.take()`
 
 error: replacing an `Option` with `None`
-  --> $DIR/mem_replace.rs:120:13
+  --> $DIR/mem_replace.rs:128:13
    |
 LL |     let _ = std::mem::replace(&mut *f, None);
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `(*f).take()`
 
 error: replacing an `Option` with `None`
-  --> $DIR/mem_replace.rs:121:13
+  --> $DIR/mem_replace.rs:129:13
    |
 LL |     let _ = std::mem::replace(&mut b.opt, None);
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::take()` instead: `b.opt.take()`
 
 error: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take`
-  --> $DIR/mem_replace.rs:123:13
+  --> $DIR/mem_replace.rs:131:13
    |
 LL |     let _ = std::mem::replace(&mut b.val, String::default());
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `std::mem::take(&mut b.val)`
diff --git a/tests/ui/mem_replace_macro.rs b/tests/ui/mem_replace_macro.rs
index 132873858b7..c14ea2942f3 100644
--- a/tests/ui/mem_replace_macro.rs
+++ b/tests/ui/mem_replace_macro.rs
@@ -7,6 +7,6 @@ use proc_macros::{external, inline_macros};
 #[inline_macros]
 fn main() {
     let s = &mut String::from("foo");
-    inline!(std::mem::replace($s, Default::default()));
-    external!(std::mem::replace($s, Default::default()));
+    let _ = inline!(std::mem::replace($s, Default::default()));
+    let _ = external!(std::mem::replace($s, Default::default()));
 }
diff --git a/tests/ui/mem_replace_macro.stderr b/tests/ui/mem_replace_macro.stderr
index c6435e94e96..63043e6bf26 100644
--- a/tests/ui/mem_replace_macro.stderr
+++ b/tests/ui/mem_replace_macro.stderr
@@ -1,8 +1,8 @@
 error: replacing a value of type `T` with `T::default()` is better expressed using `std::mem::take`
-  --> $DIR/mem_replace_macro.rs:10:13
+  --> $DIR/mem_replace_macro.rs:10:21
    |
-LL |     inline!(std::mem::replace($s, Default::default()));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LL |     let _ = inline!(std::mem::replace($s, Default::default()));
+   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `-D clippy::mem-replace-with-default` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(clippy::mem_replace_with_default)]`