about summary refs log tree commit diff
path: root/tests/ui/impl-trait/trait_upcasting_reference_mismatch.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/impl-trait/trait_upcasting_reference_mismatch.rs')
-rw-r--r--tests/ui/impl-trait/trait_upcasting_reference_mismatch.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/trait_upcasting_reference_mismatch.rs b/tests/ui/impl-trait/trait_upcasting_reference_mismatch.rs
new file mode 100644
index 00000000000..bed88db1acc
--- /dev/null
+++ b/tests/ui/impl-trait/trait_upcasting_reference_mismatch.rs
@@ -0,0 +1,18 @@
+//! Show an uninformative diagnostic that we could possibly improve in the future
+
+trait Trait<T> {}
+
+impl<T, U> Trait<T> for U {}
+
+fn hello() -> &'static (dyn Trait<impl Sized> + Send) {
+    //~^ ERROR: type annotations needed
+    if false {
+        let x = hello();
+        let _: &'static dyn Trait<()> = &x;
+        //^ Note the extra `&`, paired with the blanket impl causing
+        // `impl Sized` to never get a hidden type registered.
+    }
+    todo!()
+}
+
+fn main() {}