Skip to content

Commit 61c81bf

Browse files
author
Cameron Zwarich
committed
Add more borrowck tests for functional update moves
Add more borrowck field-sensitivity tests for functional update moves. This makes the collection of test functions more combinatorially exhaustive.
1 parent 8a543ff commit 61c81bf

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

src/test/run-pass/borrowck-field-sensitivity.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,41 +125,83 @@ fn copy_after_assign_after_move() {
125125
drop(*x.b);
126126
}
127127

128+
fn copy_after_assign_after_fu_move() {
129+
let mut x = A { a: 1, b: box 2 };
130+
let _y = A { a: 3, .. x };
131+
x = A { a: 3, b: box 4 };
132+
drop(*x.b);
133+
}
134+
128135
fn copy_after_field_assign_after_move() {
129136
let mut x = A { a: 1, b: box 2 };
130137
drop(x.b);
131138
x.b = box 3;
132139
drop(*x.b);
133140
}
134141

142+
fn copy_after_field_assign_after_fu_move() {
143+
let mut x = A { a: 1, b: box 2 };
144+
let _y = A { a: 3, .. x };
145+
x.b = box 3;
146+
drop(*x.b);
147+
}
148+
135149
fn borrow_after_assign_after_move() {
136150
let mut x = A { a: 1, b: box 2 };
137151
drop(x.b);
138152
x = A { a: 3, b: box 4 };
139153
borrow(&x.b);
140154
}
141155

156+
fn borrow_after_assign_after_fu_move() {
157+
let mut x = A { a: 1, b: box 2 };
158+
let _y = A { a: 3, .. x };
159+
x = A { a: 3, b: box 4 };
160+
borrow(&x.b);
161+
}
162+
142163
fn borrow_after_field_assign_after_move() {
143164
let mut x = A { a: 1, b: box 2 };
144165
drop(x.b);
145166
x.b = box 3;
146167
borrow(&x.b);
147168
}
148169

170+
fn borrow_after_field_assign_after_fu_move() {
171+
let mut x = A { a: 1, b: box 2 };
172+
let _y = A { a: 3, .. x };
173+
x.b = box 3;
174+
borrow(&x.b);
175+
}
176+
149177
fn move_after_assign_after_move() {
150178
let mut x = A { a: 1, b: box 2 };
151179
let _y = x.b;
152180
x = A { a: 3, b: box 4 };
153181
drop(x.b);
154182
}
155183

184+
fn move_after_assign_after_fu_move() {
185+
let mut x = A { a: 1, b: box 2 };
186+
let _y = A { a: 3, .. x };
187+
x = A { a: 3, b: box 4 };
188+
drop(x.b);
189+
}
190+
156191
fn move_after_field_assign_after_move() {
157192
let mut x = A { a: 1, b: box 2 };
158193
drop(x.b);
159194
x.b = box 3;
160195
drop(x.b);
161196
}
162197

198+
fn move_after_field_assign_after_fu_move() {
199+
let mut x = A { a: 1, b: box 2 };
200+
let _y = A { a: 3, .. x };
201+
x.b = box 3;
202+
drop(x.b);
203+
}
204+
163205
fn copy_after_assign_after_uninit() {
164206
let mut x: A;
165207
x = A { a: 1, b: box 2 };
@@ -200,11 +242,19 @@ fn main() {
200242
fu_move_after_fu_move();
201243

202244
copy_after_assign_after_move();
245+
copy_after_assign_after_fu_move();
203246
copy_after_field_assign_after_move();
247+
copy_after_field_assign_after_fu_move();
248+
204249
borrow_after_assign_after_move();
250+
borrow_after_assign_after_fu_move();
205251
borrow_after_field_assign_after_move();
252+
borrow_after_field_assign_after_fu_move();
253+
206254
move_after_assign_after_move();
255+
move_after_assign_after_fu_move();
207256
move_after_field_assign_after_move();
257+
move_after_field_assign_after_fu_move();
208258

209259
copy_after_assign_after_uninit();
210260
borrow_after_assign_after_uninit();

0 commit comments

Comments
 (0)