about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorIcxolu <10486322+Icxolu@users.noreply.github.com>2023-05-03 20:06:29 +0200
committerIcxolu <10486322+Icxolu@users.noreply.github.com>2023-05-03 20:55:14 +0200
commit8701009860273828cb6853e1dba79a82e1271619 (patch)
tree7863b5d7fd1232f3f0e23dd0d065b7ec39227ee7 /tests
parent4e049036313759df55c4c68ad87e1cd7ad5cf214 (diff)
downloadrust-8701009860273828cb6853e1dba79a82e1271619.tar.gz
rust-8701009860273828cb6853e1dba79a82e1271619.zip
add more test cases
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/default_constructed_unit_structs.rs45
-rw-r--r--tests/ui/default_constructed_unit_structs.stderr20
2 files changed, 58 insertions, 7 deletions
diff --git a/tests/ui/default_constructed_unit_structs.rs b/tests/ui/default_constructed_unit_structs.rs
index 505be09a50e..276fc40aa18 100644
--- a/tests/ui/default_constructed_unit_structs.rs
+++ b/tests/ui/default_constructed_unit_structs.rs
@@ -5,9 +5,23 @@ use std::marker::PhantomData;
 #[derive(Default)]
 struct UnitStruct;
 
+impl UnitStruct {
+    fn new() -> Self {
+        //should lint
+        Self::default()
+    }
+}
+
 #[derive(Default)]
 struct TupleStruct(usize);
 
+impl TupleStruct {
+    fn new() -> Self {
+        // should not lint
+        Self(Default::default())
+    }
+}
+
 // no lint for derived impl
 #[derive(Default)]
 struct NormalStruct {
@@ -39,6 +53,13 @@ impl NormalStruct {
             inner: PhantomData::default(),
         }
     }
+
+    fn new2() -> Self {
+        // should not lint
+        Self {
+            inner: Default::default(),
+        }
+    }
 }
 
 #[derive(Default)]
@@ -51,8 +72,29 @@ impl<T: Default> GenericStruct<T> {
         // should not lint
         Self { t: T::default() }
     }
+
+    fn new2() -> Self {
+        // should not lint
+        Self { t: Default::default() }
+    }
+}
+
+struct FakeDefault;
+impl FakeDefault {
+    fn default() -> Self {
+        Self
+    }
 }
 
+impl Default for FakeDefault {
+    fn default() -> Self {
+        Self
+    }
+}
+
+#[derive(Default)]
+struct EmptyStruct {}
+
 #[derive(Default)]
 #[non_exhaustive]
 struct NonExhaustiveStruct;
@@ -69,4 +111,7 @@ fn main() {
     let _ = NonExhaustiveStruct::default();
     let _ = SomeEnum::default();
     let _ = NonDefaultStruct::default();
+    let _ = EmptyStruct::default();
+    let _ = FakeDefault::default();
+    let _ = <FakeDefault as Default>::default();
 }
diff --git a/tests/ui/default_constructed_unit_structs.stderr b/tests/ui/default_constructed_unit_structs.stderr
index 23ffa278288..fa39ef4cda1 100644
--- a/tests/ui/default_constructed_unit_structs.stderr
+++ b/tests/ui/default_constructed_unit_structs.stderr
@@ -1,28 +1,34 @@
 error: use of `default` to create a unit struct
-  --> $DIR/default_constructed_unit_structs.rs:39:31
+  --> $DIR/default_constructed_unit_structs.rs:11:13
    |
-LL |             inner: PhantomData::default(),
-   |                               ^^^^^^^^^^^ help: remove this call to `default`
+LL |         Self::default()
+   |             ^^^^^^^^^^^ help: remove this call to `default`
    |
    = note: `-D clippy::default-constructed-unit-structs` implied by `-D warnings`
 
 error: use of `default` to create a unit struct
-  --> $DIR/default_constructed_unit_structs.rs:62:33
+  --> $DIR/default_constructed_unit_structs.rs:53:31
+   |
+LL |             inner: PhantomData::default(),
+   |                               ^^^^^^^^^^^ help: remove this call to `default`
+
+error: use of `default` to create a unit struct
+  --> $DIR/default_constructed_unit_structs.rs:104:33
    |
 LL |     let _ = PhantomData::<usize>::default();
    |                                 ^^^^^^^^^^^ help: remove this call to `default`
 
 error: use of `default` to create a unit struct
-  --> $DIR/default_constructed_unit_structs.rs:63:42
+  --> $DIR/default_constructed_unit_structs.rs:105:42
    |
 LL |     let _: PhantomData<i32> = PhantomData::default();
    |                                          ^^^^^^^^^^^ help: remove this call to `default`
 
 error: use of `default` to create a unit struct
-  --> $DIR/default_constructed_unit_structs.rs:64:23
+  --> $DIR/default_constructed_unit_structs.rs:106:23
    |
 LL |     let _ = UnitStruct::default();
    |                       ^^^^^^^^^^^ help: remove this call to `default`
 
-error: aborting due to 4 previous errors
+error: aborting due to 5 previous errors