Fix missing trait impls for type in rustc docs

This commit is contained in:
Shoyu Vanilla 2024-02-17 14:27:05 +09:00
parent c9a7db6e20
commit f5d43a052b
7 changed files with 74 additions and 7 deletions

View File

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

View File

@ -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)]
@ -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);
@ -760,6 +763,7 @@ impl Options {
call_locations,
no_emit_shared: false,
html_no_source,
force_unstable_if_unmarked,
};
Some((options, render_options))
}

View File

@ -0,0 +1,6 @@
#![feature(staged_api)]
#![unstable(feature = "rustc_private", issue = "none")]
pub trait MaybeResult<T> {}
impl<T> MaybeResult<T> for T {}

View File

@ -0,0 +1,5 @@
#![feature(rustc_private)]
extern crate issue_76736_1;
pub struct Bar;

View File

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

View File

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

View File

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