]> git.lizzy.rs Git - rust.git/commitdiff
Add failing tests for generic struct
authorTheDoctor314 <64731940+TheDoctor314@users.noreply.github.com>
Mon, 1 Nov 2021 16:47:27 +0000 (22:17 +0530)
committerTheDoctor314 <64731940+TheDoctor314@users.noreply.github.com>
Wed, 10 Nov 2021 07:23:48 +0000 (12:53 +0530)
crates/ide_assists/src/handlers/replace_derive_with_manual_impl.rs

index 042f31e5c4dd0730b5806cb079ad4e88acc005c1..a86fe3fa16933f8b812b00da64895084d4392119 100644 (file)
@@ -1048,6 +1048,54 @@ impl Debug for Foo {
         )
     }
 
+    #[test]
+    fn add_custom_impl_default_generic_record_struct() {
+        check_assist(
+            replace_derive_with_manual_impl,
+            r#"
+//- minicore: default
+#[derive(Defau$0lt)]
+struct Foo<T, U> {
+    foo: T,
+    bar: U,
+}
+"#,
+            r#"
+struct Foo<T, U> {
+    foo: T,
+    bar: U,
+}
+
+impl<T, U> Default for Foo<T, U> {
+    $0fn default() -> Self {
+        Self { foo: Default::default(), bar: Default::default() }
+    }
+}
+"#,
+        )
+    }
+
+    #[test]
+    fn add_custom_impl_clone_generic_tuple_struct() {
+        check_assist(
+            replace_derive_with_manual_impl,
+            r#"
+//- minicore: clone
+#[derive(Clo$0ne)]
+struct Foo<T>(T, usize);
+"#,
+            r#"
+struct Foo<T>(T, usize);
+
+impl<T> Clone for Foo<T> {
+    $0fn clone(&self) -> Self {
+        Self(self.0.clone(), self.1.clone())
+    }
+}
+"#,
+        )
+    }
+
     #[test]
     fn test_ignore_derive_macro_without_input() {
         check_assist_not_applicable(