rust/tests/ui/tuple_array_conversions.rs
2023-06-29 06:46:28 -05:00

76 lines
2.1 KiB
Rust

//@aux-build:proc_macros.rs:proc-macro
#![allow(clippy::no_effect, clippy::useless_vec, unused)]
#![warn(clippy::tuple_array_conversions)]
#[macro_use]
extern crate proc_macros;
fn main() {
let x = [1, 2];
let x = (x[0], x[1]);
let x = [x.0, x.1];
let x = &[1, 2];
let x = (x[0], x[1]);
let t1: &[(u32, u32)] = &[(1, 2), (3, 4)];
let v1: Vec<[u32; 2]> = t1.iter().map(|&(a, b)| [a, b]).collect();
t1.iter().for_each(|&(a, b)| _ = [a, b]);
let t2: Vec<(u32, u32)> = v1.iter().map(|&[a, b]| (a, b)).collect();
t1.iter().for_each(|&(a, b)| _ = [a, b]);
// Do not lint
let v2: Vec<[u32; 2]> = t1.iter().map(|&t| t.into()).collect();
let t3: Vec<(u32, u32)> = v2.iter().map(|&v| v.into()).collect();
let x = [1; 13];
let x = (
x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12],
);
let x = [x.0, x.1, x.2, x.3, x.4, x.5, x.6, x.7, x.8, x.9, x.10, x.11, x.12];
let x = (1, 2);
let x = (x.0, x.1);
let x = [1, 2];
let x = [x[0], x[1]];
let x = vec![1, 2];
let x = (x[0], x[1]);
let x = [1; 3];
let x = (x[0],);
let x = (1, 2, 3);
let x = [x.0];
let x = (1, 2);
let y = (1, 2);
[x.0, y.0];
[x.0, y.1];
// FP
let x = [x.0, x.0];
let x = (x[0], x[0]);
// How can this be fixed?
external! {
let t1: &[(u32, u32)] = &[(1, 2), (3, 4)];
let v1: Vec<[u32; 2]> = t1.iter().map(|&(a, b)| [a, b]).collect();
let t2: Vec<(u32, u32)> = v1.iter().map(|&[a, b]| (a, b)).collect();
}
with_span! {
span
let t1: &[(u32, u32)] = &[(1, 2), (3, 4)];
let v1: Vec<[u32; 2]> = t1.iter().map(|&(a, b)| [a, b]).collect();
let t2: Vec<(u32, u32)> = v1.iter().map(|&[a, b]| (a, b)).collect();
}
}
#[clippy::msrv = "1.70.0"]
fn msrv_too_low() {
let x = [1, 2];
let x = (x[0], x[1]);
let x = [x.0, x.1];
let x = &[1, 2];
let x = (x[0], x[1]);
}
#[clippy::msrv = "1.71.0"]
fn msrv_juust_right() {
let x = [1, 2];
let x = (x[0], x[1]);
let x = [x.0, x.1];
let x = &[1, 2];
let x = (x[0], x[1]);
}