Skip to content

Commit

Permalink
Rollup merge of rust-lang#35234 - nrc:rustdoc-macros, r=steveklabnik
Browse files Browse the repository at this point in the history
rustdoc: remove the `!` from macro URLs and titles

Because the `!` is part of a macro use, not the macro's name. E.g., you write `macro_rules! foo` not `macro_rules! foo!`, also `#[macro_import(foo)]`.

(Pulled out of rust-lang#35020).
  • Loading branch information
Jonathan Turner committed Aug 20, 2016
2 parents 99867ee + 301401e commit d5595d1
Show file tree
Hide file tree
Showing 10 changed files with 35 additions and 15 deletions.
8 changes: 4 additions & 4 deletions src/doc/book/error-handling.md
Expand Up @@ -59,7 +59,7 @@ handling is reducing the amount of explicit case analysis the programmer has to
do while keeping code composable.

Keeping code composable is important, because without that requirement, we
could [`panic`](../std/macro.panic!.html) whenever we
could [`panic`](../std/macro.panic.html) whenever we
come across something unexpected. (`panic` causes the current task to unwind,
and in most cases, the entire program aborts.) Here's an example:

Expand Down Expand Up @@ -944,7 +944,7 @@ macro_rules! try {
}
```

(The [real definition](../std/macro.try!.html) is a bit more
(The [real definition](../std/macro.try.html) is a bit more
sophisticated. We will address that later.)

Using the `try!` macro makes it very easy to simplify our last example. Since
Expand Down Expand Up @@ -1271,7 +1271,7 @@ macro_rules! try {
```

This is not its real definition. Its real definition is
[in the standard library](../std/macro.try!.html):
[in the standard library](../std/macro.try.html):

<span id="code-try-def"></span>

Expand Down Expand Up @@ -2178,7 +2178,7 @@ heuristics!
[`From`](../std/convert/trait.From.html)
and
[`Error`](../std/error/trait.Error.html)
impls to make the [`try!`](../std/macro.try!.html)
impls to make the [`try!`](../std/macro.try.html)
macro more ergonomic.
* If you're writing a library and your code can produce errors, define your own
error type and implement the
Expand Down
2 changes: 1 addition & 1 deletion src/libcollections/fmt.rs
Expand Up @@ -530,7 +530,7 @@ use string;
/// assert_eq!(s, "Hello, world!");
/// ```
///
/// [format!]: ../macro.format!.html
/// [format!]: ../macro.format.html
#[stable(feature = "rust1", since = "1.0.0")]
pub fn format(args: Arguments) -> string::String {
let mut output = string::String::new();
Expand Down
8 changes: 5 additions & 3 deletions src/librustdoc/clean/mod.rs
Expand Up @@ -2803,7 +2803,7 @@ pub struct Macro {

impl Clean<Item> for doctree::Macro {
fn clean(&self, cx: &DocContext) -> Item {
let name = format!("{}!", self.name.clean(cx));
let name = self.name.clean(cx);
Item {
name: Some(name.clone()),
attrs: self.attrs.clean(cx),
Expand All @@ -2814,8 +2814,10 @@ impl Clean<Item> for doctree::Macro {
def_id: cx.map.local_def_id(self.id),
inner: MacroItem(Macro {
source: format!("macro_rules! {} {{\n{}}}",
name.trim_right_matches('!'), self.matchers.iter().map(|span|
format!(" {} => {{ ... }};\n", span.to_src(cx))).collect::<String>()),
name,
self.matchers.iter().map(|span| {
format!(" {} => {{ ... }};\n", span.to_src(cx))
}).collect::<String>()),
imported_from: self.imported_from.clean(cx),
}),
}
Expand Down
10 changes: 10 additions & 0 deletions src/librustdoc/html/render.rs
Expand Up @@ -1426,6 +1426,16 @@ impl Context {
.open(&redir_dst) {
try_err!(layout::redirect(&mut redirect_out, file_name), &redir_dst);
}

// If the item is a macro, redirect from the old macro URL (with !)
// to the new one (without).
// FIXME(#35705) remove this redirect.
if item_type == ItemType::Macro {
let redir_name = format!("{}.{}!.html", item_type, name);
let redir_dst = self.dst.join(redir_name);
let mut redirect_out = try_err!(File::create(&redir_dst), &redir_dst);
try_err!(layout::redirect(&mut redirect_out, file_name), &redir_dst);
}
}
}
Ok(())
Expand Down
6 changes: 3 additions & 3 deletions src/libstd/io/mod.rs
Expand Up @@ -236,7 +236,7 @@
//! to read the line and print it, so we use `()`.
//!
//! [result]: type.Result.html
//! [try]: ../macro.try!.html
//! [try]: ../macro.try.html
//!
//! ## Platform-specific behavior
//!
Expand Down Expand Up @@ -957,8 +957,8 @@ pub trait Write {
/// explicitly be called. The [`write!`][write] macro should be favored to
/// invoke this method instead.
///
/// [formatargs]: ../macro.format_args!.html
/// [write]: ../macro.write!.html
/// [formatargs]: ../macro.format_args.html
/// [write]: ../macro.write.html
///
/// This function internally uses the [`write_all`][writeall] method on
/// this trait and hence will continuously write data so long as no errors
Expand Down
2 changes: 1 addition & 1 deletion src/libstd/lib.rs
Expand Up @@ -175,7 +175,7 @@
//! [`atomic`]: sync/atomic/index.html
//! [`collections`]: collections/index.html
//! [`for`]: ../book/loops.html#for
//! [`format!`]: macro.format!.html
//! [`format!`]: macro.format.html
//! [`fs`]: fs/index.html
//! [`io`]: io/index.html
//! [`iter`]: iter/index.html
Expand Down
2 changes: 1 addition & 1 deletion src/libstd/primitive_docs.rs
Expand Up @@ -27,7 +27,7 @@
/// assert!(!bool_val);
/// ```
///
/// [`assert!`]: macro.assert!.html
/// [`assert!`]: macro.assert.html
/// [`if`]: ../book/if.html
/// [`BitAnd`]: ops/trait.BitAnd.html
/// [`BitOr`]: ops/trait.BitOr.html
Expand Down
2 changes: 1 addition & 1 deletion src/test/rustdoc/issue-26606.rs
Expand Up @@ -12,7 +12,7 @@
// ignore-cross-compile
// build-aux-docs

// @has issue_26606_macro/macro.make_item!.html
// @has issue_26606_macro/macro.make_item.html
#[macro_use]
extern crate issue_26606_macro;

Expand Down
4 changes: 3 additions & 1 deletion src/test/rustdoc/macros.rs
Expand Up @@ -8,10 +8,12 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// @has macros/macro.my_macro!.html //pre 'macro_rules! my_macro {'
// @has macros/macro.my_macro.html //pre 'macro_rules! my_macro {'
// @has - //pre '() => { ... };'
// @has - //pre '($a:tt) => { ... };'
// @has - //pre '($e:expr) => { ... };'
// @has macros/macro.my_macro!.html
// @has - //a 'macro.my_macro.html'
#[macro_export]
macro_rules! my_macro {
() => [];
Expand Down
6 changes: 6 additions & 0 deletions src/tools/linkchecker/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit d5595d1

Please sign in to comment.