]> git.lizzy.rs Git - rust.git/commitdiff
Show constness for functions of reexported docs
authormitaa <mitaa.ceb@gmail.com>
Thu, 19 Nov 2015 15:27:17 +0000 (16:27 +0100)
committermitaa <mitaa.ceb@gmail.com>
Thu, 19 Nov 2015 21:47:02 +0000 (22:47 +0100)
src/librustdoc/clean/inline.rs
src/test/auxiliary/issue-27362.rs [new file with mode: 0644]
src/test/rustdoc/issue-27362.rs [new file with mode: 0644]

index ee772411c4e9af85b8b8ce01b8c385a546d4ee06..d6343abfd15363fede7fdb3e82ab3936da2db5f8 100644 (file)
@@ -170,12 +170,19 @@ fn build_external_function(cx: &DocContext, tcx: &ty::ctxt, did: DefId) -> clean
         ty::TyBareFn(_, ref f) => ((did, &f.sig).clean(cx), f.unsafety, f.abi),
         _ => panic!("bad function"),
     };
+
+    let constness = if csearch::is_const_fn(&tcx.sess.cstore, did) {
+        hir::Constness::Const
+    } else {
+        hir::Constness::NotConst
+    };
+
     let predicates = tcx.lookup_predicates(did);
     clean::Function {
         decl: decl,
         generics: (&t.generics, &predicates, subst::FnSpace).clean(cx),
         unsafety: style,
-        constness: hir::Constness::NotConst,
+        constness: constness,
         abi: abi,
     }
 }
@@ -345,9 +352,15 @@ pub fn build_impl(cx: &DocContext,
                     clean::TyMethodItem(clean::TyMethod {
                         unsafety, decl, self_, generics, abi
                     }) => {
+                        let constness = if csearch::is_const_fn(&tcx.sess.cstore, did) {
+                            hir::Constness::Const
+                        } else {
+                            hir::Constness::NotConst
+                        };
+
                         clean::MethodItem(clean::Method {
                             unsafety: unsafety,
-                            constness: hir::Constness::NotConst,
+                            constness: constness,
                             decl: decl,
                             self_: self_,
                             generics: generics,
diff --git a/src/test/auxiliary/issue-27362.rs b/src/test/auxiliary/issue-27362.rs
new file mode 100644 (file)
index 0000000..e551d62
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright 2015 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 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![feature(const_fn)]
+
+pub const fn foo() {}
+pub const unsafe fn bar() {}
+
+pub struct Foo;
+
+impl Foo {
+    pub const unsafe fn baz() {}
+}
diff --git a/src/test/rustdoc/issue-27362.rs b/src/test/rustdoc/issue-27362.rs
new file mode 100644 (file)
index 0000000..179778f
--- /dev/null
@@ -0,0 +1,19 @@
+// Copyright 2015 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 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// aux-build:issue-27362.rs
+// ignore-cross-compile
+
+extern crate issue_27362;
+pub use issue_27362 as quux;
+
+// @matches issue_27362/quux/fn.foo.html '//pre' "pub const fn foo()"
+// @matches issue_27362/quux/fn.bar.html '//pre' "pub const unsafe fn bar()"
+// @matches issue_27362/quux/struct.Foo.html '//code' "const unsafe fn baz()"