diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-07-29 15:39:51 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2018-08-04 11:02:00 +0200 |
| commit | 4aba7de2a77a95e2032eaf438e2e11b8e1a5eb82 (patch) | |
| tree | bad80df10e56aed6e6a6ee07335fa3b47a043b5e /src/librustdoc/clean/inline.rs | |
| parent | 579adf8c727861841b4819b4913385c2782977fb (diff) | |
| download | rust-4aba7de2a77a95e2032eaf438e2e11b8e1a5eb82.tar.gz rust-4aba7de2a77a95e2032eaf438e2e11b8e1a5eb82.zip | |
Clean generic impls code
Diffstat (limited to 'src/librustdoc/clean/inline.rs')
| -rw-r--r-- | src/librustdoc/clean/inline.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 8b4df1b7b7d..1c66c39b660 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -25,7 +25,13 @@ use rustc::util::nodemap::FxHashSet; use core::{DocContext, DocAccessLevels}; use doctree; -use clean::{self, GetDefId, ToSource, get_auto_traits_with_def_id}; +use clean::{ + self, + GetDefId, + ToSource, + get_auto_traits_with_def_id, + get_blanket_impls_with_def_id, +}; use super::Clean; @@ -168,7 +174,7 @@ pub fn record_extern_fqn(cx: &DocContext, did: DefId, kind: clean::TypeKind) { } }); let fqn = if let clean::TypeKind::Macro = kind { - vec![crate_name, relative.last().unwrap()] + vec![crate_name, relative.last().expect("relative was empty")] } else { once(crate_name).chain(relative).collect() }; @@ -274,11 +280,14 @@ pub fn build_impls(cx: &DocContext, did: DefId, auto_traits: bool) -> Vec<clean: if auto_traits { let auto_impls = get_auto_traits_with_def_id(cx, did); - let mut renderinfo = cx.renderinfo.borrow_mut(); - let new_impls: Vec<clean::Item> = auto_impls.into_iter() - .filter(|i| renderinfo.inlined.insert(i.def_id)).collect(); + { + let mut renderinfo = cx.renderinfo.borrow_mut(); + let new_impls: Vec<clean::Item> = auto_impls.into_iter() + .filter(|i| renderinfo.inlined.insert(i.def_id)).collect(); - impls.extend(new_impls); + impls.extend(new_impls); + } + impls.extend(get_blanket_impls_with_def_id(cx, did)); } // If this is the first time we've inlined something from another crate, then @@ -336,10 +345,13 @@ pub fn build_impls(cx: &DocContext, did: DefId, auto_traits: bool) -> Vec<clean: build_impl(cx, def_id, &mut impls); let auto_impls = get_auto_traits_with_def_id(cx, def_id); + let blanket_impls = get_blanket_impls_with_def_id(cx, def_id); let mut renderinfo = cx.renderinfo.borrow_mut(); let new_impls: Vec<clean::Item> = auto_impls.into_iter() - .filter(|i| renderinfo.inlined.insert(i.def_id)).collect(); + .chain(blanket_impls.into_iter()) + .filter(|i| renderinfo.inlined.insert(i.def_id)) + .collect(); impls.extend(new_impls); } |
