diff options
| author | Bastian Kauschke <bastian_kauschke@hotmail.de> | 2020-07-16 11:46:39 +0200 |
|---|---|---|
| committer | Bastian Kauschke <bastian_kauschke@hotmail.de> | 2020-07-16 11:46:39 +0200 |
| commit | e009b53df4d9b0c2604c0e8ede02c0104bbd5548 (patch) | |
| tree | e1b3f783203e6eb959a8beed4a15a0fee5b613a7 /src/test/ui/const-generics | |
| parent | e2e29de5e8a2908260d54182638241ff086a26c2 (diff) | |
| download | rust-e009b53df4d9b0c2604c0e8ede02c0104bbd5548.tar.gz rust-e009b53df4d9b0c2604c0e8ede02c0104bbd5548.zip | |
add regression tests for #67144
Diffstat (limited to 'src/test/ui/const-generics')
| -rw-r--r-- | src/test/ui/const-generics/type-dependent/issue-67144-1.rs | 28 | ||||
| -rw-r--r-- | src/test/ui/const-generics/type-dependent/issue-67144-2.rs | 22 |
2 files changed, 50 insertions, 0 deletions
diff --git a/src/test/ui/const-generics/type-dependent/issue-67144-1.rs b/src/test/ui/const-generics/type-dependent/issue-67144-1.rs new file mode 100644 index 00000000000..a3d05959198 --- /dev/null +++ b/src/test/ui/const-generics/type-dependent/issue-67144-1.rs @@ -0,0 +1,28 @@ +// check-pass +#![feature(const_generics)] +#![allow(incomplete_features)] + +struct X; + +impl X { + pub fn getn<const N: usize>(&self) -> [u8; N] { + getn::<N>() + } +} + +fn getn<const N: usize>() -> [u8; N] { + unsafe { + std::mem::zeroed() + } +} + +fn main() { + // works + let [a,b,c] = getn::<3>(); + + // cannot pattern-match on an array without a fixed length + let [a,b,c] = X.getn::<3>(); + + // mismatched types, expected array `[u8; 3]` found array `[u8; _]` + let arr: [u8; 3] = X.getn::<3>(); +} diff --git a/src/test/ui/const-generics/type-dependent/issue-67144-2.rs b/src/test/ui/const-generics/type-dependent/issue-67144-2.rs new file mode 100644 index 00000000000..c53a149fa8d --- /dev/null +++ b/src/test/ui/const-generics/type-dependent/issue-67144-2.rs @@ -0,0 +1,22 @@ +// check-pass +#![feature(const_generics)] +#![allow(incomplete_features)] + +struct A<const N: usize>; + +struct X; + +impl X { + fn inner<const N: usize>() -> A<N> { + outer::<N>() + } +} + +fn outer<const N: usize>() -> A<N> { + A +} + +fn main() { + let i: A<3usize> = outer::<3usize>(); + let o: A<3usize> = X::inner::<3usize>(); +} |
