v2 / vlib / v / checker / tests / nocopy_struct_err.vv
34 lines · 30 sloc · 426 bytes · 4c20c91eed14fdff0cc5a3f294331c12f22530ec
Raw
1@[nocopy]
2struct Resource {
3 handle int
4}
5
6const base_resource = Resource{
7 handle: 1
8}
9
10struct Holder {
11 field Resource = base_resource
12}
13
14fn takes_value(res Resource) {
15 _ = res
16}
17
18fn main() {
19 mut resource := Resource{
20 handle: 2
21 }
22 copy := resource
23 takes_value(resource)
24 _ = Holder{
25 field: resource
26 }
27 _ = fn [resource] () {
28 _ = resource.handle
29 }
30 _ = fn [mut resource] () {
31 _ = resource.handle
32 }
33 _ = copy
34}
35