Skip to content

Commit

Permalink
rustdoc: Fix links to constants in external crates
Browse files Browse the repository at this point in the history
  • Loading branch information
ollie27 committed Apr 29, 2018
1 parent 207bc40 commit 7232df7
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/librustdoc/clean/mod.rs
Expand Up @@ -3881,6 +3881,7 @@ fn register_def(cx: &DocContext, def: Def) -> DefId {
Def::Union(i) => (i, TypeKind::Union),
Def::Mod(i) => (i, TypeKind::Module),
Def::TyForeign(i) => (i, TypeKind::Foreign),
Def::Const(i) => (i, TypeKind::Const),
Def::Static(i, _) => (i, TypeKind::Static),
Def::Variant(i) => (cx.tcx.parent_def_id(i).unwrap(), TypeKind::Enum),
Def::Macro(i, _) => (i, TypeKind::Macro),
Expand Down
32 changes: 32 additions & 0 deletions src/test/rustdoc/auxiliary/all-item-types.rs
@@ -0,0 +1,32 @@
// Copyright 2018 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(extern_types)]

pub mod foo_mod {}
extern "C" {
pub fn foo_ffn();
pub static FOO_FSTATIC: FooStruct;
pub type FooFType;
}
pub fn foo_fn() {}
pub trait FooTrait {}
pub struct FooStruct;
pub enum FooEnum {}
pub union FooUnion {
x: (),
}
pub type FooType = FooStruct;
pub static FOO_STATIC: FooStruct = FooStruct;
pub const FOO_CONSTANT: FooStruct = FooStruct;
#[macro_export]
macro_rules! foo_macro {
() => ();
}
71 changes: 71 additions & 0 deletions src/test/rustdoc/cross-crate-links.rs
@@ -0,0 +1,71 @@
// Copyright 2018 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:all-item-types.rs
// build-aux-docs

#![feature(use_extern_macros)]

#![crate_name = "foo"]

#[macro_use]
extern crate all_item_types;

// @has 'foo/index.html' '//a[@href="../all_item_types/foo_mod/index.html"]' 'foo_mod'
#[doc(no_inline)]
pub use all_item_types::foo_mod;

// @has 'foo/index.html' '//a[@href="../all_item_types/fn.foo_ffn.html"]' 'foo_ffn'
#[doc(no_inline)]
pub use all_item_types::foo_ffn;

// @has 'foo/index.html' '//a[@href="../all_item_types/static.FOO_FSTATIC.html"]' 'FOO_FSTATIC'
#[doc(no_inline)]
pub use all_item_types::FOO_FSTATIC;

// @has 'foo/index.html' '//a[@href="../all_item_types/foreigntype.FooFType.html"]' 'FooFType'
#[doc(no_inline)]
pub use all_item_types::FooFType;

// @has 'foo/index.html' '//a[@href="../all_item_types/fn.foo_fn.html"]' 'foo_fn'
#[doc(no_inline)]
pub use all_item_types::foo_fn;

// @has 'foo/index.html' '//a[@href="../all_item_types/trait.FooTrait.html"]' 'FooTrait'
#[doc(no_inline)]
pub use all_item_types::FooTrait;

// @has 'foo/index.html' '//a[@href="../all_item_types/struct.FooStruct.html"]' 'FooStruct'
#[doc(no_inline)]
pub use all_item_types::FooStruct;

// @has 'foo/index.html' '//a[@href="../all_item_types/enum.FooEnum.html"]' 'FooEnum'
#[doc(no_inline)]
pub use all_item_types::FooEnum;

// @has 'foo/index.html' '//a[@href="../all_item_types/union.FooUnion.html"]' 'FooUnion'
#[doc(no_inline)]
pub use all_item_types::FooUnion;

// @has 'foo/index.html' '//a[@href="../all_item_types/type.FooType.html"]' 'FooType'
#[doc(no_inline)]
pub use all_item_types::FooType;

// @has 'foo/index.html' '//a[@href="../all_item_types/static.FOO_STATIC.html"]' 'FOO_STATIC'
#[doc(no_inline)]
pub use all_item_types::FOO_STATIC;

// @has 'foo/index.html' '//a[@href="../all_item_types/constant.FOO_CONSTANT.html"]' 'FOO_CONSTANT'
#[doc(no_inline)]
pub use all_item_types::FOO_CONSTANT;

// @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;

0 comments on commit 7232df7

Please sign in to comment.