diff options
| author | Jonas Schievink <jonas@schievink.net> | 2016-07-11 17:11:51 +0200 |
|---|---|---|
| committer | Jonas Schievink <jonas@schievink.net> | 2016-07-11 17:11:51 +0200 |
| commit | fd2b65ee701d424f0f2dbdbb89b5eba5fb9bace4 (patch) | |
| tree | 758548b342bca11edab21b4a41072e61bbc332c9 /src | |
| parent | 37d5c06a0d0d1658900636be8b66ccf4d9c4b23c (diff) | |
| download | rust-fd2b65ee701d424f0f2dbdbb89b5eba5fb9bace4.tar.gz rust-fd2b65ee701d424f0f2dbdbb89b5eba5fb9bace4.zip | |
Register reads on the corrent HIR item
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_trans/trans_item.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/librustc_trans/trans_item.rs b/src/librustc_trans/trans_item.rs index ca24a270080..d3271e6d44c 100644 --- a/src/librustc_trans/trans_item.rs +++ b/src/librustc_trans/trans_item.rs @@ -111,8 +111,14 @@ impl<'a, 'tcx> TransItem<'tcx> { tcx.map.local_def_id(node_id) } TransItem::Fn(instance) => { - if instance.def.is_local() { - instance.def + if let Some(node) = tcx.map.as_local_node_id(instance.def) { + if let hir_map::Node::NodeItem(_) = tcx.map.get(node) { + // This already is a "real" item + instance.def + } else { + // Get the enclosing item and register a read on it + tcx.map.get_parent_did(node) + } } else { // Translating an inlined item from another crate? Don't track anything. return; |
