about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorJonas Schievink <jonas@schievink.net>2016-07-11 17:11:51 +0200
committerJonas Schievink <jonas@schievink.net>2016-07-11 17:11:51 +0200
commitfd2b65ee701d424f0f2dbdbb89b5eba5fb9bace4 (patch)
tree758548b342bca11edab21b4a41072e61bbc332c9 /src
parent37d5c06a0d0d1658900636be8b66ccf4d9c4b23c (diff)
downloadrust-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.rs10
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;