Auto merge of #51611 - QuietMisdreavus:slippery-macros, r=ollie27

rustdoc: import cross-crate macros alongside everything else

The thrilling conclusion of the cross-crate macro saga in rustdoc! After https://github.com/rust-lang/rust/pull/51425 made sure we saw all the namespaces of an import (and prevented us from losing the `vec!` macro in std's documentation), here is the PR to handle cross-crate macro re-exports at the same time as everything else. This way, attributes like `#[doc(hidden)]` and `#[doc(no_inline)]` can be used to control how the documentation for these macros is seen, rather than rustdoc inlining every macro every time.

Fixes https://github.com/rust-lang/rust/issues/50647
This commit is contained in:
bors 2018-07-04 18:15:14 +00:00
commit 4af9132a02
6 changed files with 124 additions and 47 deletions

View file

@ -66,6 +66,6 @@ pub use all_item_types::FOO_STATIC;
#[doc(no_inline)]
pub use all_item_types::FOO_CONSTANT;
// @has 'foo/index.html' '//a[@href="../foo/macro.foo_macro.html"]' 'foo_macro'
// @has 'foo/index.html' '//a[@href="../all_item_types/macro.foo_macro.html"]' 'foo_macro'
#[doc(no_inline)]
pub use all_item_types::foo_macro;

View file

@ -0,0 +1,35 @@
// Copyright 2012-2013 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.
#![crate_name = "qwop"]
/// (writen on a spider's web) Some Macro
#[macro_export]
macro_rules! some_macro {
() => {
println!("this is some macro, for sure");
};
}
/// Some other macro, to fill space.
#[macro_export]
macro_rules! other_macro {
() => {
println!("this is some other macro, whatev");
};
}
/// This macro is so cool, it's Super.
#[macro_export]
macro_rules! super_macro {
() => {
println!("is it a bird? a plane? no, it's Super Macro!");
};
}

View file

@ -0,0 +1,48 @@
// Copyright 2012-2013 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:macro-vis.rs
// build-aux-docs
// ignore-cross-compile
#![feature(use_extern_macros)]
#[macro_use] extern crate qwop;
// @has macro_vis/macro.some_macro.html
// @has macro_vis/index.html '//a/@href' 'macro.some_macro.html'
pub use qwop::some_macro;
// @has macro_vis/macro.renamed_macro.html
// @!has - '//pre' 'some_macro'
// @has macro_vis/index.html '//a/@href' 'macro.renamed_macro.html'
#[doc(inline)]
pub use qwop::some_macro as renamed_macro;
// @!has macro_vis/macro.other_macro.html
// @!has macro_vis/index.html '//a/@href' 'macro.other_macro.html'
// @!has - '//code' 'pub use qwop::other_macro;'
#[doc(hidden)]
pub use qwop::other_macro;
// @has macro_vis/index.html '//code' 'pub use qwop::super_macro;'
// @!has macro_vis/macro.super_macro.html
#[doc(no_inline)]
pub use qwop::super_macro;
// @has macro_vis/macro.this_is_dope.html
// @has macro_vis/index.html '//a/@href' 'macro.this_is_dope.html'
/// What it says on the tin.
#[macro_export]
macro_rules! this_is_dope {
() => {
println!("yo check this out");
};
}

View file

@ -23,7 +23,7 @@ pub use macros::bar;
#[doc(inline)]
pub use macros::baz;
// @has pub_use_extern_macros/macro.quux.html
// @!has pub_use_extern_macros/macro.quux.html
// @!has pub_use_extern_macros/index.html '//code' 'pub use macros::quux;'
#[doc(hidden)]
pub use macros::quux;