Skip to content

Commit

Permalink
Fix missing trait impls for type in rustc docs
Browse files Browse the repository at this point in the history
  • Loading branch information
ShoyuVanilla committed Feb 17, 2024
1 parent c9a7db6 commit f5d43a0
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 7 deletions.
19 changes: 12 additions & 7 deletions src/librustdoc/clean/inline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -443,11 +443,13 @@ pub(crate) fn build_impl(
return;
}

if let Some(stab) = tcx.lookup_stability(did)
&& stab.is_unstable()
&& stab.feature == sym::rustc_private
{
return;
if !tcx.features().rustc_private && !cx.render_options.force_unstable_if_unmarked {
if let Some(stab) = tcx.lookup_stability(did)
&& stab.is_unstable()
&& stab.feature == sym::rustc_private
{
return;
}
}
}

Expand Down Expand Up @@ -477,8 +479,11 @@ pub(crate) fn build_impl(
return;
}

if let Some(stab) = tcx.lookup_stability(did) {
if stab.is_unstable() && stab.feature == sym::rustc_private {
if !tcx.features().rustc_private && !cx.render_options.force_unstable_if_unmarked {
if let Some(stab) = tcx.lookup_stability(did)
&& stab.is_unstable()
&& stab.feature == sym::rustc_private
{
return;
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/librustdoc/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,8 @@ pub(crate) struct RenderOptions {
pub(crate) no_emit_shared: bool,
/// If `true`, HTML source code pages won't be generated.
pub(crate) html_no_source: bool,
/// Whether `-Zforce-unstable-if-unmarked` unstable option is set
pub(crate) force_unstable_if_unmarked: bool,
}

#[derive(Copy, Clone, Debug, PartialEq, Eq)]
Expand Down Expand Up @@ -347,6 +349,7 @@ impl Options {

let codegen_options = CodegenOptions::build(early_dcx, matches);
let unstable_opts = UnstableOptions::build(early_dcx, matches);
let force_unstable_if_unmarked = unstable_opts.force_unstable_if_unmarked;

let dcx = new_dcx(error_format, None, diagnostic_width, &unstable_opts);

Expand Down Expand Up @@ -760,6 +763,7 @@ impl Options {
call_locations,
no_emit_shared: false,
html_no_source,
force_unstable_if_unmarked,
};
Some((options, render_options))
}
Expand Down
6 changes: 6 additions & 0 deletions tests/rustdoc/inline_cross/auxiliary/issue-76736-1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#![feature(staged_api)]
#![unstable(feature = "rustc_private", issue = "none")]

pub trait MaybeResult<T> {}

impl<T> MaybeResult<T> for T {}
5 changes: 5 additions & 0 deletions tests/rustdoc/inline_cross/auxiliary/issue-76736-2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#![feature(rustc_private)]

extern crate issue_76736_1;

pub struct Bar;
15 changes: 15 additions & 0 deletions tests/rustdoc/inline_cross/issue-76736-1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// aux-build:issue-76736-1.rs
// aux-build:issue-76736-2.rs

#![crate_name = "foo"]

extern crate issue_76736_1;
extern crate issue_76736_2;

// @has foo/struct.Foo.html
// @!has - '//*[@class="impl"]//h3[@class="code-header"]' 'MaybeResult'
pub struct Foo;

// @has foo/struct.Bar.html
// @!has - '//*[@class="impl"]//h3[@class="code-header"]' 'MaybeResult'
pub use issue_76736_2::Bar;
16 changes: 16 additions & 0 deletions tests/rustdoc/inline_cross/issue-76736-2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// aux-build:issue-76736-1.rs
// aux-build:issue-76736-2.rs

#![crate_name = "foo"]
#![feature(rustc_private)]

extern crate issue_76736_1;
extern crate issue_76736_2;

// @has foo/struct.Foo.html
// @has - '//*[@class="impl"]//h3[@class="code-header"]' 'MaybeResult'
pub struct Foo;

// @has foo/struct.Bar.html
// @has - '//*[@class="impl"]//h3[@class="code-header"]' 'MaybeResult'
pub use issue_76736_2::Bar;
16 changes: 16 additions & 0 deletions tests/rustdoc/inline_cross/issue-76736-3.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// compile-flags: -Zforce-unstable-if-unmarked
// aux-build:issue-76736-1.rs
// aux-build:issue-76736-2.rs

#![crate_name = "foo"]

extern crate issue_76736_1;
extern crate issue_76736_2;

// @has foo/struct.Foo.html
// @has - '//*[@class="impl"]//h3[@class="code-header"]' 'MaybeResult'
pub struct Foo;

// @has foo/struct.Bar.html
// @has - '//*[@class="impl"]//h3[@class="code-header"]' 'MaybeResult'
pub use issue_76736_2::Bar;

0 comments on commit f5d43a0

Please sign in to comment.