about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBastian Kauschke <bastian_kauschke@hotmail.de>2020-07-16 12:10:15 +0200
committerBastian Kauschke <bastian_kauschke@hotmail.de>2020-07-16 12:10:15 +0200
commiteee160cdea88da87396f5682220193a01ff177b0 (patch)
tree84849464bf184ef8e24bec52b09f2aed563e7921
parent137ca05ccd2ef6f0bb5583f943f4395272a170c9 (diff)
downloadrust-eee160cdea88da87396f5682220193a01ff177b0.tar.gz
rust-eee160cdea88da87396f5682220193a01ff177b0.zip
add regression test for #70586
-rw-r--r--src/test/ui/const-generics/type-dependent/issue-70586.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/type-dependent/issue-70586.rs b/src/test/ui/const-generics/type-dependent/issue-70586.rs
new file mode 100644
index 00000000000..5a0888506eb
--- /dev/null
+++ b/src/test/ui/const-generics/type-dependent/issue-70586.rs
@@ -0,0 +1,33 @@
+// check-pass
+#![feature(const_generics)]
+#![allow(incomplete_features)]
+
+use std::marker::PhantomData;
+
+// This namespace is necessary for the ICE to trigger
+struct Namespace;
+
+impl Namespace {
+    pub fn const_chunks_exact<T, const N: usize>() -> ConstChunksExact<'static, T, N> {
+        ConstChunksExact { inner: PhantomData }
+    }
+}
+
+
+#[derive(Debug)]
+pub struct ConstChunksExact<'a, T, const N: usize> {
+    inner:  PhantomData<&'a T>
+}
+
+impl <'a, T, const N: usize> Iterator for ConstChunksExact<'a, T, { N }> {
+    type Item = &'a [T; N];
+
+    fn next(&mut self) -> Option<Self::Item> {
+        unreachable!()
+    }
+}
+
+fn main() {
+    let mut chunks = Namespace::const_chunks_exact::<i32, 3usize>();
+    let _next: &[i32; 3] = chunks.next().unwrap();
+}