@@ -26,16 +26,19 @@ pub fn guarantee_lifetime(bccx: &BorrowckCtxt,
26
26
item_scope_id : ast:: NodeId ,
27
27
root_scope_id : ast:: NodeId ,
28
28
span : Span ,
29
+ cause : LoanCause ,
29
30
cmt : mc:: cmt ,
30
31
loan_region : ty:: Region ,
31
- loan_mutbl : LoanMutability ) -> R {
32
+ loan_kind : ty:: BorrowKind )
33
+ -> Result < ( ) , ( ) > {
32
34
debug ! ( "guarantee_lifetime(cmt={}, loan_region={})" ,
33
35
cmt. repr( bccx. tcx) , loan_region. repr( bccx. tcx) ) ;
34
36
let ctxt = GuaranteeLifetimeContext { bccx : bccx,
35
37
item_scope_id : item_scope_id,
36
38
span : span,
39
+ cause : cause,
37
40
loan_region : loan_region,
38
- loan_mutbl : loan_mutbl ,
41
+ loan_kind : loan_kind ,
39
42
cmt_original : cmt,
40
43
root_scope_id : root_scope_id} ;
41
44
ctxt. check ( cmt, None )
@@ -55,8 +58,9 @@ struct GuaranteeLifetimeContext<'a> {
55
58
root_scope_id : ast:: NodeId ,
56
59
57
60
span : Span ,
61
+ cause : LoanCause ,
58
62
loan_region : ty:: Region ,
59
- loan_mutbl : LoanMutability ,
63
+ loan_kind : ty :: BorrowKind ,
60
64
cmt_original : mc:: cmt
61
65
}
62
66
@@ -76,21 +80,18 @@ impl<'a> GuaranteeLifetimeContext<'a> {
76
80
mc:: cat_copied_upvar( ..) | // L-Local
77
81
mc:: cat_local( ..) | // L-Local
78
82
mc:: cat_arg( ..) | // L-Local
79
- mc:: cat_deref( _, _, mc:: region_ptr( ..) ) | // L-Deref-Borrowed
80
- mc:: cat_deref( _, _, mc:: unsafe_ptr( ..) ) => {
83
+ mc:: cat_upvar( ..) |
84
+ mc:: cat_deref( _, _, mc:: BorrowedPtr ( ..) ) | // L-Deref-Borrowed
85
+ mc:: cat_deref( _, _, mc:: UnsafePtr ( ..) ) => {
81
86
let scope = self . scope ( cmt) ;
82
87
self . check_scope ( scope)
83
88
}
84
89
85
- mc:: cat_stack_upvar( cmt) => {
86
- self . check ( cmt, discr_scope)
87
- }
88
-
89
90
mc:: cat_static_item => {
90
91
Ok ( ( ) )
91
92
}
92
93
93
- mc:: cat_deref( base, derefs, mc:: gc_ptr ) => {
94
+ mc:: cat_deref( base, derefs, mc:: GcPtr ) => {
94
95
let base_scope = self . scope ( base) ;
95
96
96
97
// L-Deref-Managed-Imm-User-Root
@@ -112,7 +113,7 @@ impl<'a> GuaranteeLifetimeContext<'a> {
112
113
}
113
114
114
115
mc:: cat_downcast( base) |
115
- mc:: cat_deref( base, _, mc:: uniq_ptr ) | // L-Deref-Send
116
+ mc:: cat_deref( base, _, mc:: OwnedPtr ) | // L-Deref-Send
116
117
mc:: cat_interior( base, _) => { // L-Field
117
118
self . check ( base, discr_scope)
118
119
}
@@ -269,12 +270,12 @@ impl<'a> GuaranteeLifetimeContext<'a> {
269
270
mc:: cat_rvalue( ..) |
270
271
mc:: cat_static_item |
271
272
mc:: cat_copied_upvar( ..) |
272
- mc:: cat_deref( ..) => {
273
+ mc:: cat_deref( ..) |
274
+ mc:: cat_upvar( ..) => {
273
275
false
274
276
}
275
277
r @ mc:: cat_downcast( ..) |
276
278
r @ mc:: cat_interior( ..) |
277
- r @ mc:: cat_stack_upvar( ..) |
278
279
r @ mc:: cat_discr( ..) => {
279
280
self . tcx ( ) . sess . span_bug (
280
281
cmt. span ,
@@ -294,6 +295,7 @@ impl<'a> GuaranteeLifetimeContext<'a> {
294
295
mc:: cat_rvalue( temp_scope) => {
295
296
temp_scope
296
297
}
298
+ mc:: cat_upvar( ..) |
297
299
mc:: cat_copied_upvar( _) => {
298
300
ty:: ReScope ( self . item_scope_id )
299
301
}
@@ -304,28 +306,26 @@ impl<'a> GuaranteeLifetimeContext<'a> {
304
306
mc:: cat_arg( local_id) => {
305
307
ty:: ReScope ( self . bccx . tcx . region_maps . var_scope ( local_id) )
306
308
}
307
- mc:: cat_deref( _, _, mc:: unsafe_ptr ( ..) ) => {
309
+ mc:: cat_deref( _, _, mc:: UnsafePtr ( ..) ) => {
308
310
ty:: ReStatic
309
311
}
310
- mc:: cat_deref( _, _, mc:: region_ptr ( _, r) ) => {
312
+ mc:: cat_deref( _, _, mc:: BorrowedPtr ( _, r) ) => {
311
313
r
312
314
}
313
315
mc:: cat_downcast( cmt) |
314
- mc:: cat_deref( cmt, _, mc:: uniq_ptr ) |
315
- mc:: cat_deref( cmt, _, mc:: gc_ptr ) |
316
+ mc:: cat_deref( cmt, _, mc:: OwnedPtr ) |
317
+ mc:: cat_deref( cmt, _, mc:: GcPtr ) |
316
318
mc:: cat_interior( cmt, _) |
317
- mc:: cat_stack_upvar( cmt) |
318
319
mc:: cat_discr( cmt, _) => {
319
320
self . scope ( cmt)
320
321
}
321
322
}
322
323
}
323
324
324
325
fn report_error ( & self , code : bckerr_code ) {
325
- self . bccx . report ( BckError {
326
- cmt : self . cmt_original ,
327
- span : self . span ,
328
- code : code
329
- } ) ;
326
+ self . bccx . report ( BckError { cmt : self . cmt_original ,
327
+ span : self . span ,
328
+ cause : self . cause ,
329
+ code : code } ) ;
330
330
}
331
331
}
0 commit comments