rust/tests/ui/large_stack_arrays.rs
2023-08-22 17:18:11 +02:00

58 lines
1.3 KiB
Rust

#![warn(clippy::large_stack_arrays)]
#![allow(clippy::large_enum_variant)]
#[derive(Clone, Copy)]
struct S {
pub data: [u64; 32],
}
#[derive(Clone, Copy)]
enum E {
S(S),
T(u32),
}
pub static DOESNOTLINT: [u8; 512_001] = [0; 512_001];
pub static DOESNOTLINT2: [u8; 512_001] = {
let x = 0;
[x; 512_001]
};
fn issue_10741() {
#[derive(Copy, Clone)]
struct Large([u32; 100_000]);
fn build() -> Large {
Large([0; 100_000])
}
let _x = [build(); 3];
//~^ ERROR: allocating a local array larger than 512000 bytes
let _y = [build(), build(), build()];
//~^ ERROR: allocating a local array larger than 512000 bytes
}
fn main() {
let bad = (
[0u32; 20_000_000],
//~^ ERROR: allocating a local array larger than 512000 bytes
[S { data: [0; 32] }; 5000],
//~^ ERROR: allocating a local array larger than 512000 bytes
[Some(""); 20_000_000],
//~^ ERROR: allocating a local array larger than 512000 bytes
[E::T(0); 5000],
//~^ ERROR: allocating a local array larger than 512000 bytes
[0u8; usize::MAX],
//~^ ERROR: allocating a local array larger than 512000 bytes
);
let good = (
[0u32; 1000],
[S { data: [0; 32] }; 1000],
[Some(""); 1000],
[E::T(0); 1000],
[(); 20_000_000],
);
}