error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:38:14
   |
LL |     let _x = [build(); 3];
   |              ^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![build(); 3].into_boxed_slice()`
   = note: `-D clippy::large-stack-arrays` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(clippy::large_stack_arrays)]`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:41:14
   |
LL |     let _y = [build(), build(), build()];
   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![build(), build(), build()].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:47:9
   |
LL |         [0u32; 20_000_000],
   |         ^^^^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![0u32; 20_000_000].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:49:9
   |
LL |         [S { data: [0; 32] }; 5000],
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![S { data: [0; 32] }; 5000].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:51:9
   |
LL |         [Some(""); 20_000_000],
   |         ^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![Some(""); 20_000_000].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:53:9
   |
LL |         [E::T(0); 5000],
   |         ^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![E::T(0); 5000].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:55:9
   |
LL |         [0u8; usize::MAX],
   |         ^^^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![0u8; usize::MAX].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:99:13
   |
LL |     let y = [x, x, dummy!(x), x, x];
   |             ^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![x, x, dummy!(x), x, x].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:76:13
   |
LL |             [$a, $b, $a, $b]
   |             ^^^^^^^^^^^^^^^^
...
LL |     let y = dummy![x => x];
   |             -------------- in this macro invocation
   |
   = note: this error originates in the macro `dummy` (in Nightly builds, run with -Z macro-backtrace for more info)

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:104:20
   |
LL |     let y = dummy![[x, x, x, x, x]];
   |                    ^^^^^^^^^^^^^^^
   |
   = help: consider allocating on the heap with `vec![x, x, x, x, x].into_boxed_slice()`

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:107:39
   |
LL |     let y = proc_macros::make_it_big!([x; 1]);
   |                                       ^^^^^^

error: allocating a local array larger than 16384 bytes
  --> tests/ui/large_stack_arrays.rs:88:23
   |
LL |             let _x_ = [$id; $n];
   |                       ^^^^^^^^^
...
LL |     let y = vec![create_then_move![x; 5]; 5];
   |                  ----------------------- in this macro invocation
   |
   = note: this error originates in the macro `create_then_move` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 12 previous errors

