From 742ff5a4896e476f52be5c2fc0ceee25cfc469bf Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Fri, 1 Sep 2017 23:09:11 +0200 Subject: [PATCH] Fix rendering of const keyword for functions --- src/librustdoc/html/render.rs | 21 ++++----------------- src/test/rustdoc/const-fn.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 src/test/rustdoc/const-fn.rs diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 49d4bd2324033..1e9dd6dc57de2 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -54,13 +54,11 @@ use externalfiles::ExternalHtml; use serialize::json::{ToJson, Json, as_json}; use syntax::{abi, ast}; -use syntax::feature_gate::UnstableFeatures; use rustc::hir::def_id::{CrateNum, CRATE_DEF_INDEX, DefId}; use rustc::middle::privacy::AccessLevels; use rustc::middle::stability; use rustc::hir; use rustc::util::nodemap::{FxHashMap, FxHashSet}; -use rustc::session::config::nightly_options::is_nightly_build; use rustc_data_structures::flock; use clean::{self, AttributesExt, GetDefId, SelfTy, Mutability, Span}; @@ -2192,14 +2190,9 @@ fn item_static(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, f: &clean::Function) -> fmt::Result { - // FIXME(#24111): remove when `const_fn` is stabilized - let vis_constness = match UnstableFeatures::from_environment() { - UnstableFeatures::Allow => f.constness, - _ => hir::Constness::NotConst - }; let name_len = format!("{}{}{}{:#}fn {}{:#}", VisSpace(&it.visibility), - ConstnessSpace(vis_constness), + ConstnessSpace(f.constness), UnsafetySpace(f.unsafety), AbiSpace(f.abi), it.name.as_ref().unwrap(), @@ -2209,7 +2202,7 @@ fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, write!(w, "{vis}{constness}{unsafety}{abi}fn \ {name}{generics}{decl}{where_clause}", vis = VisSpace(&it.visibility), - constness = ConstnessSpace(vis_constness), + constness = ConstnessSpace(f.constness), unsafety = UnsafetySpace(f.unsafety), abi = AbiSpace(f.abi), name = it.name.as_ref().unwrap(), @@ -2591,14 +2584,8 @@ fn render_assoc_item(w: &mut fmt::Formatter, href(did).map(|p| format!("{}#{}.{}", p.0, ty, name)).unwrap_or(anchor) } }; - // FIXME(#24111): remove when `const_fn` is stabilized - let vis_constness = if is_nightly_build() { - constness - } else { - hir::Constness::NotConst - }; let mut head_len = format!("{}{}{:#}fn {}{:#}", - ConstnessSpace(vis_constness), + ConstnessSpace(constness), UnsafetySpace(unsafety), AbiSpace(abi), name, @@ -2611,7 +2598,7 @@ fn render_assoc_item(w: &mut fmt::Formatter, }; write!(w, "{}{}{}fn {name}\ {generics}{decl}{where_clause}", - ConstnessSpace(vis_constness), + ConstnessSpace(constness), UnsafetySpace(unsafety), AbiSpace(abi), href = href, diff --git a/src/test/rustdoc/const-fn.rs b/src/test/rustdoc/const-fn.rs new file mode 100644 index 0000000000000..c323681f60b0a --- /dev/null +++ b/src/test/rustdoc/const-fn.rs @@ -0,0 +1,27 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(const_fn)] +#![crate_name = "foo"] + +// @has foo/fn.bar.html +// @has - '//*[@class="rust fn"]' 'pub const fn bar() -> ' +/// foo +pub const fn bar() -> usize { + 2 +} + +// @has foo/struct.Foo.html +// @has - '//*[@class="method"]' 'const fn new()' +pub struct Foo(usize); + +impl Foo { + pub const fn new() -> Foo { Foo(0) } +}