Move lint_store
from GlobalCtxt
to Session
.
This was made possible by the removal of plugin support, which simplified lint store creation. This simplifies the places in rustc and rustdoc that call `describe_lints`, which are early on. The lint store is now built before those places, so they don't have to create their own lint store for temporary use, they can just use the main one.
This commit is contained in:
parent
73c1fc5bc0
commit
a3b4961d5f
10 changed files with 59 additions and 64 deletions
|
@ -485,6 +485,16 @@ pub fn run_compiler<R: Send>(config: Config, f: impl FnOnce(&Compiler) -> R + Se
|
|||
sess.opts.untracked_state_hash = hasher.finish()
|
||||
}
|
||||
|
||||
// Even though the session holds the lint store, we can't build the
|
||||
// lint store until after the session exists. And we wait until now
|
||||
// so that `register_lints` sees the fully initialized session.
|
||||
let mut lint_store = rustc_lint::new_lint_store(sess.enable_internal_lints());
|
||||
if let Some(register_lints) = config.register_lints.as_deref() {
|
||||
register_lints(&sess, &mut lint_store);
|
||||
sess.registered_lints = true;
|
||||
}
|
||||
sess.lint_store = Some(Lrc::new(lint_store));
|
||||
|
||||
let compiler = Compiler {
|
||||
sess: Lrc::new(sess),
|
||||
codegen_backend: Lrc::from(codegen_backend),
|
||||
|
|
|
@ -127,7 +127,7 @@ fn configure_and_expand(
|
|||
let tcx = resolver.tcx();
|
||||
let sess = tcx.sess;
|
||||
let features = tcx.features();
|
||||
let lint_store = unerased_lint_store(tcx);
|
||||
let lint_store = unerased_lint_store(&tcx.sess);
|
||||
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
||||
let lint_check_node = (&krate, pre_configured_attrs);
|
||||
pre_expansion_lint(
|
||||
|
@ -319,7 +319,7 @@ fn early_lint_checks(tcx: TyCtxt<'_>, (): ()) {
|
|||
}
|
||||
});
|
||||
|
||||
let lint_store = unerased_lint_store(tcx);
|
||||
let lint_store = unerased_lint_store(&tcx.sess);
|
||||
rustc_lint::check_ast_node(
|
||||
sess,
|
||||
tcx.features(),
|
||||
|
@ -634,7 +634,6 @@ pub fn create_global_ctxt<'tcx>(
|
|||
compiler: &'tcx Compiler,
|
||||
crate_types: Vec<CrateType>,
|
||||
stable_crate_id: StableCrateId,
|
||||
lint_store: Lrc<LintStore>,
|
||||
dep_graph: DepGraph,
|
||||
untracked: Untracked,
|
||||
gcx_cell: &'tcx OnceLock<GlobalCtxt<'tcx>>,
|
||||
|
@ -665,7 +664,6 @@ pub fn create_global_ctxt<'tcx>(
|
|||
sess,
|
||||
crate_types,
|
||||
stable_crate_id,
|
||||
lint_store,
|
||||
arena,
|
||||
hir_arena,
|
||||
untracked,
|
||||
|
|
|
@ -148,12 +148,6 @@ impl<'tcx> Queries<'tcx> {
|
|||
);
|
||||
let dep_graph = setup_dep_graph(sess, crate_name, stable_crate_id)?;
|
||||
|
||||
let mut lint_store = rustc_lint::new_lint_store(sess.enable_internal_lints());
|
||||
if let Some(register_lints) = self.compiler.register_lints.as_deref() {
|
||||
register_lints(sess, &mut lint_store);
|
||||
}
|
||||
let lint_store = Lrc::new(lint_store);
|
||||
|
||||
let cstore = FreezeLock::new(Box::new(CStore::new(
|
||||
self.codegen_backend().metadata_loader(),
|
||||
stable_crate_id,
|
||||
|
@ -168,7 +162,6 @@ impl<'tcx> Queries<'tcx> {
|
|||
self.compiler,
|
||||
crate_types,
|
||||
stable_crate_id,
|
||||
lint_store,
|
||||
dep_graph,
|
||||
untracked,
|
||||
&self.gcx_cell,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue