summaryrefslogtreecommitdiffstats
path: root/src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs')
-rw-r--r--src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs b/src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs
new file mode 100644
index 000000000..141f36369
--- /dev/null
+++ b/src/test/ui/error-codes/e0119/auxiliary/issue-23563-a.rs
@@ -0,0 +1,25 @@
+// Ref: https://github.com/rust-lang/rust/issues/23563#issuecomment-260751672
+
+pub trait LolTo<T> {
+ fn convert_to(&self) -> T;
+}
+
+pub trait LolInto<T>: Sized {
+ fn convert_into(self) -> T;
+}
+
+pub trait LolFrom<T> {
+ fn from(_: T) -> Self;
+}
+
+impl<'a, T: ?Sized, U> LolInto<U> for &'a T where T: LolTo<U> {
+ fn convert_into(self) -> U {
+ self.convert_to()
+ }
+}
+
+impl<T, U> LolFrom<T> for U where T: LolInto<U> {
+ fn from(t: T) -> U {
+ t.convert_into()
+ }
+}