about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs7
-rw-r--r--tests/ui/impl-trait/in-trait/foreign.rs14
2 files changed, 16 insertions, 5 deletions
diff --git a/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs b/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs
index 74f7bc603aa..ffeabe5c2ed 100644
--- a/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs
+++ b/tests/ui/impl-trait/in-trait/auxiliary/rpitit.rs
@@ -2,12 +2,13 @@
 
 #![feature(return_position_impl_trait_in_trait)]
 
+use std::ops::Deref;
+
 pub trait Foo {
-    fn bar() -> impl Sized;
+    fn bar() -> impl Deref<Target = impl Sized>;
 }
 
 pub struct Foreign;
-
 impl Foo for Foreign {
-    fn bar() {}
+    fn bar() -> &'static () { &() }
 }
diff --git a/tests/ui/impl-trait/in-trait/foreign.rs b/tests/ui/impl-trait/in-trait/foreign.rs
index df77372aabd..f4972d948b2 100644
--- a/tests/ui/impl-trait/in-trait/foreign.rs
+++ b/tests/ui/impl-trait/in-trait/foreign.rs
@@ -5,7 +5,17 @@
 
 extern crate rpitit;
 
+use std::sync::Arc;
+
+// Implement an RPITIT from another crate.
+struct Local;
+impl rpitit::Foo for Local {
+    fn bar() -> Arc<String> { Arc::new(String::new()) }
+}
+
 fn main() {
-    // Witness an RPITIT from another crate
-    let () = <rpitit::Foreign as rpitit::Foo>::bar();
+    // Witness an RPITIT from another crate.
+    let &() = <rpitit::Foreign as rpitit::Foo>::bar();
+
+    let x: Arc<String> = <Local as rpitit::Foo>::bar();
 }