summaryrefslogtreecommitdiffstats
path: root/src/test/ui/const-generics/array-impls
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/const-generics/array-impls')
-rw-r--r--src/test/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs48
-rw-r--r--src/test/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs40
-rw-r--r--src/test/ui/const-generics/array-impls/alloc-types-impls-length-33.rs25
-rw-r--r--src/test/ui/const-generics/array-impls/core-traits-impls-length-32.rs66
-rw-r--r--src/test/ui/const-generics/array-impls/core-traits-impls-length-33.rs66
-rw-r--r--src/test/ui/const-generics/array-impls/into-iter-impls-length-32.rs40
-rw-r--r--src/test/ui/const-generics/array-impls/into-iter-impls-length-33.rs40
7 files changed, 325 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs b/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs
new file mode 100644
index 000000000..b4a083636
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-32.rs
@@ -0,0 +1,48 @@
+// check-pass
+
+pub fn yes_vec_partial_eq_array<A, B>() -> impl PartialEq<[B; 32]>
+where
+ A: PartialEq<B>,
+{
+ Vec::<A>::new()
+}
+
+pub fn yes_vec_partial_eq_ref_array<'a, A, B>() -> impl PartialEq<&'a [B; 32]>
+where
+ A: PartialEq<B>,
+{
+ Vec::<A>::new()
+}
+
+pub fn yes_array_into_vec<T>() -> Vec<T> {
+ [].into()
+}
+
+pub fn yes_array_into_box<T>() -> Box<[T]> {
+ [].into()
+}
+
+use std::collections::VecDeque;
+
+pub fn yes_vecdeque_partial_eq_array<A, B>() -> impl PartialEq<[B; 32]>
+where
+ A: PartialEq<B>,
+{
+ VecDeque::<A>::new()
+}
+
+pub fn yes_vecdeque_partial_eq_ref_array<'a, A, B>() -> impl PartialEq<&'a [B; 32]>
+where
+ A: PartialEq<B>,
+{
+ VecDeque::<A>::new()
+}
+
+pub fn yes_vecdeque_partial_eq_ref_mut_array<'a, A, B>() -> impl PartialEq<&'a mut [B; 32]>
+where
+ A: PartialEq<B>,
+{
+ VecDeque::<A>::new()
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs b/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs
new file mode 100644
index 000000000..35df3278a
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/alloc-traits-impls-length-33.rs
@@ -0,0 +1,40 @@
+// check-pass
+
+pub fn yes_vec_partial_eq_array<A, B>() -> impl PartialEq<[B; 33]>
+where
+ A: PartialEq<B>,
+{
+ Vec::<A>::new()
+}
+
+pub fn yes_vec_partial_eq_ref_array<'a, A, B>() -> impl PartialEq<&'a [B; 33]>
+where
+ A: PartialEq<B>,
+{
+ Vec::<A>::new()
+}
+
+use std::collections::VecDeque;
+
+pub fn yes_vecdeque_partial_eq_array<A, B>() -> impl PartialEq<[B; 33]>
+where
+ A: PartialEq<B>,
+{
+ VecDeque::<A>::new()
+}
+
+pub fn yes_vecdeque_partial_eq_ref_array<'a, A, B>() -> impl PartialEq<&'a [B; 33]>
+where
+ A: PartialEq<B>,
+{
+ VecDeque::<A>::new()
+}
+
+pub fn yes_vecdeque_partial_eq_ref_mut_array<'a, A, B>() -> impl PartialEq<&'a mut [B; 33]>
+where
+ A: PartialEq<B>,
+{
+ VecDeque::<A>::new()
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/array-impls/alloc-types-impls-length-33.rs b/src/test/ui/const-generics/array-impls/alloc-types-impls-length-33.rs
new file mode 100644
index 000000000..294b405e0
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/alloc-types-impls-length-33.rs
@@ -0,0 +1,25 @@
+// check-pass
+
+use std::{convert::TryFrom, rc::Rc, sync::Arc};
+
+pub fn yes_vec() {
+ let v: Vec<_> = [0; 33].into();
+}
+
+pub fn yes_box() {
+ let boxed_slice = Box::new([0; 33]) as Box<[i32]>;
+ let boxed_array = <Box<[i32; 33]>>::try_from(boxed_slice);
+ let boxed_slice = <Box<[i32]>>::from([0; 33]);
+}
+
+pub fn yes_rc() {
+ let boxed_slice = Rc::new([0; 33]) as Rc<[i32]>;
+ let boxed_array = <Rc<[i32; 33]>>::try_from(boxed_slice);
+}
+
+pub fn yes_arc() {
+ let boxed_slice = Arc::new([0; 33]) as Arc<[i32]>;
+ let boxed_array = <Arc<[i32; 33]>>::try_from(boxed_slice);
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/array-impls/core-traits-impls-length-32.rs b/src/test/ui/const-generics/array-impls/core-traits-impls-length-32.rs
new file mode 100644
index 000000000..9998bb84c
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/core-traits-impls-length-32.rs
@@ -0,0 +1,66 @@
+// check-pass
+
+pub fn yes_as_ref() -> impl AsRef<[u8]> {
+ [0; 32]
+}
+
+pub fn yes_as_mut() -> impl AsMut<[u8]> {
+ [0; 32]
+}
+
+pub fn yes_borrow() -> impl std::borrow::Borrow<[u8]> {
+ [0; 32]
+}
+
+pub fn yes_borrow_mut() -> impl std::borrow::BorrowMut<[u8]> {
+ [0; 32]
+}
+
+pub fn yes_try_from_slice() -> impl std::convert::TryFrom<&'static [u8]> {
+ [0; 32]
+}
+
+pub fn yes_ref_try_from_slice() -> impl std::convert::TryFrom<&'static [u8]> {
+ let a: &'static _ = &[0; 32];
+ a
+}
+
+pub fn yes_hash() -> impl std::hash::Hash {
+ [0; 32]
+}
+
+pub fn yes_debug() -> impl std::fmt::Debug {
+ [0; 32]
+}
+
+pub fn yes_ref_into_iterator() -> impl IntoIterator<Item=&'static u8> {
+ let a: &'static _ = &[0; 32];
+ a
+}
+
+pub fn yes_partial_eq() -> impl PartialEq<[u8; 32]> {
+ [0; 32]
+}
+
+pub fn yes_partial_eq_slice() -> impl PartialEq<[u8]> {
+ [0; 32]
+}
+
+pub fn yes_slice_partial_eq() -> impl PartialEq<[u8; 32]> {
+ let a: &'static _ = &[0; 32];
+ &a[..]
+}
+
+pub fn yes_eq() -> impl Eq {
+ [0; 32]
+}
+
+pub fn yes_partial_ord() -> impl PartialOrd<[u8; 32]> {
+ [0; 32]
+}
+
+pub fn yes_ord() -> impl Ord {
+ [0; 32]
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/array-impls/core-traits-impls-length-33.rs b/src/test/ui/const-generics/array-impls/core-traits-impls-length-33.rs
new file mode 100644
index 000000000..c609a7c6f
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/core-traits-impls-length-33.rs
@@ -0,0 +1,66 @@
+// check-pass
+
+pub fn yes_as_ref() -> impl AsRef<[u8]> {
+ [0; 33]
+}
+
+pub fn yes_as_mut() -> impl AsMut<[u8]> {
+ [0; 33]
+}
+
+pub fn yes_borrow() -> impl std::borrow::Borrow<[u8]> {
+ [0; 33]
+}
+
+pub fn yes_borrow_mut() -> impl std::borrow::BorrowMut<[u8]> {
+ [0; 33]
+}
+
+pub fn yes_try_from_slice() -> impl std::convert::TryFrom<&'static [u8]> {
+ [0; 33]
+}
+
+pub fn yes_ref_try_from_slice() -> impl std::convert::TryFrom<&'static [u8]> {
+ let a: &'static _ = &[0; 33];
+ a
+}
+
+pub fn yes_hash() -> impl std::hash::Hash {
+ [0; 33]
+}
+
+pub fn yes_debug() -> impl std::fmt::Debug {
+ [0; 33]
+}
+
+pub fn yes_ref_into_iterator() -> impl IntoIterator<Item=&'static u8> {
+ let a: &'static _ = &[0; 33];
+ a
+}
+
+pub fn yes_partial_eq() -> impl PartialEq<[u8; 33]> {
+ [0; 33]
+}
+
+pub fn yes_partial_eq_slice() -> impl PartialEq<[u8]> {
+ [0; 33]
+}
+
+pub fn yes_slice_partial_eq() -> impl PartialEq<[u8; 33]> {
+ let a: &'static _ = &[0; 33];
+ &a[..]
+}
+
+pub fn yes_eq() -> impl Eq {
+ [0; 33]
+}
+
+pub fn yes_partial_ord() -> impl PartialOrd<[u8; 33]> {
+ [0; 33]
+}
+
+pub fn yes_ord() -> impl Ord {
+ [0; 33]
+}
+
+fn main() {}
diff --git a/src/test/ui/const-generics/array-impls/into-iter-impls-length-32.rs b/src/test/ui/const-generics/array-impls/into-iter-impls-length-32.rs
new file mode 100644
index 000000000..457e5ae60
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/into-iter-impls-length-32.rs
@@ -0,0 +1,40 @@
+// check-pass
+
+#![feature(trusted_len)]
+
+use std::{
+ array::IntoIter,
+ fmt::Debug,
+ iter::{ExactSizeIterator, FusedIterator, TrustedLen},
+};
+
+pub fn yes_iterator() -> impl Iterator<Item = i32> {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+pub fn yes_double_ended_iterator() -> impl DoubleEndedIterator {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+pub fn yes_exact_size_iterator() -> impl ExactSizeIterator {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+pub fn yes_fused_iterator() -> impl FusedIterator {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+pub fn yes_trusted_len() -> impl TrustedLen {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+pub fn yes_clone() -> impl Clone {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+pub fn yes_debug() -> impl Debug {
+ IntoIterator::into_iter([0i32; 32])
+}
+
+
+fn main() {}
diff --git a/src/test/ui/const-generics/array-impls/into-iter-impls-length-33.rs b/src/test/ui/const-generics/array-impls/into-iter-impls-length-33.rs
new file mode 100644
index 000000000..4f343f3f9
--- /dev/null
+++ b/src/test/ui/const-generics/array-impls/into-iter-impls-length-33.rs
@@ -0,0 +1,40 @@
+// check-pass
+
+#![feature(trusted_len)]
+
+use std::{
+ array::IntoIter,
+ fmt::Debug,
+ iter::{ExactSizeIterator, FusedIterator, TrustedLen},
+};
+
+pub fn yes_iterator() -> impl Iterator<Item = i32> {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+pub fn yes_double_ended_iterator() -> impl DoubleEndedIterator {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+pub fn yes_exact_size_iterator() -> impl ExactSizeIterator {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+pub fn yes_fused_iterator() -> impl FusedIterator {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+pub fn yes_trusted_len() -> impl TrustedLen {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+pub fn yes_clone() -> impl Clone {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+pub fn yes_debug() -> impl Debug {
+ IntoIterator::into_iter([0i32; 33])
+}
+
+
+fn main() {}