about summary refs log tree commit diff
path: root/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-27 02:07:23 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-27 18:56:17 +0300
commit5486cc69bdcc1c0027d7d06cd7630a2c48e3b063 (patch)
treecc51bb82d6b0e4456f49f008f551c87573eeec53 /src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs
parent9be35f82c1abf2ecbab489bca9eca138ea648312 (diff)
downloadrust-5486cc69bdcc1c0027d7d06cd7630a2c48e3b063.tar.gz
rust-5486cc69bdcc1c0027d7d06cd7630a2c48e3b063.zip
tests: Move run-pass tests with naming conflicts to ui
Diffstat (limited to 'src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs')
-rw-r--r--src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs b/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs
new file mode 100644
index 00000000000..2b8ca6bb1dd
--- /dev/null
+++ b/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs
@@ -0,0 +1,34 @@
+// run-pass
+
+// Tests that we can combine a default impl that supplies one method with a
+// full impl that supplies the other, and they can invoke one another.
+
+#![feature(specialization)]
+
+trait Foo {
+    fn foo_one(&self) -> &'static str;
+    fn foo_two(&self) -> &'static str;
+    fn foo_three(&self) -> &'static str;
+}
+
+struct MyStruct;
+
+default impl<T> Foo for T {
+    fn foo_one(&self) -> &'static str {
+        self.foo_three()
+    }
+}
+
+impl Foo for MyStruct {
+    fn foo_two(&self) -> &'static str {
+        self.foo_one()
+    }
+
+    fn foo_three(&self) -> &'static str {
+        "generic"
+    }
+}
+
+fn main() {
+    assert!(MyStruct.foo_two() == "generic");
+}