diff options
| author | Dirk Gadsden <dirk@esherido.com> | 2016-02-08 21:09:25 -0800 |
|---|---|---|
| committer | Dirk Gadsden <dirk@esherido.com> | 2016-02-08 21:17:17 -0800 |
| commit | 456cedcf2337dc0aca1623c9b0ab1391880b527d (patch) | |
| tree | 93b2ea6fa169ca1c3cf709183e7600fbe6904e75 | |
| parent | 75271d8f1ad12ff8b9e97c4df1c94e7b3911e485 (diff) | |
| download | rust-456cedcf2337dc0aca1623c9b0ab1391880b527d.tar.gz rust-456cedcf2337dc0aca1623c9b0ab1391880b527d.zip | |
Make rustdoc report driver phase-3 errors instead of continuing
Fixes #31451.
| -rw-r--r-- | src/librustdoc/core.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs index f0bd4dd83cb..6b8f34ac73f 100644 --- a/src/librustdoc/core.rs +++ b/src/librustdoc/core.rs @@ -148,13 +148,18 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec<String>, externs: Externs, let arenas = ty::CtxtArenas::new(); let hir_map = driver::make_map(&sess, &mut hir_forest); - abort_on_err(driver::phase_3_run_analysis_passes(&sess, + let krate_and_analysis = abort_on_err(driver::phase_3_run_analysis_passes(&sess, &cstore, hir_map, &arenas, &name, resolve::MakeGlobMap::No, - |tcx, _, analysis, _| { + |tcx, _, analysis, result| { + // Return if the driver hit an err (in `result`) + if let Err(_) = result { + return None + } + let _ignore = tcx.dep_graph.in_ignore(); let ty::CrateAnalysis { access_levels, .. } = analysis; @@ -195,11 +200,17 @@ pub fn run_core(search_paths: SearchPaths, cfgs: Vec<String>, externs: Externs, let external_paths = ctxt.external_paths.borrow_mut().take(); *analysis.external_paths.borrow_mut() = external_paths; + let map = ctxt.external_typarams.borrow_mut().take(); *analysis.external_typarams.borrow_mut() = map; + let map = ctxt.inlined.borrow_mut().take(); *analysis.inlined.borrow_mut() = map; + analysis.deref_trait_did = ctxt.deref_trait_did.get(); - (krate, analysis) - }), &sess) + + Some((krate, analysis)) + }), &sess); + + krate_and_analysis.unwrap() } |
