Use Symbol
for the crate name instead of String
/str
This commit is contained in:
parent
e60fbaf4ce
commit
d30848b30a
18 changed files with 103 additions and 92 deletions
|
@ -158,7 +158,7 @@ pub fn create_resolver(
|
|||
sess: Lrc<Session>,
|
||||
metadata_loader: Box<MetadataLoaderDyn>,
|
||||
krate: &ast::Crate,
|
||||
crate_name: &str,
|
||||
crate_name: Symbol,
|
||||
) -> BoxedResolver {
|
||||
trace!("create_resolver");
|
||||
BoxedResolver::new(sess, move |sess, resolver_arenas| {
|
||||
|
@ -171,7 +171,7 @@ pub fn register_plugins<'a>(
|
|||
metadata_loader: &'a dyn MetadataLoader,
|
||||
register_lints: impl Fn(&Session, &mut LintStore),
|
||||
mut krate: ast::Crate,
|
||||
crate_name: &str,
|
||||
crate_name: Symbol,
|
||||
) -> Result<(ast::Crate, LintStore)> {
|
||||
krate = sess.time("attributes_injection", || {
|
||||
rustc_builtin_macros::cmdline_attrs::inject(
|
||||
|
@ -228,19 +228,21 @@ fn pre_expansion_lint<'a>(
|
|||
lint_store: &LintStore,
|
||||
registered_tools: &RegisteredTools,
|
||||
check_node: impl EarlyCheckNode<'a>,
|
||||
node_name: &str,
|
||||
node_name: Symbol,
|
||||
) {
|
||||
sess.prof.generic_activity_with_arg("pre_AST_expansion_lint_checks", node_name).run(|| {
|
||||
rustc_lint::check_ast_node(
|
||||
sess,
|
||||
true,
|
||||
lint_store,
|
||||
registered_tools,
|
||||
None,
|
||||
rustc_lint::BuiltinCombinedPreExpansionLintPass::new(),
|
||||
check_node,
|
||||
);
|
||||
});
|
||||
sess.prof.generic_activity_with_arg("pre_AST_expansion_lint_checks", node_name.as_str()).run(
|
||||
|| {
|
||||
rustc_lint::check_ast_node(
|
||||
sess,
|
||||
true,
|
||||
lint_store,
|
||||
registered_tools,
|
||||
None,
|
||||
rustc_lint::BuiltinCombinedPreExpansionLintPass::new(),
|
||||
check_node,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// Cannot implement directly for `LintStore` due to trait coherence.
|
||||
|
@ -254,7 +256,7 @@ impl LintStoreExpand for LintStoreExpandImpl<'_> {
|
|||
node_id: ast::NodeId,
|
||||
attrs: &[ast::Attribute],
|
||||
items: &[rustc_ast::ptr::P<ast::Item>],
|
||||
name: &str,
|
||||
name: Symbol,
|
||||
) {
|
||||
pre_expansion_lint(sess, self.0, registered_tools, (node_id, attrs, items), name);
|
||||
}
|
||||
|
@ -268,7 +270,7 @@ pub fn configure_and_expand(
|
|||
sess: &Session,
|
||||
lint_store: &LintStore,
|
||||
mut krate: ast::Crate,
|
||||
crate_name: &str,
|
||||
crate_name: Symbol,
|
||||
resolver: &mut Resolver<'_>,
|
||||
) -> Result<ast::Crate> {
|
||||
trace!("configure_and_expand");
|
||||
|
@ -462,7 +464,7 @@ fn generated_output_paths(
|
|||
sess: &Session,
|
||||
outputs: &OutputFilenames,
|
||||
exact_name: bool,
|
||||
crate_name: &str,
|
||||
crate_name: Symbol,
|
||||
) -> Vec<PathBuf> {
|
||||
let mut out_filenames = Vec::new();
|
||||
for output_type in sess.opts.output_types.keys() {
|
||||
|
@ -661,7 +663,7 @@ pub fn prepare_outputs(
|
|||
compiler: &Compiler,
|
||||
krate: &ast::Crate,
|
||||
boxed_resolver: &RefCell<BoxedResolver>,
|
||||
crate_name: &str,
|
||||
crate_name: Symbol,
|
||||
) -> Result<OutputFilenames> {
|
||||
let _timer = sess.timer("prepare_outputs");
|
||||
|
||||
|
@ -771,7 +773,7 @@ pub fn create_global_ctxt<'tcx>(
|
|||
dep_graph: DepGraph,
|
||||
resolver: Rc<RefCell<BoxedResolver>>,
|
||||
outputs: OutputFilenames,
|
||||
crate_name: &str,
|
||||
crate_name: Symbol,
|
||||
queries: &'tcx OnceCell<TcxQueries<'tcx>>,
|
||||
global_ctxt: &'tcx OnceCell<GlobalCtxt<'tcx>>,
|
||||
arena: &'tcx WorkerLocal<Arena<'tcx>>,
|
||||
|
|
|
@ -17,6 +17,7 @@ use rustc_query_impl::Queries as TcxQueries;
|
|||
use rustc_session::config::{self, OutputFilenames, OutputType};
|
||||
use rustc_session::{output::find_crate_name, Session};
|
||||
use rustc_span::symbol::sym;
|
||||
use rustc_span::Symbol;
|
||||
use std::any::Any;
|
||||
use std::cell::{Ref, RefCell, RefMut};
|
||||
use std::rc::Rc;
|
||||
|
@ -74,7 +75,7 @@ pub struct Queries<'tcx> {
|
|||
|
||||
dep_graph_future: Query<Option<DepGraphFuture>>,
|
||||
parse: Query<ast::Crate>,
|
||||
crate_name: Query<String>,
|
||||
crate_name: Query<Symbol>,
|
||||
register_plugins: Query<(ast::Crate, Lrc<LintStore>)>,
|
||||
expansion: Query<(Lrc<ast::Crate>, Rc<RefCell<BoxedResolver>>, Lrc<LintStore>)>,
|
||||
dep_graph: Query<DepGraph>,
|
||||
|
@ -135,7 +136,7 @@ impl<'tcx> Queries<'tcx> {
|
|||
&*self.codegen_backend().metadata_loader(),
|
||||
self.compiler.register_lints.as_deref().unwrap_or_else(|| empty),
|
||||
krate,
|
||||
&crate_name,
|
||||
crate_name,
|
||||
)?;
|
||||
|
||||
// Compute the dependency graph (in the background). We want to do
|
||||
|
@ -149,7 +150,7 @@ impl<'tcx> Queries<'tcx> {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn crate_name(&self) -> Result<&Query<String>> {
|
||||
pub fn crate_name(&self) -> Result<&Query<Symbol>> {
|
||||
self.crate_name.compute(|| {
|
||||
Ok({
|
||||
let parse_result = self.parse()?;
|
||||
|
@ -165,7 +166,7 @@ impl<'tcx> Queries<'tcx> {
|
|||
) -> Result<&Query<(Lrc<ast::Crate>, Rc<RefCell<BoxedResolver>>, Lrc<LintStore>)>> {
|
||||
trace!("expansion");
|
||||
self.expansion.compute(|| {
|
||||
let crate_name = self.crate_name()?.peek().clone();
|
||||
let crate_name = *self.crate_name()?.peek();
|
||||
let (krate, lint_store) = self.register_plugins()?.take();
|
||||
let _timer = self.session().timer("configure_and_expand");
|
||||
let sess = self.session();
|
||||
|
@ -173,10 +174,10 @@ impl<'tcx> Queries<'tcx> {
|
|||
sess.clone(),
|
||||
self.codegen_backend().metadata_loader(),
|
||||
&krate,
|
||||
&crate_name,
|
||||
crate_name,
|
||||
);
|
||||
let krate = resolver.access(|resolver| {
|
||||
passes::configure_and_expand(sess, &lint_store, krate, &crate_name, resolver)
|
||||
passes::configure_and_expand(sess, &lint_store, krate, crate_name, resolver)
|
||||
})?;
|
||||
Ok((Lrc::new(krate), Rc::new(RefCell::new(resolver)), lint_store))
|
||||
})
|
||||
|
@ -201,20 +202,20 @@ impl<'tcx> Queries<'tcx> {
|
|||
pub fn prepare_outputs(&self) -> Result<&Query<OutputFilenames>> {
|
||||
self.prepare_outputs.compute(|| {
|
||||
let (krate, boxed_resolver, _) = &*self.expansion()?.peek();
|
||||
let crate_name = self.crate_name()?.peek();
|
||||
let crate_name = *self.crate_name()?.peek();
|
||||
passes::prepare_outputs(
|
||||
self.session(),
|
||||
self.compiler,
|
||||
krate,
|
||||
&*boxed_resolver,
|
||||
&crate_name,
|
||||
crate_name,
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
pub fn global_ctxt(&'tcx self) -> Result<&Query<QueryContext<'tcx>>> {
|
||||
self.global_ctxt.compute(|| {
|
||||
let crate_name = self.crate_name()?.peek().clone();
|
||||
let crate_name = *self.crate_name()?.peek();
|
||||
let outputs = self.prepare_outputs()?.take();
|
||||
let dep_graph = self.dep_graph()?.peek().clone();
|
||||
let (krate, resolver, lint_store) = self.expansion()?.take();
|
||||
|
@ -225,7 +226,7 @@ impl<'tcx> Queries<'tcx> {
|
|||
dep_graph,
|
||||
resolver,
|
||||
outputs,
|
||||
&crate_name,
|
||||
crate_name,
|
||||
&self.queries,
|
||||
&self.gcx,
|
||||
&self.arena,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue