diff options
| author | b-naber <b_naber@gmx.de> | 2023-07-17 21:58:37 +0000 |
|---|---|---|
| committer | b-naber <b_naber@gmx.de> | 2023-07-17 22:06:32 +0000 |
| commit | e1e755311a6ae8a3d15dff80851d00a8b2881d82 (patch) | |
| tree | 7645a0d85e12ff2b759c8209e1c845f4d680ef02 /tests/ui/pattern/slice-patterns-irrefutable.rs | |
| parent | 96af415476968d91847dde81c8ac907823b0def0 (diff) | |
| download | rust-e1e755311a6ae8a3d15dff80851d00a8b2881d82.tar.gz rust-e1e755311a6ae8a3d15dff80851d00a8b2881d82.zip | |
add more tests
Diffstat (limited to 'tests/ui/pattern/slice-patterns-irrefutable.rs')
| -rw-r--r-- | tests/ui/pattern/slice-patterns-irrefutable.rs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/ui/pattern/slice-patterns-irrefutable.rs b/tests/ui/pattern/slice-patterns-irrefutable.rs new file mode 100644 index 00000000000..7be02b44e43 --- /dev/null +++ b/tests/ui/pattern/slice-patterns-irrefutable.rs @@ -0,0 +1,62 @@ +// Test that we infer the expected type of a pattern to an array of the given length. + +#![allow(unused_variables)] + +use std::array::TryFromSliceError; +use std::convert::TryInto; + +struct Zeroes; +impl Into<[usize; 2]> for Zeroes { + fn into(self) -> [usize; 2] { + [0; 2] + } +} +impl Into<[usize; 3]> for Zeroes { + fn into(self) -> [usize; 3] { + [0; 3] + } +} +impl Into<[usize; 4]> for Zeroes { + fn into(self) -> [usize; 4] { + [0; 4] + } +} + +fn zeroes_into() { + let [a, b, c] = Zeroes.into(); + let [d, e, f]: [_; 3] = Zeroes.into(); +} + +fn array_try_from(x: &[usize]) -> Result<usize, TryFromSliceError> { + let [a, b] = x.try_into()?; + Ok(a + b) +} + +fn default() { + let a: i32; + let b; + [a, b] = Default::default(); +} + +fn test_nested_array() { + let a: [_; 3]; + let b; + //~^ ERROR type annotations needed + [a, b] = Default::default(); +} + +struct Foo<T>([T; 2]); + +impl<T: Default + Copy> Default for Foo<T> { + fn default() -> Self { + Foo([Default::default(); 2]) + } +} + +fn field_array() { + let a: i32; + let b; + Foo([a, b]) = Default::default(); +} + +fn main() {} |
