Repository: rust-analyzer/rust-analyzer
Pull request #11826 (2022-03-26 18:40:19)

Revert "Emit #[must_use] in Generate new assist"
CC https://github.com/rust-analyzer/rust-analyzer/pull/11737#issuecomment-1079740305


Patch:
diff --git a/crates/ide_assists/src/handlers/generate_new.rs b/crates/ide_assists/src/handlers/generate_new.rs
index eb9f1d04e1..6a1f710f6d 100644
--- a/crates/ide_assists/src/handlers/generate_new.rs
+++ b/crates/ide_assists/src/handlers/generate_new.rs
@@ -23,7 +23,6 @@ use crate::{
 // }
 //
 // impl<T: Clone> Ctx<T> {
-//     #[must_use]
 //     fn $0new(data: T) -> Self { Self { data } }
 // }
 // ```
@@ -55,13 +54,7 @@ pub(crate) fn generate_new(acc: &mut Assists, ctx: &AssistContext) -> Option<()>
             .format(", ");
         let fields = field_list.fields().filter_map(|f| f.name()).format(", ");
 
-        format_to!(
-            buf,
-            "    #[must_use]\n    {}fn new({}) -> Self {{ Self {{ {} }} }}",
-            vis,
-            params,
-            fields
-        );
+        format_to!(buf, "    {}fn new({}) -> Self {{ Self {{ {} }} }}", vis, params, fields);
 
         let start_offset = impl_def
             .and_then(|impl_def| find_impl_block_start(impl_def, &mut buf))
@@ -97,7 +90,6 @@ struct Foo {$0}
 struct Foo {}
 
 impl Foo {
-    #[must_use]
     fn $0new() -> Self { Self {  } }
 }
 "#,
@@ -111,7 +103,6 @@ struct Foo<T: Clone> {$0}
 struct Foo<T: Clone> {}
 
 impl<T: Clone> Foo<T> {
-    #[must_use]
     fn $0new() -> Self { Self {  } }
 }
 "#,
@@ -125,7 +116,6 @@ struct Foo<'a, T: Foo<'a>> {$0}
 struct Foo<'a, T: Foo<'a>> {}
 
 impl<'a, T: Foo<'a>> Foo<'a, T> {
-    #[must_use]
     fn $0new() -> Self { Self {  } }
 }
 "#,
@@ -139,7 +129,6 @@ struct Foo { baz: String $0}
 struct Foo { baz: String }
 
 impl Foo {
-    #[must_use]
     fn $0new(baz: String) -> Self { Self { baz } }
 }
 "#,
@@ -153,7 +142,6 @@ struct Foo { baz: String, qux: Vec<i32> $0}
 struct Foo { baz: String, qux: Vec<i32> }
 
 impl Foo {
-    #[must_use]
     fn $0new(baz: String, qux: Vec<i32>) -> Self { Self { baz, qux } }
 }
 "#,
@@ -171,7 +159,6 @@ struct Foo { pub baz: String, pub qux: Vec<i32> $0}
 struct Foo { pub baz: String, pub qux: Vec<i32> }
 
 impl Foo {
-    #[must_use]
     fn $0new(baz: String, qux: Vec<i32>) -> Self { Self { baz, qux } }
 }
 "#,
@@ -191,7 +178,6 @@ impl Foo {}
 struct Foo {}
 
 impl Foo {
-    #[must_use]
     fn $0new() -> Self { Self {  } }
 }
 "#,
@@ -209,7 +195,6 @@ impl Foo {
 struct Foo {}
 
 impl Foo {
-    #[must_use]
     fn $0new() -> Self { Self {  } }
 
     fn qux(&self) {}
@@ -233,7 +218,6 @@ impl Foo {
 struct Foo {}
 
 impl Foo {
-    #[must_use]
     fn $0new() -> Self { Self {  } }
 
     fn qux(&self) {}
@@ -256,7 +240,6 @@ pub struct Foo {$0}
 pub struct Foo {}
 
 impl Foo {
-    #[must_use]
     pub fn $0new() -> Self { Self {  } }
 }
 "#,
@@ -270,7 +253,6 @@ pub(crate) struct Foo {$0}
 pub(crate) struct Foo {}
 
 impl Foo {
-    #[must_use]
     pub(crate) fn $0new() -> Self { Self {  } }
 }
 "#,
@@ -366,7 +348,6 @@ pub struct Source<T> {
 }
 
 impl<T> Source<T> {
-    #[must_use]
     pub fn $0new(file_id: HirFileId, ast: T) -> Self { Self { file_id, ast } }
 
     pub fn map<F: FnOnce(T) -> U, U>(self, f: F) -> Source<U> {


Test patch:
diff --git a/crates/ide_assists/src/tests/generated.rs b/crates/ide_assists/src/tests/generated.rs
index 3d0e134a9b..282374b3cf 100644
--- a/crates/ide_assists/src/tests/generated.rs
+++ b/crates/ide_assists/src/tests/generated.rs
@@ -1139,7 +1139,6 @@ struct Ctx<T: Clone> {
 }
 
 impl<T: Clone> Ctx<T> {
-    #[must_use]
     fn $0new(data: T) -> Self { Self { data } }
 }
 "#####,