about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-04-27 14:42:38 +0200
committerMatthias Krüger <matthias.krueger@famsik.de>2024-04-28 10:23:10 +0200
commitf483971b87bae0c236b41185f298e4524155e2d2 (patch)
tree804ba9b573d3f5802df7073fa8912a929e002f8e
parent012f9e26acbdab1c34b8ba40ccb44788a822d1d8 (diff)
downloadrust-f483971b87bae0c236b41185f298e4524155e2d2.tar.gz
rust-f483971b87bae0c236b41185f298e4524155e2d2.zip
add test for ICE failed to resolve instance for <[f32; 2] as CrossProduct
Fixes https://github.com/rust-lang/rust/issues/111667
-rw-r--r--tests/ui/const-generics/generic_const_exprs/failed-to-resolve-instance-ice-111667.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/ui/const-generics/generic_const_exprs/failed-to-resolve-instance-ice-111667.rs b/tests/ui/const-generics/generic_const_exprs/failed-to-resolve-instance-ice-111667.rs
new file mode 100644
index 00000000000..c547b54e16b
--- /dev/null
+++ b/tests/ui/const-generics/generic_const_exprs/failed-to-resolve-instance-ice-111667.rs
@@ -0,0 +1,18 @@
+// issue rust-lang/rust#111667
+// ICE failed to resolve instance for <[f32; 2] as CrossProduct ..
+//@ check-pass
+
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+pub trait CrossProduct<'a, T, R> {
+    fn cross(&'a self, t: &'a T) -> R;
+}
+
+impl<'a, T, U, const N: usize> CrossProduct<'a, [U; N], [(&'a T, &'a U); N * N]> for [T; N] {
+    fn cross(&'a self, us: &'a [U; N]) -> [(&'a T, &'a U); N * N] {
+        std::array::from_fn(|i| (&self[i / N], &us[i % N]))
+    }
+}
+
+pub fn main() {}