about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2025-03-15 17:16:13 +0100
committerLukas Wirth <lukastw97@gmail.com>2025-03-16 10:27:48 +0100
commitcd0582c1e1856846811c349e8a90a63a3372e1c4 (patch)
treec5c0e8a0c34b3f0c69de83119485a117a219474c
parentccecb291cb85fceea643883305dab4fb16eadb6f (diff)
downloadrust-cd0582c1e1856846811c349e8a90a63a3372e1c4.tar.gz
rust-cd0582c1e1856846811c349e8a90a63a3372e1c4.zip
refactor: Remove unnecessary `Arc`
-rw-r--r--src/tools/rust-analyzer/crates/base-db/src/input.rs7
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/expander.rs7
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/expr_store/lower.rs4
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/nameres/assoc.rs4
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs2
-rw-r--r--src/tools/rust-analyzer/crates/hir-ty/src/display.rs2
-rw-r--r--src/tools/rust-analyzer/crates/hir/src/lib.rs4
-rw-r--r--src/tools/rust-analyzer/crates/ide/src/lib.rs2
-rw-r--r--src/tools/rust-analyzer/crates/project-model/src/workspace.rs10
-rw-r--r--src/tools/rust-analyzer/crates/query-group-macro/tests/logger_db.rs2
-rw-r--r--src/tools/rust-analyzer/crates/test-fixture/src/lib.rs4
11 files changed, 22 insertions, 26 deletions
diff --git a/src/tools/rust-analyzer/crates/base-db/src/input.rs b/src/tools/rust-analyzer/crates/base-db/src/input.rs
index 3d940608237..2fe4f688f56 100644
--- a/src/tools/rust-analyzer/crates/base-db/src/input.rs
+++ b/src/tools/rust-analyzer/crates/base-db/src/input.rs
@@ -89,7 +89,7 @@ impl ops::Index<CrateBuilderId> for CrateGraphBuilder {
 pub struct CrateBuilder {
     pub basic: CrateDataBuilder,
     pub extra: ExtraCrateData,
-    pub cfg_options: Arc<CfgOptions>,
+    pub cfg_options: CfgOptions,
     pub env: Env,
     ws_data: Arc<CrateWorkspaceData>,
 }
@@ -403,9 +403,8 @@ pub struct Crate {
     // This is in `Arc` because it is shared for all crates in a workspace.
     #[return_ref]
     pub workspace_data: Arc<CrateWorkspaceData>,
-    // FIXME: Remove this `Arc`.
     #[return_ref]
-    pub cfg_options: Arc<CfgOptions>,
+    pub cfg_options: CfgOptions,
     #[return_ref]
     pub env: Env,
 }
@@ -421,7 +420,7 @@ impl CrateGraphBuilder {
         edition: Edition,
         display_name: Option<CrateDisplayName>,
         version: Option<String>,
-        cfg_options: Arc<CfgOptions>,
+        cfg_options: CfgOptions,
         potential_cfg_options: Option<CfgOptions>,
         mut env: Env,
         origin: CrateOrigin,
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/expander.rs b/src/tools/rust-analyzer/crates/hir-def/src/expander.rs
index 895b8279679..16cf969b880 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/expander.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/expander.rs
@@ -11,7 +11,6 @@ use hir_expand::{
 };
 use span::{Edition, SyntaxContext};
 use syntax::{Parse, ast};
-use triomphe::Arc;
 
 use crate::type_ref::{TypesMap, TypesSourceMap};
 use crate::{
@@ -21,7 +20,6 @@ use crate::{
 
 #[derive(Debug)]
 pub struct Expander {
-    cfg_options: Arc<CfgOptions>,
     span_map: OnceCell<SpanMap>,
     current_file_id: HirFileId,
     pub(crate) module: ModuleId,
@@ -44,7 +42,6 @@ impl Expander {
             module,
             recursion_depth: 0,
             recursion_limit,
-            cfg_options: Arc::clone(module.krate.cfg_options(db)),
             span_map: OnceCell::new(),
         }
     }
@@ -141,8 +138,8 @@ impl Expander {
         )
     }
 
-    pub(crate) fn cfg_options(&self) -> &CfgOptions {
-        &self.cfg_options
+    pub(crate) fn cfg_options<'db>(&self, db: &'db dyn DefDatabase) -> &'db CfgOptions {
+        self.module.krate.cfg_options(db)
     }
 
     pub fn current_file_id(&self) -> HirFileId {
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/expr_store/lower.rs b/src/tools/rust-analyzer/crates/hir-def/src/expr_store/lower.rs
index fe1a5e8f29d..86f31dcaf00 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/expr_store/lower.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/expr_store/lower.rs
@@ -1894,14 +1894,14 @@ impl ExprCollector<'_> {
     fn check_cfg(&mut self, owner: &dyn ast::HasAttrs) -> Option<()> {
         match self.expander.parse_attrs(self.db, owner).cfg() {
             Some(cfg) => {
-                if self.expander.cfg_options().check(&cfg) != Some(false) {
+                if self.expander.cfg_options(self.db).check(&cfg) != Some(false) {
                     return Some(());
                 }
 
                 self.source_map.diagnostics.push(ExpressionStoreDiagnostics::InactiveCode {
                     node: self.expander.in_file(SyntaxNodePtr::new(owner.syntax())),
                     cfg,
-                    opts: self.expander.cfg_options().clone(),
+                    opts: self.expander.cfg_options(self.db).clone(),
                 });
 
                 None
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/nameres/assoc.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/assoc.rs
index 1b3d10f098b..eb7f8b0061d 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/assoc.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/nameres/assoc.rs
@@ -167,13 +167,13 @@ impl<'a> AssocItemCollector<'a> {
 
         'items: for &item in assoc_items {
             let attrs = item_tree.attrs(self.db, self.module_id.krate, ModItem::from(item).into());
-            if !attrs.is_cfg_enabled(self.expander.cfg_options()) {
+            if !attrs.is_cfg_enabled(self.expander.cfg_options(self.db)) {
                 self.diagnostics.push(DefDiagnostic::unconfigured_code(
                     self.module_id.local_id,
                     tree_id,
                     ModItem::from(item).into(),
                     attrs.cfg().unwrap(),
-                    self.expander.cfg_options().clone(),
+                    self.expander.cfg_options(self.db).clone(),
                 ));
                 continue;
             }
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs b/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs
index bd25d0bd585..14653c64a61 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/nameres/tests/incremental.rs
@@ -58,7 +58,7 @@ pub const BAZ: u32 = 0;
                 Edition::CURRENT,
                 Some(CrateDisplayName::from_canonical_name(crate_name)),
                 None,
-                Arc::default(),
+                Default::default(),
                 None,
                 Env::default(),
                 CrateOrigin::Local { repo: None, name: Some(Symbol::intern(crate_name)) },
diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/display.rs b/src/tools/rust-analyzer/crates/hir-ty/src/display.rs
index b2e13ba6920..0e3c5b9b474 100644
--- a/src/tools/rust-analyzer/crates/hir-ty/src/display.rs
+++ b/src/tools/rust-analyzer/crates/hir-ty/src/display.rs
@@ -1226,7 +1226,7 @@ impl HirDisplay for Ty {
             TyKind::Adt(AdtId(def_id), parameters) => {
                 f.start_location_link((*def_id).into());
                 match f.display_kind {
-                    DisplayKind::Diagnostics { .. } | DisplayKind::Test { .. } => {
+                    DisplayKind::Diagnostics | DisplayKind::Test => {
                         let name = match *def_id {
                             hir_def::AdtId::StructId(it) => db.struct_data(it).name.clone(),
                             hir_def::AdtId::UnionId(it) => db.union_data(it).name.clone(),
diff --git a/src/tools/rust-analyzer/crates/hir/src/lib.rs b/src/tools/rust-analyzer/crates/hir/src/lib.rs
index b3bb4a0a33a..c3834b3c4d0 100644
--- a/src/tools/rust-analyzer/crates/hir/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/hir/src/lib.rs
@@ -276,8 +276,8 @@ impl Crate {
         doc_url.map(|s| s.trim_matches('"').trim_end_matches('/').to_owned() + "/")
     }
 
-    pub fn cfg(&self, db: &dyn HirDatabase) -> Arc<CfgOptions> {
-        Arc::clone(self.id.cfg_options(db))
+    pub fn cfg<'db>(&self, db: &'db dyn HirDatabase) -> &'db CfgOptions {
+        self.id.cfg_options(db)
     }
 
     pub fn potential_cfg<'db>(&self, db: &'db dyn HirDatabase) -> &'db CfgOptions {
diff --git a/src/tools/rust-analyzer/crates/ide/src/lib.rs b/src/tools/rust-analyzer/crates/ide/src/lib.rs
index f8eb676bfc4..f85a7bf2f25 100644
--- a/src/tools/rust-analyzer/crates/ide/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/ide/src/lib.rs
@@ -250,7 +250,7 @@ impl Analysis {
             Edition::CURRENT,
             None,
             None,
-            Arc::new(cfg_options),
+            cfg_options,
             None,
             Env::default(),
             CrateOrigin::Local { repo: None, name: None },
diff --git a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs
index f7bb875e65c..95148bb1d0c 100644
--- a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs
+++ b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs
@@ -1051,7 +1051,7 @@ fn project_json_to_crate_graph(
                     *edition,
                     display_name.clone(),
                     version.clone(),
-                    Arc::new(cfg_options),
+                    cfg_options,
                     None,
                     env,
                     if let Some(name) = display_name.clone() {
@@ -1341,7 +1341,7 @@ fn detached_file_to_crate_graph(
     }
     cfg_options.insert_atom(sym::rust_analyzer.clone());
     override_cfg.apply(&mut cfg_options, "");
-    let cfg_options = Arc::new(cfg_options);
+    let cfg_options = cfg_options;
 
     let file_id = match load(detached_file) {
         Some(file_id) => file_id,
@@ -1526,7 +1526,7 @@ fn add_target_crate_root(
         edition,
         Some(CrateDisplayName::from_canonical_name(cargo_name)),
         Some(pkg.version.to_string()),
-        Arc::new(cfg_options),
+        cfg_options,
         potential_cfg_options,
         env,
         origin,
@@ -1680,13 +1680,13 @@ fn sysroot_to_crate_graph(
             extend_crate_graph_with_sysroot(crate_graph, sysroot_cg, sysroot_pm)
         }
         RustLibSrcWorkspace::Stitched(stitched) => {
-            let cfg_options = Arc::new({
+            let cfg_options = {
                 let mut cfg_options = CfgOptions::default();
                 cfg_options.extend(rustc_cfg);
                 cfg_options.insert_atom(sym::debug_assertions.clone());
                 cfg_options.insert_atom(sym::miri.clone());
                 cfg_options
-            });
+            };
             let sysroot_crates: FxHashMap<
                 crate::sysroot::stitched::RustLibSrcCrate,
                 CrateBuilderId,
diff --git a/src/tools/rust-analyzer/crates/query-group-macro/tests/logger_db.rs b/src/tools/rust-analyzer/crates/query-group-macro/tests/logger_db.rs
index b3457c1046e..5cf9be36f70 100644
--- a/src/tools/rust-analyzer/crates/query-group-macro/tests/logger_db.rs
+++ b/src/tools/rust-analyzer/crates/query-group-macro/tests/logger_db.rs
@@ -18,7 +18,7 @@ impl salsa::Database for LoggerDb {
         let event = event();
         match event.kind {
             salsa::EventKind::WillExecute { .. }
-            | salsa::EventKind::WillCheckCancellation { .. }
+            | salsa::EventKind::WillCheckCancellation
             | salsa::EventKind::DidValidateMemoizedValue { .. }
             | salsa::EventKind::WillDiscardStaleOutput { .. }
             | salsa::EventKind::DidDiscard { .. } => {
diff --git a/src/tools/rust-analyzer/crates/test-fixture/src/lib.rs b/src/tools/rust-analyzer/crates/test-fixture/src/lib.rs
index 2c5c1c2e7fe..3fea49d1f61 100644
--- a/src/tools/rust-analyzer/crates/test-fixture/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/test-fixture/src/lib.rs
@@ -207,7 +207,7 @@ impl ChangeFixture {
                     meta.edition,
                     Some(crate_name.clone().into()),
                     version,
-                    From::from(meta.cfg.clone()),
+                    meta.cfg.clone(),
                     Some(meta.cfg),
                     meta.env,
                     origin,
@@ -247,7 +247,7 @@ impl ChangeFixture {
                 Edition::CURRENT,
                 Some(CrateName::new("ra_test_fixture").unwrap().into()),
                 None,
-                From::from(default_cfg.clone()),
+                default_cfg.clone(),
                 Some(default_cfg),
                 default_env,
                 CrateOrigin::Local { repo: None, name: None },