diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/const-generics/auxiliary/crayte.rs | 19 | ||||
| -rw-r--r-- | src/test/ui/const-generics/cross_crate_complex.rs | 28 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/auxiliary/crayte.rs b/src/test/ui/const-generics/auxiliary/crayte.rs new file mode 100644 index 00000000000..725005971e1 --- /dev/null +++ b/src/test/ui/const-generics/auxiliary/crayte.rs @@ -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 index 00000000000..30749b8bc6d --- /dev/null +++ b/src/test/ui/const-generics/cross_crate_complex.rs @@ -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; +} |
