about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2019-09-18 00:09:19 +0200
committerJonas Schievink <jonasschievink@gmail.com>2019-10-05 15:33:24 +0200
commit2cd5030ef592a2d4094145060c031dcae66e624f (patch)
treef1b85142ec44701b7d1440281682cfceb0c42df4 /src/test/ui
parent2e7244807a7878f6eca3eb7d97ae9b413aa49014 (diff)
downloadrust-2cd5030ef592a2d4094145060c031dcae66e624f.tar.gz
rust-2cd5030ef592a2d4094145060c031dcae66e624f.zip
Deny specializing items not in the parent impl
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/specialization/auxiliary/cross_crates_defaults.rs4
-rw-r--r--src/test/ui/specialization/issue-36804.rs4
-rw-r--r--src/test/ui/specialization/specialization-default-methods.rs5
3 files changed, 10 insertions, 3 deletions
diff --git a/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs b/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs
index 5cf975b5752..1e5555355c3 100644
--- a/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs
+++ b/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs
@@ -22,7 +22,9 @@ pub trait Bar {
     fn bar(&self) -> i32 { 0 }
 }
 
-impl<T> Bar for T {} // use the provided method
+impl<T> Bar for T {
+    default fn bar(&self) -> i32 { 0 }
+}
 
 impl Bar for i32 {
     fn bar(&self) -> i32 { 1 }
diff --git a/src/test/ui/specialization/issue-36804.rs b/src/test/ui/specialization/issue-36804.rs
index 36cb939bc48..9546a5dd5f5 100644
--- a/src/test/ui/specialization/issue-36804.rs
+++ b/src/test/ui/specialization/issue-36804.rs
@@ -13,6 +13,10 @@ where
     fn next(&mut self) -> Option<T> {
         unimplemented!()
     }
+
+    default fn count(self) -> usize where Self: Sized {
+        self.fold(0, |cnt, _| cnt + 1)
+    }
 }
 
 impl<'a, I, T: 'a> Iterator for Cloned<I>
diff --git a/src/test/ui/specialization/specialization-default-methods.rs b/src/test/ui/specialization/specialization-default-methods.rs
index 5d65a0457e7..9ae3d1e9f39 100644
--- a/src/test/ui/specialization/specialization-default-methods.rs
+++ b/src/test/ui/specialization/specialization-default-methods.rs
@@ -55,8 +55,9 @@ trait Bar {
 //                   /  \
 //            Vec<i32>  $Vec<i64>
 
-// use the provided method
-impl<T> Bar for T {}
+impl<T> Bar for T {
+    default fn bar(&self) -> i32 { 0 }
+}
 
 impl Bar for i32 {
     fn bar(&self) -> i32 { 1 }