about summary refs log tree commit diff
path: root/src/librustc_metadata/decoder.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-04-29 03:01:09 +0000
committerbors <bors@rust-lang.org>2018-04-29 03:01:09 +0000
commitf76f6fbdea497c3cb536e33387f405cc74b99b76 (patch)
treeff0bee2dad9d8e155c4977989995ac6991c90db4 /src/librustc_metadata/decoder.rs
parentf4c1f0ce93137049bd6c25d3289bf12bfc00426d (diff)
parent9fc2595802d37326dc25fe524149023ed46b9730 (diff)
downloadrust-f76f6fbdea497c3cb536e33387f405cc74b99b76.tar.gz
rust-f76f6fbdea497c3cb536e33387f405cc74b99b76.zip
Auto merge of #50271 - sinkuu:fix_ice, r=eddyb
Fix ICE #48984

* ~~fbf6423  The tail type was not normalized.~~
* https://github.com/rust-lang/rust/commit/d0839d5680d2a51785eeb0811cf3e2beba90eacb  The method had a wrong assumption that something whose parent is a trait is an associated item. Fixes #48984.
Diffstat (limited to 'src/librustc_metadata/decoder.rs')
-rw-r--r--src/librustc_metadata/decoder.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index 388bf1fb99a..57f92707ccf 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -977,7 +977,13 @@ impl<'a, 'tcx> CrateMetadata {
     }
 
     pub fn get_trait_of_item(&self, id: DefIndex) -> Option<DefId> {
-        self.def_key(id).parent.and_then(|parent_index| {
+        let def_key = self.def_key(id);
+        match def_key.disambiguated_data.data {
+            DefPathData::TypeNs(..) | DefPathData::ValueNs(..) => (),
+            // Not an associated item
+            _ => return None,
+        }
+        def_key.parent.and_then(|parent_index| {
             match self.entry(parent_index).kind {
                 EntryKind::Trait(_) => Some(self.local_def_id(parent_index)),
                 _ => None,