diff options
| author | Jonas Schievink <jonasschievink@gmail.com> | 2019-09-18 00:09:19 +0200 |
|---|---|---|
| committer | Jonas Schievink <jonasschievink@gmail.com> | 2019-10-05 15:33:24 +0200 |
| commit | 2cd5030ef592a2d4094145060c031dcae66e624f (patch) | |
| tree | f1b85142ec44701b7d1440281682cfceb0c42df4 /src/test/ui | |
| parent | 2e7244807a7878f6eca3eb7d97ae9b413aa49014 (diff) | |
| download | rust-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.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/specialization/issue-36804.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/specialization/specialization-default-methods.rs | 5 |
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 } |
