about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/impl-trait/in-trait/opaque-in-impl.rs36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs b/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs
index a777cbcd529..2e06629699a 100644
--- a/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs
+++ b/src/test/ui/impl-trait/in-trait/opaque-in-impl.rs
@@ -3,18 +3,46 @@
 #![feature(return_position_impl_trait_in_trait)]
 #![allow(incomplete_features)]
 
-use std::fmt::Display;
+use std::fmt::Debug;
 
 trait Foo {
-    fn bar(&self) -> impl Display;
+    fn foo(&self) -> impl Debug;
 }
 
 impl Foo for () {
-    fn bar(&self) -> impl Display {
+    fn foo(&self) -> impl Debug {
         "Hello, world"
     }
 }
 
+impl<T: Default + Debug> Foo for std::marker::PhantomData<T> {
+    fn foo(&self) -> impl Debug {
+        T::default()
+    }
+}
+
+trait Bar {
+    fn bar<T>(&self) -> impl Debug;
+}
+
+impl Bar for () {
+    fn bar<T>(&self) -> impl Debug {
+        format!("Hello with generic {}", std::any::type_name::<T>())
+    }
+}
+
+trait Baz {
+    fn baz(&self) -> impl Debug + '_;
+}
+
+impl Baz for String {
+    fn baz(&self) -> impl Debug + '_ {
+        (self,)
+    }
+}
+
 fn main() {
-    println!("{}", ().bar());
+    println!("{:?}", ().foo());
+    println!("{:?}", ().bar::<u64>());
+    println!("{:?}", "hi".to_string().baz());
 }