diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2018-07-03 06:47:51 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2018-07-03 18:10:08 -0400 |
| commit | 37db94d3f2e9c43bd34f09952029786178731289 (patch) | |
| tree | 79ede56ab5ddccacbbe9a99ae89984e646d44ad2 | |
| parent | f03c0366ad3b0afa267dd617c671c852b3e2bb73 (diff) | |
| download | rust-37db94d3f2e9c43bd34f09952029786178731289.tar.gz rust-37db94d3f2e9c43bd34f09952029786178731289.zip | |
store the `HirId` of the upvar
| -rw-r--r-- | src/librustc/ich/impls_mir.rs | 2 | ||||
| -rw-r--r-- | src/librustc/mir/mod.rs | 5 | ||||
| -rw-r--r-- | src/librustc_mir/build/mod.rs | 1 |
3 files changed, 6 insertions, 2 deletions
diff --git a/src/librustc/ich/impls_mir.rs b/src/librustc/ich/impls_mir.rs index f43ac7ad0dd..6217f6c9fdd 100644 --- a/src/librustc/ich/impls_mir.rs +++ b/src/librustc/ich/impls_mir.rs @@ -30,7 +30,7 @@ impl_stable_hash_for!(struct mir::LocalDecl<'tcx> { internal, is_user_variable }); -impl_stable_hash_for!(struct mir::UpvarDecl { debug_name, by_ref, mutability }); +impl_stable_hash_for!(struct mir::UpvarDecl { debug_name, var_hir_id, by_ref, mutability }); impl_stable_hash_for!(struct mir::BasicBlockData<'tcx> { statements, terminator, is_cleanup }); impl_stable_hash_for!(struct mir::UnsafetyViolation { source_info, description, kind }); impl_stable_hash_for!(struct mir::UnsafetyCheckResult { violations, unsafe_blocks }); diff --git a/src/librustc/mir/mod.rs b/src/librustc/mir/mod.rs index dca0d4f442a..78c4966c6f9 100644 --- a/src/librustc/mir/mod.rs +++ b/src/librustc/mir/mod.rs @@ -15,7 +15,7 @@ use graphviz::IntoCow; use hir::def::CtorKind; use hir::def_id::DefId; -use hir::{self, InlineAsm}; +use hir::{self, HirId, InlineAsm}; use middle::region; use mir::interpret::{EvalErrorKind, Scalar, Value}; use mir::visit::MirVisitable; @@ -785,6 +785,9 @@ impl<'tcx> LocalDecl<'tcx> { pub struct UpvarDecl { pub debug_name: Name, + /// `HirId` of the captured variable + pub var_hir_id: ClearCrossCrate<HirId>, + /// If true, the capture is behind a reference. pub by_ref: bool, diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs index 4db5c8e9278..2b18771a34f 100644 --- a/src/librustc_mir/build/mod.rs +++ b/src/librustc_mir/build/mod.rs @@ -534,6 +534,7 @@ fn construct_fn<'a, 'gcx, 'tcx, A>(hir: Cx<'a, 'gcx, 'tcx>, }; let mut decl = UpvarDecl { debug_name: keywords::Invalid.name(), + var_hir_id: ClearCrossCrate::Set(var_hir_id), by_ref, mutability: Mutability::Not, }; |
