Don't load all extern crates unconditionally
Instead, only load the crates that are linked to with intra-doc links. This doesn't help very much with any of rustdoc's fundamental issues with freezing the resolver, but it at least fixes a stable-to-stable regression, and makes the crate loading model somewhat more consistent with rustc's.
This commit is contained in:
@@ -31,6 +31,7 @@ extern crate tracing;
|
||||
//
|
||||
// Dependencies listed in Cargo.toml do not need `extern crate`.
|
||||
extern crate rustc_ast;
|
||||
extern crate rustc_ast_lowering;
|
||||
extern crate rustc_ast_pretty;
|
||||
extern crate rustc_attr;
|
||||
extern crate rustc_data_structures;
|
||||
@@ -637,7 +638,6 @@ fn main_options(options: config::Options) -> MainResult {
|
||||
let default_passes = options.default_passes;
|
||||
let output_format = options.output_format;
|
||||
// FIXME: fix this clone (especially render_options)
|
||||
let externs = options.externs.clone();
|
||||
let manual_passes = options.manual_passes.clone();
|
||||
let render_options = options.render_options.clone();
|
||||
let config = core::create_config(options);
|
||||
@@ -649,7 +649,7 @@ fn main_options(options: config::Options) -> MainResult {
|
||||
// We need to hold on to the complete resolver, so we cause everything to be
|
||||
// cloned for the analysis passes to use. Suboptimal, but necessary in the
|
||||
// current architecture.
|
||||
let resolver = core::create_resolver(externs, queries, &sess);
|
||||
let resolver = core::create_resolver(queries, &sess);
|
||||
|
||||
if sess.has_errors() {
|
||||
sess.fatal("Compilation failed, aborting rustdoc");
|
||||
|
||||
Reference in New Issue
Block a user