diff --git a/tests/ui/use_self.fixed b/tests/ui/use_self.fixed
index 73666f2faae..90133788526 100644
--- a/tests/ui/use_self.fixed
+++ b/tests/ui/use_self.fixed
@@ -313,3 +313,22 @@ mod rustfix {
         }
     }
 }
+
+mod issue3567 {
+    struct TestStruct {}
+    impl TestStruct {
+        fn from_something() -> Self {
+            Self {}
+        }
+    }
+
+    trait Test {
+        fn test() -> TestStruct;
+    }
+
+    impl Test for TestStruct {
+        fn test() -> TestStruct {
+            Self::from_something()
+        }
+    }
+}
diff --git a/tests/ui/use_self.rs b/tests/ui/use_self.rs
index 2e2b4f8b9d8..e6900b91534 100644
--- a/tests/ui/use_self.rs
+++ b/tests/ui/use_self.rs
@@ -313,3 +313,22 @@ mod rustfix {
         }
     }
 }
+
+mod issue3567 {
+    struct TestStruct {}
+    impl TestStruct {
+        fn from_something() -> Self {
+            Self {}
+        }
+    }
+
+    trait Test {
+        fn test() -> TestStruct;
+    }
+
+    impl Test for TestStruct {
+        fn test() -> TestStruct {
+            TestStruct::from_something()
+        }
+    }
+}
diff --git a/tests/ui/use_self.stderr b/tests/ui/use_self.stderr
index 699e735137f..d1bfb0e230d 100644
--- a/tests/ui/use_self.stderr
+++ b/tests/ui/use_self.stderr
@@ -216,5 +216,11 @@ error: unnecessary structure name repetition
 LL |             nested::A {};
    |             ^^^^^^^^^ help: use the applicable keyword: `Self`
 
-error: aborting due to 35 previous errors
+error: unnecessary structure name repetition
+  --> $DIR/use_self.rs:331:13
+   |
+LL |             TestStruct::from_something()
+   |             ^^^^^^^^^^ help: use the applicable keyword: `Self`
+
+error: aborting due to 36 previous errors