From: Manish Goregaokar Date: Mon, 20 Jul 2020 02:12:43 +0000 (-0700) Subject: Rollup merge of #74534 - Mark-Simulacrum:rustdoc-stability, r=Manishearth X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=e8fc9934097e67c3f3fe11874ad2a89694a80bf2;hp=e24a0172b0df21b0bc17f3c9a16773d8889dd2b1;p=rust.git Rollup merge of #74534 - Mark-Simulacrum:rustdoc-stability, r=Manishearth Only skip impls of foreign unstable traits Previously unstable impls were skipped, which meant that any impl with an unstable method would get skipped. Fixes #74531. --- diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 70e5f6ac26f..737176c48f8 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -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 @@ pub fn args(&mut self, args: I) -> &mut Cargo } pub fn env(&mut self, key: impl AsRef, value: impl AsRef) -> &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 } diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs index af30747a959..ffdde85d765 100644 --- a/src/bootstrap/dist.rs +++ b/src/bootstrap/dist.rs @@ -1005,6 +1005,7 @@ fn run(self, builder: &Builder<'_>) -> PathBuf { // (essentially libstd and all of its path dependencies) let std_src_dirs = [ "src/build_helper", + "src/backtrace", "src/liballoc", "src/libcore", "src/libpanic_abort", diff --git a/src/bootstrap/doc.rs b/src/bootstrap/doc.rs index b051390fc26..f8a549afc88 100644 --- a/src/bootstrap/doc.rs +++ b/src/bootstrap/doc.rs @@ -527,11 +527,9 @@ fn run(self, builder: &Builder<'_>) { // 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 @@ fn run(self, builder: &Builder<'_>) { 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()); } } diff --git a/src/libcore/fmt/rt/v1.rs b/src/libcore/fmt/rt/v1.rs index f6460470bfe..37202b2774d 100644 --- a/src/libcore/fmt/rt/v1.rs +++ b/src/libcore/fmt/rt/v1.rs @@ -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, } diff --git a/src/librustc_middle/traits/specialization_graph.rs b/src/librustc_middle/traits/specialization_graph.rs index f4961617b81..c9aae898007 100644 --- a/src/librustc_middle/traits/specialization_graph.rs +++ b/src/librustc_middle/traits/specialization_graph.rs @@ -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, 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 { diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 823ce30febe..797318d95b7 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -722,7 +722,9 @@ fn read_to_string(&mut self, buf: &mut String) -> Result { /// 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 @@ fn read_to_string(&mut self, buf: &mut String) -> Result { /// /// [`File`]s implement `Read`: /// + /// [`read`]: Read::read /// [`File`]: crate::fs::File /// /// ```no_run diff --git a/src/libstd/keyword_docs.rs b/src/libstd/keyword_docs.rs index d985f10ccb4..e17771f57ec 100644 --- a/src/libstd/keyword_docs.rs +++ b/src/libstd/keyword_docs.rs @@ -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")] diff --git a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs b/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs new file mode 100644 index 00000000000..77a64320d6f --- /dev/null +++ b/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs @@ -0,0 +1,7 @@ +#![feature(min_specialization)] + +trait Trait {} +impl Trait for NonExistent {} +//~^ ERROR cannot find type `NonExistent` in this scope + +fn main() {} diff --git a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr b/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr new file mode 100644 index 00000000000..b032ccbe53f --- /dev/null +++ b/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr @@ -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`. diff --git a/src/tools/publish_toolstate.py b/src/tools/publish_toolstate.py index 72437e07004..c0631fcedd3 100755 --- a/src/tools/publish_toolstate.py +++ b/src/tools/publish_toolstate.py @@ -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'},