]> git.lizzy.rs Git - rust.git/commitdiff
add cross crate test
authorBastian Kauschke <bastian_kauschke@hotmail.de>
Tue, 10 Nov 2020 09:55:34 +0000 (10:55 +0100)
committerBastian Kauschke <bastian_kauschke@hotmail.de>
Tue, 10 Nov 2020 11:31:57 +0000 (12:31 +0100)
src/test/ui/const-generics/auxiliary/crayte.rs [new file with mode: 0644]
src/test/ui/const-generics/cross_crate_complex.rs [new file with mode: 0644]

diff --git a/src/test/ui/const-generics/auxiliary/crayte.rs b/src/test/ui/const-generics/auxiliary/crayte.rs
new file mode 100644 (file)
index 0000000..7250059
--- /dev/null
@@ -0,0 +1,19 @@
+// edition:2018
+#![cfg_attr(full, feature(const_generics))]
+#![cfg_attr(full, allow(incomplete_features))]
+#![cfg_attr(min, feature(min_const_generics))]
+
+pub trait Foo<const N: usize> {}
+struct Local;
+impl<const N: usize> Foo<N> for Local {}
+
+pub fn out_foo<const N: usize>() -> impl Foo<N> { Local }
+pub fn in_foo<const N: usize>(_: impl Foo<N>) {}
+
+pub async fn async_simple<const N: usize>(_: [u8; N]) {}
+pub async fn async_out_foo<const N: usize>() -> impl Foo<N> { Local }
+pub async fn async_in_foo<const N: usize>(_: impl Foo<N>) {}
+
+pub trait Bar<const N: usize> {
+    type Assoc: Foo<N>;
+}
diff --git a/src/test/ui/const-generics/cross_crate_complex.rs b/src/test/ui/const-generics/cross_crate_complex.rs
new file mode 100644 (file)
index 0000000..30749b8
--- /dev/null
@@ -0,0 +1,28 @@
+// aux-build:crayte.rs
+// edition:2018
+// run-pass
+// revisions: full min
+
+#![cfg_attr(full, feature(const_generics))]
+#![cfg_attr(full, allow(incomplete_features))]
+#![cfg_attr(min, feature(min_const_generics))]
+extern crate crayte;
+
+use crayte::*;
+
+async fn foo() {
+    in_foo(out_foo::<3>());
+    async_simple([0; 17]).await;
+    async_in_foo(async_out_foo::<4>().await).await;
+}
+
+struct Faz<const N: usize>;
+
+impl<const N: usize> Foo<N> for Faz<N> {}
+impl<const N: usize> Bar<N> for Faz<N> {
+    type Assoc = Faz<N>;
+}
+
+fn main() {
+    let _ = foo;
+}