diff options
| author | bors <bors@rust-lang.org> | 2018-04-29 03:01:09 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-04-29 03:01:09 +0000 |
| commit | f76f6fbdea497c3cb536e33387f405cc74b99b76 (patch) | |
| tree | ff0bee2dad9d8e155c4977989995ac6991c90db4 /src/librustc_metadata/decoder.rs | |
| parent | f4c1f0ce93137049bd6c25d3289bf12bfc00426d (diff) | |
| parent | 9fc2595802d37326dc25fe524149023ed46b9730 (diff) | |
| download | rust-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.rs | 8 |
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, |
