]> git.proxmox.com Git - rustc.git/blame - src/test/ui/closures/2229_closure_analysis/simple-struct-min-capture.rs
New upstream version 1.55.0+dfsg1
[rustc.git] / src / test / ui / closures / 2229_closure_analysis / simple-struct-min-capture.rs
CommitLineData
136023e0 1// edition:2021
fc512014 2
fc512014
XL
3#![feature(rustc_attrs)]
4
5// Test to ensure that min analysis meets capture kind for all paths captured.
6
7#[derive(Debug)]
8struct Point {
9 x: i32,
10 y: i32,
11}
12
13fn main() {
14 let mut p = Point { x: 10, y: 20 };
15
16 //
17 // Requirements:
18 // p.x -> MutBoorrow
19 // p -> ImmBorrow
20 //
21 // Requirements met when p is captured via MutBorrow
22 //
23 let mut c = #[rustc_capture_analysis]
24 //~^ ERROR: attributes on expressions are experimental
25 //~| NOTE: see issue #15701 <https://github.com/rust-lang/rust/issues/15701>
26 || {
27 //~^ ERROR: First Pass analysis includes:
28 //~| ERROR: Min Capture analysis includes:
29 p.x += 10;
30 //~^ NOTE: Capturing p[(0, 0)] -> MutBorrow
5869c6ff 31 //~| NOTE: p[] captured as MutBorrow here
fc512014
XL
32 println!("{:?}", p);
33 //~^ NOTE: Capturing p[] -> ImmBorrow
5869c6ff
XL
34 //~| NOTE: Min Capture p[] -> MutBorrow
35 //~| NOTE: p[] used here
fc512014
XL
36 };
37
38 c();
39}