@@ -125,41 +125,83 @@ fn copy_after_assign_after_move() {
125
125
drop ( * x. b ) ;
126
126
}
127
127
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
+
128
135
fn copy_after_field_assign_after_move ( ) {
129
136
let mut x = A { a : 1 , b : box 2 } ;
130
137
drop ( x. b ) ;
131
138
x. b = box 3 ;
132
139
drop ( * x. b ) ;
133
140
}
134
141
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
+
135
149
fn borrow_after_assign_after_move ( ) {
136
150
let mut x = A { a : 1 , b : box 2 } ;
137
151
drop ( x. b ) ;
138
152
x = A { a : 3 , b : box 4 } ;
139
153
borrow ( & x. b ) ;
140
154
}
141
155
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
+
142
163
fn borrow_after_field_assign_after_move ( ) {
143
164
let mut x = A { a : 1 , b : box 2 } ;
144
165
drop ( x. b ) ;
145
166
x. b = box 3 ;
146
167
borrow ( & x. b ) ;
147
168
}
148
169
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
+
149
177
fn move_after_assign_after_move ( ) {
150
178
let mut x = A { a : 1 , b : box 2 } ;
151
179
let _y = x. b ;
152
180
x = A { a : 3 , b : box 4 } ;
153
181
drop ( x. b ) ;
154
182
}
155
183
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
+
156
191
fn move_after_field_assign_after_move ( ) {
157
192
let mut x = A { a : 1 , b : box 2 } ;
158
193
drop ( x. b ) ;
159
194
x. b = box 3 ;
160
195
drop ( x. b ) ;
161
196
}
162
197
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
+
163
205
fn copy_after_assign_after_uninit ( ) {
164
206
let mut x: A ;
165
207
x = A { a : 1 , b : box 2 } ;
@@ -200,11 +242,19 @@ fn main() {
200
242
fu_move_after_fu_move ( ) ;
201
243
202
244
copy_after_assign_after_move ( ) ;
245
+ copy_after_assign_after_fu_move ( ) ;
203
246
copy_after_field_assign_after_move ( ) ;
247
+ copy_after_field_assign_after_fu_move ( ) ;
248
+
204
249
borrow_after_assign_after_move ( ) ;
250
+ borrow_after_assign_after_fu_move ( ) ;
205
251
borrow_after_field_assign_after_move ( ) ;
252
+ borrow_after_field_assign_after_fu_move ( ) ;
253
+
206
254
move_after_assign_after_move ( ) ;
255
+ move_after_assign_after_fu_move ( ) ;
207
256
move_after_field_assign_after_move ( ) ;
257
+ move_after_field_assign_after_fu_move ( ) ;
208
258
209
259
copy_after_assign_after_uninit ( ) ;
210
260
borrow_after_assign_after_uninit ( ) ;
0 commit comments