about summary refs log tree commit diff
path: root/tests/ui/lint/large_assignments/move_into_fn.rs
blob: 73ec08fa23a74f1fd6fb1cd3e091b5ec9b3c2b02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//@ build-fail

#![feature(large_assignments)]
#![move_size_limit = "1000"]
#![deny(large_assignments)]
#![allow(unused)]

// Note: This type does not implement Copy.
struct Data([u8; 9999]);

fn main() {
    // Looking at llvm-ir output, we can see a memcpy'd into Data, so we want
    // the lint to trigger here.
    let data = Data([100; 9999]); //~ ERROR large_assignments

    // Looking at llvm-ir output, we can see that there is no memcpy involved in
    // this function call. Instead, just a pointer is passed to the function. So
    // the lint shall not trigger here.
    take_data(data);
}

fn take_data(data: Data) {}