mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 10:13:54 +00:00
Auto merge of #74543 - Manishearth:rollup-m5w6hyg, r=Manishearth
Rollup of 9 pull requests Successful merges: - #73618 (Documentation for the false keyword) - #74486 (Improve Read::read_exact documentation) - #74514 (Do not clobber RUSTDOCFLAGS) - #74516 (do not try fetching the ancestors of errored trait impls) - #74520 (include backtrace folder in rust-src component) - #74523 (Improve documentation for `core::fmt` internals) - #74527 (Add myself to toolstate change notifications for rustfmt) - #74534 (Only skip impls of foreign unstable traits) - #74536 (fix documentation surrounding the `in` and `for` keywords) Failed merges: r? @ghost
This commit is contained in:
commit
891e6fee57
@ -1444,6 +1444,10 @@ pub struct Cargo {
|
||||
}
|
||||
|
||||
impl Cargo {
|
||||
pub fn rustdocflag(&mut self, arg: &str) -> &mut Cargo {
|
||||
self.rustdocflags.arg(arg);
|
||||
self
|
||||
}
|
||||
pub fn rustflag(&mut self, arg: &str) -> &mut Cargo {
|
||||
self.rustflags.arg(arg);
|
||||
self
|
||||
@ -1466,6 +1470,9 @@ impl Cargo {
|
||||
}
|
||||
|
||||
pub fn env(&mut self, key: impl AsRef<OsStr>, value: impl AsRef<OsStr>) -> &mut Cargo {
|
||||
// These are managed through rustflag/rustdocflag interfaces.
|
||||
assert_ne!(key.as_ref(), "RUSTFLAGS");
|
||||
assert_ne!(key.as_ref(), "RUSTDOCFLAGS");
|
||||
self.command.env(key.as_ref(), value.as_ref());
|
||||
self
|
||||
}
|
||||
|
@ -1005,6 +1005,7 @@ impl Step for Src {
|
||||
// (essentially libstd and all of its path dependencies)
|
||||
let std_src_dirs = [
|
||||
"src/build_helper",
|
||||
"src/backtrace",
|
||||
"src/liballoc",
|
||||
"src/libcore",
|
||||
"src/libpanic_abort",
|
||||
|
@ -527,11 +527,9 @@ impl Step for Rustc {
|
||||
|
||||
// Build cargo command.
|
||||
let mut cargo = builder.cargo(compiler, Mode::Rustc, SourceType::InTree, target, "doc");
|
||||
cargo.env(
|
||||
"RUSTDOCFLAGS",
|
||||
"--document-private-items \
|
||||
--enable-index-page -Zunstable-options",
|
||||
);
|
||||
cargo.rustdocflag("--document-private-items");
|
||||
cargo.rustdocflag("--enable-index-page");
|
||||
cargo.rustdocflag("-Zunstable-options");
|
||||
compile::rustc_cargo(builder, &mut cargo, target);
|
||||
|
||||
// Only include compiler crates, no dependencies of those, such as `libc`.
|
||||
@ -624,7 +622,7 @@ impl Step for Rustdoc {
|
||||
cargo.arg("--no-deps");
|
||||
cargo.arg("-p").arg("rustdoc");
|
||||
|
||||
cargo.env("RUSTDOCFLAGS", "--document-private-items");
|
||||
cargo.rustdocflag("--document-private-items");
|
||||
builder.run(&mut cargo.into());
|
||||
}
|
||||
}
|
||||
|
@ -33,9 +33,13 @@ pub enum Alignment {
|
||||
Unknown,
|
||||
}
|
||||
|
||||
/// Used by [width](https://doc.rust-lang.org/std/fmt/#width) and [precision](https://doc.rust-lang.org/std/fmt/#precision) specifiers.
|
||||
#[derive(Copy, Clone)]
|
||||
pub enum Count {
|
||||
/// Specified with a literal number, stores the value
|
||||
Is(usize),
|
||||
/// Specified using `$` and `*` syntaxes, stores the index into `args`
|
||||
Param(usize),
|
||||
/// Not specified
|
||||
Implied,
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
use crate::ich::{self, StableHashingContext};
|
||||
use crate::ty::fast_reject::SimplifiedType;
|
||||
use crate::ty::fold::TypeFoldable;
|
||||
use crate::ty::{self, TyCtxt};
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
@ -226,7 +227,8 @@ pub fn ancestors(
|
||||
start_from_impl: DefId,
|
||||
) -> Result<Ancestors<'tcx>, ErrorReported> {
|
||||
let specialization_graph = tcx.specialization_graph_of(trait_def_id);
|
||||
if specialization_graph.has_errored {
|
||||
|
||||
if specialization_graph.has_errored || tcx.type_of(start_from_impl).references_error() {
|
||||
Err(ErrorReported)
|
||||
} else {
|
||||
Ok(Ancestors {
|
||||
|
@ -346,9 +346,11 @@ pub fn build_impl(
|
||||
// such. This helps prevent dependencies of the standard library, for
|
||||
// example, from getting documented as "traits `u32` implements" which
|
||||
// isn't really too helpful.
|
||||
if let Some(stab) = cx.tcx.lookup_stability(did) {
|
||||
if stab.level.is_unstable() {
|
||||
return;
|
||||
if let Some(trait_did) = associated_trait {
|
||||
if let Some(stab) = cx.tcx.lookup_stability(trait_did.def_id) {
|
||||
if stab.level.is_unstable() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -722,7 +722,9 @@ pub trait Read {
|
||||
/// No guarantees are provided about the contents of `buf` when this
|
||||
/// function is called, implementations cannot rely on any property of the
|
||||
/// contents of `buf` being true. It is recommended that implementations
|
||||
/// only write data to `buf` instead of reading its contents.
|
||||
/// only write data to `buf` instead of reading its contents. The
|
||||
/// documentation on [`read`] has a more detailed explanation on this
|
||||
/// subject.
|
||||
///
|
||||
/// # Errors
|
||||
///
|
||||
@ -745,6 +747,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`]s implement `Read`:
|
||||
///
|
||||
/// [`read`]: Read::read
|
||||
/// [`File`]: crate::fs::File
|
||||
///
|
||||
/// ```no_run
|
||||
|
@ -387,10 +387,11 @@ mod extern_keyword {}
|
||||
//
|
||||
/// A value of type [`bool`] representing logical **false**.
|
||||
///
|
||||
/// The documentation for this keyword is [not yet complete]. Pull requests welcome!
|
||||
/// `false` is the logical opposite of [`true`].
|
||||
///
|
||||
/// [`bool`]: primitive.bool.html
|
||||
/// [not yet complete]: https://github.com/rust-lang/rust/issues/34601
|
||||
/// See the documentation for [`true`] for more information.
|
||||
///
|
||||
/// [`true`]: keyword.true.html
|
||||
mod false_keyword {}
|
||||
|
||||
#[doc(keyword = "fn")]
|
||||
@ -473,8 +474,8 @@ mod fn_keyword {}
|
||||
/// * `for` is also used for [higher-ranked trait bounds] as in `for<'a> &'a T: PartialEq<i32>`.
|
||||
///
|
||||
/// for-in-loops, or to be more precise, iterator loops, are a simple syntactic sugar over a common
|
||||
/// practice within Rust, which is to loop over an iterator until that iterator returns `None` (or
|
||||
/// `break` is called).
|
||||
/// practice within Rust, which is to loop over anything that implements [`IntoIterator`] until the
|
||||
/// iterator returned by `.into_iter()` returns `None` (or the loop body uses `break`).
|
||||
///
|
||||
/// ```rust
|
||||
/// for i in 0..5 {
|
||||
@ -680,7 +681,7 @@ mod impl_keyword {}
|
||||
//
|
||||
/// Iterate over a series of values with [`for`].
|
||||
///
|
||||
/// The expression immediately following `in` must implement the [`Iterator`] trait.
|
||||
/// The expression immediately following `in` must implement the [`IntoIterator`] trait.
|
||||
///
|
||||
/// ## Literal Examples:
|
||||
///
|
||||
@ -689,7 +690,7 @@ mod impl_keyword {}
|
||||
///
|
||||
/// (Read more about [range patterns])
|
||||
///
|
||||
/// [`Iterator`]: ../book/ch13-04-performance.html
|
||||
/// [`IntoIterator`]: ../book/ch13-04-performance.html
|
||||
/// [range patterns]: ../reference/patterns.html?highlight=range#range-patterns
|
||||
/// [`for`]: keyword.for.html
|
||||
mod in_keyword {}
|
||||
|
26
src/test/rustdoc/auxiliary/unstable-trait.rs
Normal file
26
src/test/rustdoc/auxiliary/unstable-trait.rs
Normal file
@ -0,0 +1,26 @@
|
||||
#![feature(staged_api)]
|
||||
#![stable(feature = "private_general", since = "1.0.0")]
|
||||
|
||||
#[unstable(feature = "private_trait", issue = "none")]
|
||||
pub trait Bar {}
|
||||
|
||||
#[stable(feature = "private_general", since = "1.0.0")]
|
||||
pub struct Foo {
|
||||
// nothing
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
#[stable(feature = "private_general", since = "1.0.0")]
|
||||
pub fn stable_impl() {}
|
||||
}
|
||||
|
||||
impl Foo {
|
||||
#[unstable(feature = "private_trait", issue = "none")]
|
||||
pub fn bar() {}
|
||||
|
||||
#[stable(feature = "private_general", since = "1.0.0")]
|
||||
pub fn bar2() {}
|
||||
}
|
||||
|
||||
#[stable(feature = "private_general", since = "1.0.0")]
|
||||
impl Bar for Foo {}
|
11
src/test/rustdoc/hide-unstable-trait.rs
Normal file
11
src/test/rustdoc/hide-unstable-trait.rs
Normal file
@ -0,0 +1,11 @@
|
||||
// aux-build:unstable-trait.rs
|
||||
|
||||
#![crate_name = "foo"]
|
||||
#![feature(private_trait)]
|
||||
|
||||
extern crate unstable_trait;
|
||||
|
||||
// @has foo/struct.Foo.html 'bar'
|
||||
// @has foo/struct.Foo.html 'bar2'
|
||||
#[doc(inline)]
|
||||
pub use unstable_trait::Foo;
|
@ -0,0 +1,7 @@
|
||||
#![feature(min_specialization)]
|
||||
|
||||
trait Trait {}
|
||||
impl Trait for NonExistent {}
|
||||
//~^ ERROR cannot find type `NonExistent` in this scope
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,9 @@
|
||||
error[E0412]: cannot find type `NonExistent` in this scope
|
||||
--> $DIR/impl-on-nonexisting.rs:4:16
|
||||
|
|
||||
LL | impl Trait for NonExistent {}
|
||||
| ^^^^^^^^^^^ not found in this scope
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0412`.
|
@ -26,7 +26,7 @@ except ImportError:
|
||||
MAINTAINERS = {
|
||||
'miri': {'oli-obk', 'RalfJung', 'eddyb'},
|
||||
'rls': {'Xanewok'},
|
||||
'rustfmt': {'topecongiro'},
|
||||
'rustfmt': {'topecongiro', 'calebcartwright'},
|
||||
'book': {'carols10cents', 'steveklabnik'},
|
||||
'nomicon': {'frewsxcv', 'Gankra'},
|
||||
'reference': {'steveklabnik', 'Havvy', 'matthewjasper', 'ehuss'},
|
||||
|
Loading…
Reference in New Issue
Block a user