Skip to content

[rustdoc] Page hash handling #70563

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Jul 7, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 1 addition & 14 deletions src/bootstrap/bin/rustdoc.rs
Original file line number Diff line number Diff line change
@@ -13,7 +13,6 @@ fn main() {
let libdir = env::var_os("RUSTDOC_LIBDIR").expect("RUSTDOC_LIBDIR was not set");
let stage = env::var("RUSTC_STAGE").expect("RUSTC_STAGE was not set");
let sysroot = env::var_os("RUSTC_SYSROOT").expect("RUSTC_SYSROOT was not set");
let mut has_unstable = false;

use std::str::FromStr;

@@ -55,22 +54,10 @@ fn main() {
cmd.arg("--crate-version").arg(version);
}

// Needed to be able to run all rustdoc tests.
if env::var_os("RUSTDOC_GENERATE_REDIRECT_PAGES").is_some() {
// This "unstable-options" can be removed when `--generate-redirect-pages` is stabilized
if !has_unstable {
cmd.arg("-Z").arg("unstable-options");
}
cmd.arg("--generate-redirect-pages");
has_unstable = true;
}

// Needed to be able to run all rustdoc tests.
if let Some(ref x) = env::var_os("RUSTDOC_RESOURCE_SUFFIX") {
// This "unstable-options" can be removed when `--resource-suffix` is stabilized
if !has_unstable {
cmd.arg("-Z").arg("unstable-options");
}
cmd.arg("-Z").arg("unstable-options");
cmd.arg("--resource-suffix").arg(x);
}

1 change: 0 additions & 1 deletion src/bootstrap/doc.rs
Original file line number Diff line number Diff line change
@@ -451,7 +451,6 @@ impl Step for Std {
.arg("--markdown-css")
.arg("rust.css")
.arg("--markdown-no-toc")
.arg("--generate-redirect-pages")
.arg("-Z")
.arg("unstable-options")
.arg("--resource-suffix")
4 changes: 0 additions & 4 deletions src/librustdoc/config.rs
Original file line number Diff line number Diff line change
@@ -242,8 +242,6 @@ pub struct RenderOptions {
/// If false, the `select` element to have search filtering by crates on rendered docs
/// won't be generated.
pub generate_search_filter: bool,
/// Option (disabled by default) to generate files used by RLS and some other tools.
pub generate_redirect_pages: bool,
/// Document items that have lower than `pub` visibility.
pub document_private: bool,
/// Document items that have `doc(hidden)`.
@@ -528,7 +526,6 @@ impl Options {
let static_root_path = matches.opt_str("static-root-path");
let generate_search_filter = !matches.opt_present("disable-per-crate-search");
let persist_doctests = matches.opt_str("persist-doctests").map(PathBuf::from);
let generate_redirect_pages = matches.opt_present("generate-redirect-pages");
let test_builder = matches.opt_str("test-builder").map(PathBuf::from);
let codegen_options_strs = matches.opt_strs("C");
let debugging_options_strs = matches.opt_strs("Z");
@@ -592,7 +589,6 @@ impl Options {
markdown_css,
markdown_playground_url,
generate_search_filter,
generate_redirect_pages,
document_private,
document_hidden,
},
37 changes: 0 additions & 37 deletions src/librustdoc/html/item_type.rs
Original file line number Diff line number Diff line change
@@ -154,47 +154,10 @@ impl ItemType {
ItemType::TraitAlias => "traitalias",
}
}

pub fn name_space(&self) -> &'static str {
match *self {
ItemType::Struct
| ItemType::Union
| ItemType::Enum
| ItemType::Module
| ItemType::Typedef
| ItemType::Trait
| ItemType::Primitive
| ItemType::AssocType
| ItemType::OpaqueTy
| ItemType::TraitAlias
| ItemType::ForeignType => NAMESPACE_TYPE,

ItemType::ExternCrate
| ItemType::Import
| ItemType::Function
| ItemType::Static
| ItemType::Impl
| ItemType::TyMethod
| ItemType::Method
| ItemType::StructField
| ItemType::Variant
| ItemType::Constant
| ItemType::AssocConst => NAMESPACE_VALUE,

ItemType::Macro | ItemType::ProcAttribute | ItemType::ProcDerive => NAMESPACE_MACRO,

ItemType::Keyword => NAMESPACE_KEYWORD,
}
}
}

impl fmt::Display for ItemType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}

