diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 722b3d16e9d19..4765546b184d3 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -251,9 +251,9 @@ impl<'a> Builder<'a> { tool::RustInstaller, tool::Cargo, tool::Rls, tool::Rustdoc, tool::Clippy, native::Llvm), Kind::Test => describe!(check::Tidy, check::Bootstrap, check::DefaultCompiletest, - check::HostCompiletest, check::Crate, check::CrateLibrustc, check::Linkcheck, - check::Cargotest, check::Cargo, check::Rls, check::Docs, check::ErrorIndex, - check::Distcheck), + check::HostCompiletest, check::Crate, check::CrateLibrustc, check::Rustdoc, + check::Linkcheck, check::Cargotest, check::Cargo, check::Rls, check::Docs, + check::ErrorIndex, check::Distcheck), Kind::Bench => describe!(check::Crate, check::CrateLibrustc), Kind::Doc => describe!(doc::UnstableBook, doc::UnstableBookGen, doc::TheBook, doc::Standalone, doc::Std, doc::Test, doc::Rustc, doc::ErrorIndex, doc::Nomicon, diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 92fb2105b7c5d..0d5c3addd9e74 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -900,7 +900,6 @@ impl Step for CrateLibrustc { } } - #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub struct Crate { compiler: Compiler, @@ -1080,6 +1079,74 @@ impl Step for Crate { } } +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub struct Rustdoc { + host: Interned, + test_kind: TestKind, +} + +impl Step for Rustdoc { + type Output = (); + const DEFAULT: bool = true; + const ONLY_HOSTS: bool = true; + + fn should_run(run: ShouldRun) -> ShouldRun { + run.path("src/librustdoc").path("src/tools/rustdoc") + } + + fn make_run(run: RunConfig) { + let builder = run.builder; + + let test_kind = if builder.kind == Kind::Test { + TestKind::Test + } else if builder.kind == Kind::Bench { + TestKind::Bench + } else { + panic!("unexpected builder.kind in crate: {:?}", builder.kind); + }; + + builder.ensure(Rustdoc { + host: run.host, + test_kind, + }); + } + + fn run(self, builder: &Builder) { + let build = builder.build; + let test_kind = self.test_kind; + + let compiler = builder.compiler(builder.top_stage, self.host); + let target = compiler.host; + + builder.ensure(RemoteCopyLibs { compiler, target }); + + let mut cargo = builder.cargo(compiler, Mode::Librustc, target, test_kind.subcommand()); + compile::rustc_cargo(build, &compiler, target, &mut cargo); + let _folder = build.fold_output(|| { + format!("{}_stage{}-rustdoc", test_kind.subcommand(), compiler.stage) + }); + println!("{} rustdoc stage{} ({} -> {})", test_kind, compiler.stage, + &compiler.host, target); + + if test_kind.subcommand() == "test" && !build.fail_fast { + cargo.arg("--no-fail-fast"); + } + + cargo.arg("-p").arg("rustdoc:0.0.0"); + + cargo.arg("--"); + cargo.args(&build.config.cmd.test_args()); + + if build.config.quiet_tests { + cargo.arg("--quiet"); + } + + let _time = util::timeit(); + + try_run(build, &mut cargo); + } +} + fn envify(s: &str) -> String { s.chars().map(|c| { match c { diff --git a/src/librustdoc/Cargo.toml b/src/librustdoc/Cargo.toml index 00050bc357827..61ac541e2c139 100644 --- a/src/librustdoc/Cargo.toml +++ b/src/librustdoc/Cargo.toml @@ -7,6 +7,8 @@ build = "build.rs" [lib] name = "rustdoc" path = "lib.rs" +# SNAP/stage0(cargo) +doctest = false [dependencies] env_logger = { version = "0.4", default-features = false } diff --git a/src/librustdoc/clean/simplify.rs b/src/librustdoc/clean/simplify.rs index be02d24e44151..dd36b28bb39ac 100644 --- a/src/librustdoc/clean/simplify.rs +++ b/src/librustdoc/clean/simplify.rs @@ -15,13 +15,8 @@ //! the AST (e.g. see all of `clean::inline`), but this is not always a //! non-lossy transformation. The current format of storage for where clauses //! for functions and such is simply a list of predicates. One example of this -//! is that the AST predicate of: -//! -//! where T: Trait -//! -//! is encoded as: -//! -//! where T: Trait, ::Foo = Bar +//! is that the AST predicate of: `where T: Trait` is encoded as: +//! `where T: Trait, ::Foo = Bar`. //! //! This module attempts to reconstruct the original where and/or parameter //! bounds by special casing scenarios such as these. Fun! diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 2d14c02bf8a59..8d913c7552813 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -16,10 +16,12 @@ //! of `fmt::Display`. Example usage: //! //! ``` -//! use rustdoc::html::markdown::Markdown; +//! #![feature(rustc_private)] +//! +//! use rustdoc::html::markdown::{RenderType, Markdown}; //! //! let s = "My *markdown* _text_"; -//! let html = format!("{}", Markdown(s)); +//! let html = format!("{}", Markdown(s, RenderType::Pulldown)); //! // ... something using html //! ```