diff options
| author | Bastian Kauschke <bastian_kauschke@hotmail.de> | 2020-11-10 10:55:34 +0100 |
|---|---|---|
| committer | Bastian Kauschke <bastian_kauschke@hotmail.de> | 2020-11-10 12:31:57 +0100 |
| commit | f4790ec2b6392972f5ef65ad9afb70ea1937a692 (patch) | |
| tree | 3058b250623d1433cad7d5d80141c9b817cb999a | |
| parent | 4b5cd0413095b3ccca2d0c799eeb62d418d42248 (diff) | |
| download | rust-f4790ec2b6392972f5ef65ad9afb70ea1937a692.tar.gz rust-f4790ec2b6392972f5ef65ad9afb70ea1937a692.zip | |
add cross crate test
| -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; +} |