pub const NAMESPACE_TYPE: &str = "t";
pub const NAMESPACE_VALUE: &str = "v";
pub const NAMESPACE_MACRO: &str = "m";
pub const NAMESPACE_KEYWORD: &str = "k";
59 changes: 9 additions & 50 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
@@ -195,8 +195,6 @@ crate struct SharedContext {
/// Optional path string to be used to load static files on output pages. If not set, uses
/// combinations of `../` to reach the documentation root.
pub static_root_path: Option<String>,
/// Option disabled by default to generate files used by RLS and some other tools.
pub generate_redirect_pages: bool,
/// The fs handle we are working with.
pub fs: DocFS,
/// The default edition used to parse doctests.
@@ -468,7 +466,6 @@ pub fn run(
resource_suffix,
static_root_path,
generate_search_filter,
generate_redirect_pages,
document_private,
..
} = options;
@@ -536,7 +533,6 @@ pub fn run(
themes,
resource_suffix,
static_root_path,
generate_redirect_pages,
fs: DocFS::new(&errors),
edition,
codes: ErrorCodes::from(UnstableFeatures::from_environment().is_nightly_build()),
@@ -1556,14 +1552,6 @@ impl Context {
if !self.render_redirect_pages {
all.append(full_path(self, &item), &item_type);
}
if self.shared.generate_redirect_pages {
// Redirect from a sane URL using the namespace to Rustdoc's
// URL for the page.
let redir_name = format!("{}.{}.html", name, item_type.name_space());
let redir_dst = self.dst.join(redir_name);
let v = layout::redirect(file_name);
self.shared.fs.write(&redir_dst, v.as_bytes())?;
}
// If the item is a macro, redirect from the old macro URL (with !)
// to the new one (without).
if item_type == ItemType::Macro {
@@ -2586,8 +2574,7 @@ fn item_trait(w: &mut Buffer, cx: &Context, it: &clean::Item, t: &clean::Trait)
let name = m.name.as_ref().unwrap();
let item_type = m.type_();
let id = cx.derive_id(format!("{}.{}", item_type, name));
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
write!(w, "<h3 id='{id}' class='method'><code id='{ns_id}'>", id = id, ns_id = ns_id);
write!(w, "<h3 id='{id}' class='method'><code>", id = id);
render_assoc_item(w, m, AssocItemLink::Anchor(Some(&id)), ItemType::Impl);
write!(w, "</code>");
render_stability_since(w, m, t);
@@ -2972,20 +2959,14 @@ fn item_struct(w: &mut Buffer, cx: &Context, it: &clean::Item, s: &clean::Struct
ItemType::StructField,
field.name.as_ref().unwrap()
));
let ns_id = cx.derive_id(format!(
"{}.{}",
field.name.as_ref().unwrap(),
ItemType::StructField.name_space()
));
write!(
w,
"<span id=\"{id}\" class=\"{item_type} small-section-header\">\
<a href=\"#{id}\" class=\"anchor field\"></a>\
<code id=\"{ns_id}\">{name}: {ty}</code>\
<code>{name}: {ty}</code>\
</span>",
item_type = ItemType::StructField,
id = id,
ns_id = ns_id,
name = field.name.as_ref().unwrap(),
ty = ty.print()
);
@@ -3103,18 +3084,12 @@ fn item_enum(w: &mut Buffer, cx: &Context, it: &clean::Item, e: &clean::Enum) {
for variant in &e.variants {
let id =
cx.derive_id(format!("{}.{}", ItemType::Variant, variant.name.as_ref().unwrap()));
let ns_id = cx.derive_id(format!(
"{}.{}",
variant.name.as_ref().unwrap(),
ItemType::Variant.name_space()
));
write!(
w,
"<div id=\"{id}\" class=\"variant small-section-header\">\
<a href=\"#{id}\" class=\"anchor field\"></a>\
<code id='{ns_id}'>{name}",
<a href=\"#{id}\" class=\"anchor field\"></a>\
<code>{name}",
id = id,
ns_id = ns_id,
name = variant.name.as_ref().unwrap()
);
if let clean::VariantItem(ref var) = variant.inner {
@@ -3155,21 +3130,13 @@ fn item_enum(w: &mut Buffer, cx: &Context, it: &clean::Item, e: &clean::Enum) {
variant.name.as_ref().unwrap(),
field.name.as_ref().unwrap()
));
let ns_id = cx.derive_id(format!(
"{}.{}.{}.{}",
variant.name.as_ref().unwrap(),
ItemType::Variant.name_space(),
field.name.as_ref().unwrap(),
ItemType::StructField.name_space()
));
write!(
w,
"<span id=\"{id}\" class=\"variant small-section-header\">\
<a href=\"#{id}\" class=\"anchor field\"></a>\
<code id='{ns_id}'>{f}:&nbsp;{t}\
<code>{f}:&nbsp;{t}\
</code></span>",
id = id,
ns_id = ns_id,
f = field.name.as_ref().unwrap(),
t = ty.print()
);
@@ -3661,9 +3628,7 @@ fn render_impl(
// Only render when the method is not static or we allow static methods
if render_method_item {
let id = cx.derive_id(format!("{}.{}", item_type, name));
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class);
write!(w, "<code id='{}'>", ns_id);
write!(w, "<h4 id='{}' class=\"{}{}\"><code>", id, item_type, extra_class);
render_assoc_item(w, item, link.anchor(&id), ItemType::Impl);
write!(w, "</code>");
render_stability_since_raw(w, item.stable_since(), outer_version);
@@ -3679,17 +3644,13 @@ fn render_impl(
}
clean::TypedefItem(ref tydef, _) => {
let id = cx.derive_id(format!("{}.{}", ItemType::AssocType, name));
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class);
write!(w, "<code id='{}'>", ns_id);
write!(w, "<h4 id='{}' class=\"{}{}\"><code>", id, item_type, extra_class);
assoc_type(w, item, &Vec::new(), Some(&tydef.type_), link.anchor(&id), "");
write!(w, "</code></h4>");
}
clean::AssocConstItem(ref ty, ref default) => {
let id = cx.derive_id(format!("{}.{}", item_type, name));
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class);
write!(w, "<code id='{}'>", ns_id);
write!(w, "<h4 id='{}' class=\"{}{}\"><code>", id, item_type, extra_class);
assoc_const(w, item, ty, default.as_ref(), link.anchor(&id), "");
write!(w, "</code>");
render_stability_since_raw(w, item.stable_since(), outer_version);
@@ -3704,9 +3665,7 @@ fn render_impl(
}
clean::AssocTypeItem(ref bounds, ref default) => {
let id = cx.derive_id(format!("{}.{}", item_type, name));
let ns_id = cx.derive_id(format!("{}.{}", name, item_type.name_space()));
write!(w, "<h4 id='{}' class=\"{}{}\">", id, item_type, extra_class);
write!(w, "<code id='{}'>", ns_id);
write!(w, "<h4 id='{}' class=\"{}{}\"><code>", id, item_type, extra_class);
assoc_type(w, item, bounds, default.as_ref(), link.anchor(&id), "");
write!(w, "</code></h4>");
}
21 changes: 12 additions & 9 deletions src/librustdoc/html/static/main.js
Original file line number Diff line number Diff line change
@@ -112,9 +112,11 @@ function defocusSearchBar() {
}

function getPageId() {
var id = document.location.href.split("#")[1];
if (id) {
return id.split("?")[0].split("&")[0];
if (window.location.hash) {
var tmp = window.location.hash.replace(/^#/, "");
if (tmp.length > 0) {
return tmp;
}
}
return null;
}
@@ -2551,6 +2553,13 @@ function defocusSearchBar() {

onEachLazy(document.getElementsByClassName("docblock"), buildToggleWrapper);
onEachLazy(document.getElementsByClassName("sub-variant"), buildToggleWrapper);
var pageId = getPageId();

autoCollapse(pageId, getCurrentValue("rustdoc-collapse") === "true");

if (pageId !== null) {
expandSection(pageId);
}
}());

function createToggleWrapper(tog) {
@@ -2686,12 +2695,6 @@ function defocusSearchBar() {
hideSidebar();
};

autoCollapse(getPageId(), getCurrentValue("rustdoc-collapse") === "true");

if (window.location.hash && window.location.hash.length > 0) {
expandSection(window.location.hash.replace(/^#/, ""));
}

if (main) {
onEachLazy(main.getElementsByClassName("loading-content"), function(e) {
e.remove();
7 changes: 0 additions & 7 deletions src/librustdoc/lib.rs
Original file line number Diff line number Diff line change
@@ -374,13 +374,6 @@ fn opts() -> Vec<RustcOptGroup> {
"PATH",
)
}),
unstable("generate-redirect-pages", |o| {
o.optflag(
"",
"generate-redirect-pages",
"Generate extra pages to support legacy URLs and tool links",
)
}),
unstable("show-coverage", |o| {
o.optflag(
"",
2 changes: 1 addition & 1 deletion src/librustdoc/passes/collect_intra_doc_links.rs
Original file line number Diff line number Diff line change
@@ -1069,7 +1069,7 @@ fn handle_variant(
};
let parent_def = Res::Def(DefKind::Enum, parent);
let variant = cx.tcx.expect_variant_res(res);
Ok((parent_def, Some(format!("{}.v", variant.ident.name))))
Ok((parent_def, Some(format!("variant.{}", variant.ident.name))))
}

const PRIMITIVES: &[(&str, Res)] = &[
2 changes: 1 addition & 1 deletion src/libstd/sys/unix/ext/fs.rs
Original file line number Diff line number Diff line change
@@ -133,7 +133,7 @@ pub trait FileExt {
/// Note that similar to [`File::write`], it is not an error to return a
/// short write.
///
/// [`File::write`]: ../../../../std/fs/struct.File.html#write.v
/// [`File::write`]: ../../../../std/fs/struct.File.html#method.write
///
/// # Examples
///
2 changes: 1 addition & 1 deletion src/libstd/sys/vxworks/ext/fs.rs
Original file line number Diff line number Diff line change
@@ -132,7 +132,7 @@ pub trait FileExt {
/// Note that similar to [`File::write`], it is not an error to return a
/// short write.
///
/// [`File::write`]: ../../../../std/fs/struct.File.html#write.v
/// [`File::write`]: ../../../../std/fs/struct.File.html#method.write
///
/// # Examples
///
2 changes: 0 additions & 2 deletions src/test/rustdoc/assoc-types.rs
Original file line number Diff line number Diff line change
@@ -5,9 +5,7 @@
// @has assoc_types/trait.Index.html
pub trait Index<I: ?Sized> {
// @has - '//*[@id="associatedtype.Output"]//code' 'type Output: ?Sized'
// @has - '//code[@id="Output.t"]' 'type Output: ?Sized'
type Output: ?Sized;
// @has - '//code[@id="index.v"]' 'fn index'
// @has - '//*[@id="tymethod.index"]//code' \
// "fn index<'a>(&'a self, index: I) -> &'a Self::Output"
// @has - '//*[@id="tymethod.index"]//code//a[@href="../assoc_types/trait.Index.html#associatedtype.Output"]' \
2 changes: 1 addition & 1 deletion src/test/rustdoc/const.rs
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
pub struct Foo;

impl Foo {
// @has const/struct.Foo.html '//code[@id="new.v"]' 'const unsafe fn new'
// @has const/struct.Foo.html '//*[@id="method.new"]//code' 'const unsafe fn new'
pub const unsafe fn new() -> Foo {
Foo
}
4 changes: 2 additions & 2 deletions src/test/rustdoc/inline_cross/impl_trait.rs
Original file line number Diff line number Diff line change
@@ -31,8 +31,8 @@ pub use impl_trait_aux::func4;
pub use impl_trait_aux::async_fn;

// @has impl_trait/struct.Foo.html
// @has - '//code[@id="method.v"]' "pub fn method<'a>(_x: impl Clone + Into<Vec<u8>> + 'a)"
// @!has - '//code[@id="method.v"]' 'where'
// @has - '//*[@id="method.method"]//code' "pub fn method<'a>(_x: impl Clone + Into<Vec<u8>> + 'a)"
// @!has - '//*[@id="method.method"]//code' 'where'
pub use impl_trait_aux::Foo;

// @has impl_trait/struct.Bar.html
2 changes: 1 addition & 1 deletion src/test/rustdoc/intra-link-self.rs
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ pub struct MyStruct {
}

pub enum MyEnum {
// @has foo/enum.MyEnum.html '//a/@href' '../foo/enum.MyEnum.html#EnumVariant.v'
// @has foo/enum.MyEnum.html '//a/@href' '../foo/enum.MyEnum.html#variant.EnumVariant'

/// [`EnumVariant`]
///
4 changes: 2 additions & 2 deletions src/test/rustdoc/intra-links.rs
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
// @has - '//a/@href' '../intra_links/struct.ThisType.html'
// @has - '//a/@href' '../intra_links/struct.ThisType.html#method.this_method'
// @has - '//a/@href' '../intra_links/enum.ThisEnum.html'
// @has - '//a/@href' '../intra_links/enum.ThisEnum.html#ThisVariant.v'
// @has - '//a/@href' '../intra_links/enum.ThisEnum.html#variant.ThisVariant'
// @has - '//a/@href' '../intra_links/trait.ThisTrait.html'
// @has - '//a/@href' '../intra_links/trait.ThisTrait.html#tymethod.this_associated_method'
// @has - '//a/@href' '../intra_links/trait.ThisTrait.html#associatedtype.ThisAssociatedType'
@@ -73,7 +73,7 @@ pub fn SoAmbiguous() {}
// @has - '//a/@href' '../intra_links/struct.ThisType.html'
// @has - '//a/@href' '../intra_links/struct.ThisType.html#method.this_method'
// @has - '//a/@href' '../intra_links/enum.ThisEnum.html'
// @has - '//a/@href' '../intra_links/enum.ThisEnum.html#ThisVariant.v'
// @has - '//a/@href' '../intra_links/enum.ThisEnum.html#variant.ThisVariant'
/// Shortcut links for:
/// * [`ThisType`]
/// * [`ThisType::this_method`]
7 changes: 2 additions & 5 deletions src/test/rustdoc/issue-19190.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// compile-flags:-Z unstable-options --generate-redirect-pages

use std::ops::Deref;

pub struct Foo;
@@ -15,9 +13,8 @@ impl Deref for Bar {
fn deref(&self) -> &Foo { loop {} }
}

// @has issue_19190/Bar.t.html
// @has issue_19190/struct.Bar.html
// @has - '//*[@id="foo.v"]' 'fn foo(&self)'
// @has - '//*[@id="method.foo"]//code' 'fn foo(&self)'
// @has - '//*[@id="method.foo"]' 'fn foo(&self)'
// @!has - '//*[@id="static_foo.v"]' 'fn static_foo()'
// @!has - '//*[@id="method.static_foo"]//code' 'fn static_foo()'
// @!has - '//*[@id="method.static_foo"]' 'fn static_foo()'
3 changes: 0 additions & 3 deletions src/test/rustdoc/issue-25001.rs
Original file line number Diff line number Diff line change
@@ -9,17 +9,14 @@ pub trait Bar {

impl Foo<u8> {
// @has - '//*[@id="method.pass"]//code' 'fn pass()'
// @has - '//code[@id="pass.v"]' 'fn pass()'
pub fn pass() {}
}
impl Foo<u16> {
// @has - '//*[@id="method.pass-1"]//code' 'fn pass() -> usize'
// @has - '//code[@id="pass.v-1"]' 'fn pass() -> usize'
pub fn pass() -> usize { 42 }
}
impl Foo<u32> {
// @has - '//*[@id="method.pass-2"]//code' 'fn pass() -> isize'
// @has - '//code[@id="pass.v-2"]' 'fn pass() -> isize'
pub fn pass() -> isize { 42 }
}

14 changes: 7 additions & 7 deletions src/test/rustdoc/issue-35169-2.rs
Original file line number Diff line number Diff line change
@@ -24,17 +24,17 @@ impl DerefMut for Bar {
}

// @has issue_35169_2/struct.Bar.html
// @has - '//*[@id="by_ref.v"]' 'fn by_ref(&self)'
// @has - '//*[@id="method.by_ref"]//code' 'fn by_ref(&self)'
// @has - '//*[@id="method.by_ref"]' 'fn by_ref(&self)'
// @has - '//*[@id="by_explicit_ref.v"]' 'fn by_explicit_ref(self: &Foo)'
// @has - '//*[@id="method.by_explicit_ref"]//code' 'fn by_explicit_ref(self: &Foo)'
// @has - '//*[@id="method.by_explicit_ref"]' 'fn by_explicit_ref(self: &Foo)'
// @has - '//*[@id="by_mut_ref.v"]' 'fn by_mut_ref(&mut self)'
// @has - '//*[@id="method.by_mut_ref"]//code' 'fn by_mut_ref(&mut self)'
// @has - '//*[@id="method.by_mut_ref"]' 'fn by_mut_ref(&mut self)'
// @has - '//*[@id="by_explicit_mut_ref.v"]' 'fn by_explicit_mut_ref(self: &mut Foo)'
// @has - '//*[@id="method.by_explicit_mut_ref"]//code' 'fn by_explicit_mut_ref(self: &mut Foo)'
// @has - '//*[@id="method.by_explicit_mut_ref"]' 'fn by_explicit_mut_ref(self: &mut Foo)'
// @!has - '//*[@id="by_explicit_box.v"]' 'fn by_explicit_box(self: Box<Foo>)'
// @!has - '//*[@id="method.by_explicit_box"]//code' 'fn by_explicit_box(self: Box<Foo>)'
// @!has - '//*[@id="method.by_explicit_box"]' 'fn by_explicit_box(self: Box<Foo>)'
// @!has - '//*[@id="by_explicit_self_box.v"]' 'fn by_explicit_self_box(self: Box<Self>)'
// @!has - '//*[@id="method.by_explicit_self_box"]//code' 'fn by_explicit_self_box(self: Box<Self>)'
// @!has - '//*[@id="method.by_explicit_self_box"]' 'fn by_explicit_self_box(self: Box<Self>)'
// @!has - '//*[@id="static_foo.v"]' 'fn static_foo()'
// @!has - '//*[@id="method.static_foo"]//code' 'fn static_foo()'
// @!has - '//*[@id="method.static_foo"]' 'fn static_foo()'
14 changes: 7 additions & 7 deletions src/test/rustdoc/issue-35169.rs
Original file line number Diff line number Diff line change
@@ -19,17 +19,17 @@ impl Deref for Bar {
}

// @has issue_35169/struct.Bar.html
// @has - '//*[@id="by_ref.v"]' 'fn by_ref(&self)'
// @has - '//*[@id="method.by_ref"]//code' 'fn by_ref(&self)'
// @has - '//*[@id="method.by_ref"]' 'fn by_ref(&self)'
// @has - '//*[@id="by_explicit_ref.v"]' 'fn by_explicit_ref(self: &Foo)'
// @has - '//*[@id="method.by_explicit_ref"]//code' 'fn by_explicit_ref(self: &Foo)'
// @has - '//*[@id="method.by_explicit_ref"]' 'fn by_explicit_ref(self: &Foo)'
// @!has - '//*[@id="by_mut_ref.v"]' 'fn by_mut_ref(&mut self)'
// @!has - '//*[@id="method.by_mut_ref"]//code' 'fn by_mut_ref(&mut self)'
// @!has - '//*[@id="method.by_mut_ref"]' 'fn by_mut_ref(&mut self)'
// @!has - '//*[@id="by_explicit_mut_ref.v"]' 'fn by_explicit_mut_ref(self: &mut Foo)'
// @!has - '//*[@id="method.by_explicit_mut_ref"]//code' 'fn by_explicit_mut_ref(self: &mut Foo)'
// @!has - '//*[@id="method.by_explicit_mut_ref"]' 'fn by_explicit_mut_ref(self: &mut Foo)'
// @!has - '//*[@id="by_explicit_box.v"]' 'fn by_explicit_box(self: Box<Foo>)'
// @!has - '//*[@id="method.by_explicit_box"]//code' 'fn by_explicit_box(self: Box<Foo>)'
// @!has - '//*[@id="method.by_explicit_box"]' 'fn by_explicit_box(self: Box<Foo>)'
// @!has - '//*[@id="by_explicit_self_box.v"]' 'fn by_explicit_self_box(self: Box<Self>)'
// @!has - '//*[@id="method.by_explicit_self_box"]//code' 'fn by_explicit_self_box(self: Box<Self>)'
// @!has - '//*[@id="method.by_explicit_self_box"]' 'fn by_explicit_self_box(self: Box<Self>)'
// @!has - '//*[@id="static_foo.v"]' 'fn static_foo()'
// @!has - '//*[@id="method.static_foo"]//code' 'fn static_foo()'
// @!has - '//*[@id="method.static_foo"]' 'fn static_foo()'
2 changes: 1 addition & 1 deletion src/test/rustdoc/struct-field.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@

// @has foo/index.html '//*[@class="docblock"]/p/a[@href="../foo/struct.Foo.html#structfield.bar"]' 'Foo::bar'
// @has foo/index.html '//*[@class="docblock"]/p/a[@href="../foo/union.Bar.html#structfield.foo"]' 'Bar::foo'
// @has foo/index.html '//*[@class="docblock"]/p/a[@href="../foo/enum.Uniooon.html#X.v"]' 'Uniooon::X'
// @has foo/index.html '//*[@class="docblock"]/p/a[@href="../foo/enum.Uniooon.html#variant.X"]' 'Uniooon::X'

//! Test with [Foo::bar], [Bar::foo], [Uniooon::X]
8 changes: 0 additions & 8 deletions src/test/rustdoc/structfields.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
// compile-flags:-Z unstable-options --generate-redirect-pages

// @has structfields/Foo.t.html
// @has - struct.Foo.html
// @has structfields/struct.Foo.html
pub struct Foo {
// @has - //pre "pub a: ()"
@@ -16,17 +12,13 @@ pub struct Foo {
pub d: usize,
}

// @has structfields/Bar.t.html
// @has - struct.Bar.html
// @has structfields/struct.Bar.html
pub struct Bar {
// @has - //pre "pub a: ()"
pub a: (),
// @!has - //pre "// some fields omitted"
}

// @has structfields/Qux.t.html
// @has - enum.Qux.html
// @has structfields/enum.Qux.html
pub enum Qux {
Quz {