@@ -12,7 +12,7 @@ use std::{env, fs, iter};
1212use build_helper:: exit;
1313
1414use crate :: core:: build_steps:: compile:: { Std , run_cargo} ;
15- use crate :: core:: build_steps:: doc:: DocumentationFormat ;
15+ use crate :: core:: build_steps:: doc:: { DocumentationFormat , prepare_doc_compiler } ;
1616use crate :: core:: build_steps:: gcc:: { Gcc , add_cg_gcc_cargo_flags} ;
1717use crate :: core:: build_steps:: llvm:: get_llvm_version;
1818use crate :: core:: build_steps:: run:: get_completion_paths;
@@ -3306,8 +3306,8 @@ impl Step for TierCheck {
33063306
33073307#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
33083308pub struct LintDocs {
3309- pub compiler : Compiler ,
3310- pub target : TargetSelection ,
3309+ build_compiler : Compiler ,
3310+ target : TargetSelection ,
33113311}
33123312
33133313impl Step for LintDocs {
@@ -3320,17 +3320,36 @@ impl Step for LintDocs {
33203320 }
33213321
33223322 fn make_run ( run : RunConfig < ' _ > ) {
3323+ // Bump the stage to 2, because the rustc book requires an in-tree compiler.
3324+ // At the same time, since this step is enabled by default, we don't want `x test` to fail
3325+ // in stage 1.
3326+ let stage = if run. builder . config . is_explicit_stage ( ) || run. builder . top_stage >= 2 {
3327+ run. builder . top_stage
3328+ } else {
3329+ 2
3330+ } ;
3331+
33233332 run. builder . ensure ( LintDocs {
3324- compiler : run. builder . compiler ( run. builder . top_stage , run. builder . config . host_target ) ,
3333+ build_compiler : prepare_doc_compiler (
3334+ run. builder ,
3335+ run. builder . config . host_target ,
3336+ stage,
3337+ ) ,
33253338 target : run. target ,
33263339 } ) ;
33273340 }
33283341
33293342 /// Tests that the lint examples in the rustc book generate the correct
33303343 /// lints and have the expected format.
33313344 fn run ( self , builder : & Builder < ' _ > ) {
3332- builder
3333- . ensure ( crate :: core:: build_steps:: doc:: RustcBook :: validate ( self . compiler , self . target ) ) ;
3345+ builder. ensure ( crate :: core:: build_steps:: doc:: RustcBook :: validate (
3346+ self . build_compiler ,
3347+ self . target ,
3348+ ) ) ;
3349+ }
3350+
3351+ fn metadata ( & self ) -> Option < StepMetadata > {
3352+ Some ( StepMetadata :: test ( "lint-docs" , self . target ) . built_by ( self . build_compiler ) )
33343353 }
33353354}
33363355
0 commit comments