diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-07-29 18:15:28 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-08-04 11:12:22 +0200 |
| commit | eb7384d479f5f17a71e17c99069f13eb90d2eb4a (patch) | |
| tree | 5e833f82013e862f921991b4a067033e8b58407a | |
| parent | 3a92b9987abd01c4b7e59c870e85beb9dd4d4aa2 (diff) | |
| download | rust-eb7384d479f5f17a71e17c99069f13eb90d2eb4a.tar.gz rust-eb7384d479f5f17a71e17c99069f13eb90d2eb4a.zip | |
Add missing "is_min_const_fn" calls to prevent "const" to be displayed if the "rustc_const_unstable" attribute is present
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index cc3a60c596a..e47110a7a2f 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1090,25 +1090,37 @@ impl Clean<TypeKind> for hir::def::DefKind { impl Clean<Item> for hir::TraitItem<'_> { fn clean(&self, cx: &DocContext<'_>) -> Item { + let local_did = cx.tcx.hir().local_def_id(self.hir_id); let inner = match self.kind { hir::TraitItemKind::Const(ref ty, default) => { AssocConstItem(ty.clean(cx), default.map(|e| print_const_expr(cx, e))) } hir::TraitItemKind::Fn(ref sig, hir::TraitFn::Provided(body)) => { - MethodItem((sig, &self.generics, body, None).clean(cx)) + let mut m = (sig, &self.generics, body, None).clean(cx); + if m.header.constness == hir::Constness::Const + && !is_min_const_fn(cx.tcx, local_did.to_def_id()) + { + m.header.constness = hir::Constness::NotConst; + } + MethodItem(m) } hir::TraitItemKind::Fn(ref sig, hir::TraitFn::Required(ref names)) => { let (generics, decl) = enter_impl_trait(cx, || { (self.generics.clean(cx), (&*sig.decl, &names[..]).clean(cx)) }); let (all_types, ret_types) = get_all_types(&generics, &decl, cx); - TyMethodItem(TyMethod { header: sig.header, decl, generics, all_types, ret_types }) + let mut t = TyMethod { header: sig.header, decl, generics, all_types, ret_types }; + if t.header.constness == hir::Constness::Const + && !is_min_const_fn(cx.tcx, local_did.to_def_id()) + { + t.header.constness = hir::Constness::NotConst; + } + TyMethodItem(t) } hir::TraitItemKind::Type(ref bounds, ref default) => { AssocTypeItem(bounds.clean(cx), default.clean(cx)) } }; - let local_did = cx.tcx.hir().local_def_id(self.hir_id); Item { name: Some(self.ident.name.clean(cx)), attrs: self.attrs.clean(cx), @@ -1124,12 +1136,19 @@ impl Clean<Item> for hir::TraitItem<'_> { impl Clean<Item> for hir::ImplItem<'_> { fn clean(&self, cx: &DocContext<'_>) -> Item { + let local_did = cx.tcx.hir().local_def_id(self.hir_id); let inner = match self.kind { hir::ImplItemKind::Const(ref ty, expr) => { AssocConstItem(ty.clean(cx), Some(print_const_expr(cx, expr))) } hir::ImplItemKind::Fn(ref sig, body) => { - MethodItem((sig, &self.generics, body, Some(self.defaultness)).clean(cx)) + let mut m = (sig, &self.generics, body, Some(self.defaultness)).clean(cx); + if m.header.constness == hir::Constness::Const + && !is_min_const_fn(cx.tcx, local_did.to_def_id()) + { + m.header.constness = hir::Constness::NotConst; + } + MethodItem(m) } hir::ImplItemKind::TyAlias(ref ty) => { let type_ = ty.clean(cx); @@ -1137,7 +1156,6 @@ impl Clean<Item> for hir::ImplItem<'_> { TypedefItem(Typedef { type_, generics: Generics::default(), item_type }, true) } }; - let local_did = cx.tcx.hir().local_def_id(self.hir_id); Item { name: Some(self.ident.name.clean(cx)), source: self.span.clean(cx), |
