diff options
| author | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2017-05-11 15:05:00 +0300 |
|---|---|---|
| committer | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2017-05-13 17:42:59 +0300 |
| commit | 2da080e779b4e6f4359c031824c3bdcedad452fd (patch) | |
| tree | 891c3e4d560110edf05dbace4c47d767b13aa06e /src/librustc_borrowck | |
| parent | dbae169ac16de632d21fd3394bc8a939b2524512 (diff) | |
| download | rust-2da080e779b4e6f4359c031824c3bdcedad452fd.tar.gz rust-2da080e779b4e6f4359c031824c3bdcedad452fd.zip | |
rustc: treat ReEarlyBound as free without replacing it with ReFree.
Diffstat (limited to 'src/librustc_borrowck')
| -rw-r--r-- | src/librustc_borrowck/borrowck/gather_loans/mod.rs | 5 | ||||
| -rw-r--r-- | src/librustc_borrowck/borrowck/mod.rs | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/librustc_borrowck/borrowck/gather_loans/mod.rs b/src/librustc_borrowck/borrowck/gather_loans/mod.rs index ca0e5dad65b..cbb6f7bce50 100644 --- a/src/librustc_borrowck/borrowck/gather_loans/mod.rs +++ b/src/librustc_borrowck/borrowck/gather_loans/mod.rs @@ -353,6 +353,10 @@ impl<'a, 'tcx> GatherLoanCtxt<'a, 'tcx> { let loan_scope = match *loan_region { ty::ReScope(scope) => scope, + ty::ReEarlyBound(ref br) => { + self.bccx.region_maps.early_free_extent(self.tcx(), br) + } + ty::ReFree(ref fr) => { self.bccx.region_maps.free_extent(self.tcx(), fr) } @@ -361,7 +365,6 @@ impl<'a, 'tcx> GatherLoanCtxt<'a, 'tcx> { ty::ReEmpty | ty::ReLateBound(..) | - ty::ReEarlyBound(..) | ty::ReVar(..) | ty::ReSkolemized(..) | ty::ReErased => { diff --git a/src/librustc_borrowck/borrowck/mod.rs b/src/librustc_borrowck/borrowck/mod.rs index 7eb73a87532..07fd966f570 100644 --- a/src/librustc_borrowck/borrowck/mod.rs +++ b/src/librustc_borrowck/borrowck/mod.rs @@ -513,6 +513,8 @@ impl<'a, 'tcx> BorrowckCtxt<'a, 'tcx> { match (&err.code, &err.cause) { (&err_out_of_scope(&ty::ReScope(_), &ty::ReStatic, _), &BorrowViolation(euv::ClosureCapture(span))) | + (&err_out_of_scope(&ty::ReScope(_), &ty::ReEarlyBound(..), _), + &BorrowViolation(euv::ClosureCapture(span))) | (&err_out_of_scope(&ty::ReScope(_), &ty::ReFree(..), _), &BorrowViolation(euv::ClosureCapture(span))) => { return self.report_out_of_scope_escaping_closure_capture(&err, span); |
