From a2fb4b95ddda1c2d622c809e63aa5e158cfb9976 Mon Sep 17 00:00:00 2001 From: Joshua Nelson Date: Wed, 16 Dec 2020 18:10:04 -0500 Subject: Remove `DefPath` from `Visibility` and calculate it on demand --- src/librustdoc/json/conversions.rs | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) (limited to 'src/librustdoc/json') diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs index 99587f4ec64..5a8b2cb5da1 100644 --- a/src/librustdoc/json/conversions.rs +++ b/src/librustdoc/json/conversions.rs @@ -35,7 +35,7 @@ impl JsonRenderer<'_> { crate_id: def_id.krate.as_u32(), name: name.map(|sym| sym.to_string()), source: self.convert_span(source), - visibility: visibility.into(), + visibility: self.convert_visibility(visibility), docs: attrs.collapsed_doc_value().unwrap_or_default(), links: attrs .links @@ -75,31 +75,29 @@ impl JsonRenderer<'_> { _ => None, } } -} - -impl From for Deprecation { - fn from(deprecation: rustc_attr::Deprecation) -> Self { - #[rustfmt::skip] - let rustc_attr::Deprecation { since, note, is_since_rustc_version: _, suggestion: _ } = deprecation; - Deprecation { since: since.map(|s| s.to_string()), note: note.map(|s| s.to_string()) } - } -} -impl From for Visibility { - fn from(v: clean::Visibility) -> Self { + fn convert_visibility(&self, v: clean::Visibility) -> Visibility { use clean::Visibility::*; match v { Public => Visibility::Public, Inherited => Visibility::Default, - Restricted(did, _) if did.index == CRATE_DEF_INDEX => Visibility::Crate, - Restricted(did, path) => Visibility::Restricted { + Restricted(did) if did.index == CRATE_DEF_INDEX => Visibility::Crate, + Restricted(did) => Visibility::Restricted { parent: did.into(), - path: path.to_string_no_crate_verbose(), + path: self.tcx.def_path(did).to_string_no_crate_verbose(), }, } } } +impl From for Deprecation { + fn from(deprecation: rustc_attr::Deprecation) -> Self { + #[rustfmt::skip] + let rustc_attr::Deprecation { since, note, is_since_rustc_version: _, suggestion: _ } = deprecation; + Deprecation { since: since.map(|s| s.to_string()), note: note.map(|s| s.to_string()) } + } +} + impl From for GenericArgs { fn from(args: clean::GenericArgs) -> Self { use clean::GenericArgs::*; -- cgit 1.4.1-3-g733a5