diff options
author | David Wood <david@davidtw.co> | 2018-01-13 23:28:42 +0000 |
---|---|---|
committer | David Wood <david@davidtw.co> | 2018-01-27 11:46:26 +0000 |
commit | f6fee2a479070526495b65b6b3e7959088a1dd62 (patch) | |
tree | 43667b1568cf4abbe5527305f29c8da96bcdc339 | |
parent | 6d00c9686becb0a84f7f4885fcaf9a764c201890 (diff) | |
download | rust-f6fee2a479070526495b65b6b3e7959088a1dd62.tar.gz |
Fixed off-by-one spans in MIR borrowck errors.
-rw-r--r-- | src/librustc_mir/build/scope.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/librustc_mir/build/scope.rs b/src/librustc_mir/build/scope.rs index ddb4bf0e36b..389e06e9334 100644 --- a/src/librustc_mir/build/scope.rs +++ b/src/librustc_mir/build/scope.rs @@ -695,10 +695,17 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> { if let DropKind::Value { .. } = drop_kind { scope.needs_cleanup = true; } + let region_scope_span = region_scope.span(self.hir.tcx(), &self.hir.region_scope_tree); - // Attribute scope exit drops to scope's closing brace - let scope_end = region_scope_span.with_lo(region_scope_span.hi()); + // Attribute scope exit drops to scope's closing brace. + // Without this check when finding the endpoint, we'll run into an ICE. + let scope_end = if region_scope_span.hi().0 == 0 { + region_scope_span + } else { + region_scope_span.end_point() + }; + scope.drops.push(DropData { span: scope_end, location: place.clone(), |