about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2024-01-16 10:47:54 +0100
committerLukas Wirth <lukastw97@gmail.com>2024-01-16 10:47:54 +0100
commit54f2111f69fcd550875a6ef24ea423f6037d969b (patch)
treefd075bf041eadf612b76b4f82be7ec777eefd6b9
parent90a1b484f77a37cd730bee91442e367f1d4eea32 (diff)
downloadrust-54f2111f69fcd550875a6ef24ea423f6037d969b.tar.gz
rust-54f2111f69fcd550875a6ef24ea423f6037d969b.zip
internal: Make data queries transparent over their diagnostics variant
-rw-r--r--crates/hir-def/src/data.rs7
-rw-r--r--crates/hir-def/src/data/adt.rs3
-rw-r--r--crates/hir-def/src/db.rs5
-rw-r--r--crates/hir/src/db.rs22
-rw-r--r--crates/ide-db/src/apply_change.rs5
-rw-r--r--crates/ide-db/src/lib.rs5
6 files changed, 21 insertions, 26 deletions
diff --git a/crates/hir-def/src/data.rs b/crates/hir-def/src/data.rs
index a42d6bb3378..ca02b5d68e2 100644
--- a/crates/hir-def/src/data.rs
+++ b/crates/hir-def/src/data.rs
@@ -233,6 +233,7 @@ pub struct TraitData {
 }
 
 impl TraitData {
+    #[inline]
     pub(crate) fn trait_data_query(db: &dyn DefDatabase, tr: TraitId) -> Arc<TraitData> {
         db.trait_data_with_diagnostics(tr).0
     }
@@ -241,12 +242,9 @@ impl TraitData {
         db: &dyn DefDatabase,
         tr: TraitId,
     ) -> (Arc<TraitData>, DefDiagnostics) {
-        let tr_loc @ ItemLoc { container: module_id, id: tree_id } = tr.lookup(db);
+        let ItemLoc { container: module_id, id: tree_id } = tr.lookup(db);
         let item_tree = tree_id.item_tree(db);
         let tr_def = &item_tree[tree_id.value];
-        let _cx = stdx::panic_context::enter(format!(
-            "trait_data_query({tr:?} -> {tr_loc:?} -> {tr_def:?})"
-        ));
         let name = tr_def.name.clone();
         let is_auto = tr_def.is_auto;
         let is_unsafe = tr_def.is_unsafe;
@@ -333,6 +331,7 @@ pub struct ImplData {
 }
 
 impl ImplData {
+    #[inline]
     pub(crate) fn impl_data_query(db: &dyn DefDatabase, id: ImplId) -> Arc<ImplData> {
         db.impl_data_with_diagnostics(id).0
     }
diff --git a/crates/hir-def/src/data/adt.rs b/crates/hir-def/src/data/adt.rs
index 5d443715213..5986b7df3d9 100644
--- a/crates/hir-def/src/data/adt.rs
+++ b/crates/hir-def/src/data/adt.rs
@@ -180,6 +180,7 @@ fn parse_repr_tt(tt: &Subtree) -> Option<ReprOptions> {
 }
 
 impl StructData {
+    #[inline]
     pub(crate) fn struct_data_query(db: &dyn DefDatabase, id: StructId) -> Arc<StructData> {
         db.struct_data_with_diagnostics(id).0
     }
@@ -236,6 +237,7 @@ impl StructData {
         )
     }
 
+    #[inline]
     pub(crate) fn union_data_query(db: &dyn DefDatabase, id: UnionId) -> Arc<StructData> {
         db.union_data_with_diagnostics(id).0
     }
@@ -322,6 +324,7 @@ impl EnumData {
 }
 
 impl EnumVariantData {
+    #[inline]
     pub(crate) fn enum_variant_data_query(
         db: &dyn DefDatabase,
         e: EnumVariantId,
diff --git a/crates/hir-def/src/db.rs b/crates/hir-def/src/db.rs
index 186a8cf2d9f..c1127ccaaf1 100644
--- a/crates/hir-def/src/db.rs
+++ b/crates/hir-def/src/db.rs
@@ -117,12 +117,14 @@ pub trait DefDatabase: InternDatabase + ExpandDatabase + Upcast<dyn ExpandDataba
 
     // region:data
 
+    #[salsa::transparent]
     #[salsa::invoke(StructData::struct_data_query)]
     fn struct_data(&self, id: StructId) -> Arc<StructData>;
 
     #[salsa::invoke(StructData::struct_data_with_diagnostics_query)]
     fn struct_data_with_diagnostics(&self, id: StructId) -> (Arc<StructData>, DefDiagnostics);
 
+    #[salsa::transparent]
     #[salsa::invoke(StructData::union_data_query)]
     fn union_data(&self, id: UnionId) -> Arc<StructData>;
 
@@ -132,6 +134,7 @@ pub trait DefDatabase: InternDatabase + ExpandDatabase + Upcast<dyn ExpandDataba
     #[salsa::invoke(EnumData::enum_data_query)]
     fn enum_data(&self, e: EnumId) -> Arc<EnumData>;
 
+    #[salsa::transparent]
     #[salsa::invoke(EnumVariantData::enum_variant_data_query)]
     fn enum_variant_data(&self, id: EnumVariantId) -> Arc<EnumVariantData>;
 
@@ -141,12 +144,14 @@ pub trait DefDatabase: InternDatabase + ExpandDatabase + Upcast<dyn ExpandDataba
         id: EnumVariantId,
     ) -> (Arc<EnumVariantData>, DefDiagnostics);
 
+    #[salsa::transparent]
     #[salsa::invoke(ImplData::impl_data_query)]
     fn impl_data(&self, e: ImplId) -> Arc<ImplData>;
 
     #[salsa::invoke(ImplData::impl_data_with_diagnostics_query)]
     fn impl_data_with_diagnostics(&self, e: ImplId) -> (Arc<ImplData>, DefDiagnostics);
 
+    #[salsa::transparent]
     #[salsa::invoke(TraitData::trait_data_query)]
     fn trait_data(&self, e: TraitId) -> Arc<TraitData>;
 
diff --git a/crates/hir/src/db.rs b/crates/hir/src/db.rs
index a2492840cb7..557c8d29a17 100644
--- a/crates/hir/src/db.rs
+++ b/crates/hir/src/db.rs
@@ -6,20 +6,18 @@
 pub use hir_def::db::{
     AttrsQuery, BlockDefMapQuery, BlockItemTreeQueryQuery, BodyQuery, BodyWithSourceMapQuery,
     ConstDataQuery, ConstVisibilityQuery, CrateDefMapQueryQuery, CrateLangItemsQuery,
-    CrateSupportsNoStdQuery, DefDatabase, DefDatabaseStorage, EnumDataQuery, EnumVariantDataQuery,
+    CrateSupportsNoStdQuery, DefDatabase, DefDatabaseStorage, EnumDataQuery,
     EnumVariantDataWithDiagnosticsQuery, ExprScopesQuery, ExternCrateDeclDataQuery,
     FieldVisibilitiesQuery, FieldsAttrsQuery, FieldsAttrsSourceMapQuery, FileItemTreeQuery,
-    FunctionDataQuery, FunctionVisibilityQuery, GenericParamsQuery, ImplDataQuery,
-    ImplDataWithDiagnosticsQuery, ImportMapQuery, InternAnonymousConstQuery, InternBlockQuery,
-    InternConstQuery, InternDatabase, InternDatabaseStorage, InternEnumQuery,
-    InternExternBlockQuery, InternExternCrateQuery, InternFunctionQuery, InternImplQuery,
-    InternInTypeConstQuery, InternMacro2Query, InternMacroRulesQuery, InternProcMacroQuery,
-    InternStaticQuery, InternStructQuery, InternTraitAliasQuery, InternTraitQuery,
-    InternTypeAliasQuery, InternUnionQuery, InternUseQuery, LangItemQuery, Macro2DataQuery,
-    MacroRulesDataQuery, ProcMacroDataQuery, StaticDataQuery, StructDataQuery,
-    StructDataWithDiagnosticsQuery, TraitAliasDataQuery, TraitDataQuery,
-    TraitDataWithDiagnosticsQuery, TypeAliasDataQuery, UnionDataQuery,
-    UnionDataWithDiagnosticsQuery,
+    FunctionDataQuery, FunctionVisibilityQuery, GenericParamsQuery, ImplDataWithDiagnosticsQuery,
+    ImportMapQuery, InternAnonymousConstQuery, InternBlockQuery, InternConstQuery, InternDatabase,
+    InternDatabaseStorage, InternEnumQuery, InternExternBlockQuery, InternExternCrateQuery,
+    InternFunctionQuery, InternImplQuery, InternInTypeConstQuery, InternMacro2Query,
+    InternMacroRulesQuery, InternProcMacroQuery, InternStaticQuery, InternStructQuery,
+    InternTraitAliasQuery, InternTraitQuery, InternTypeAliasQuery, InternUnionQuery,
+    InternUseQuery, LangItemQuery, Macro2DataQuery, MacroRulesDataQuery, ProcMacroDataQuery,
+    StaticDataQuery, StructDataWithDiagnosticsQuery, TraitAliasDataQuery,
+    TraitDataWithDiagnosticsQuery, TypeAliasDataQuery, UnionDataWithDiagnosticsQuery,
 };
 pub use hir_expand::db::{
     AstIdMapQuery, DeclMacroExpanderQuery, ExpandDatabase, ExpandDatabaseStorage,
diff --git a/crates/ide-db/src/apply_change.rs b/crates/ide-db/src/apply_change.rs
index 3d973dfe10a..766d1c1e43d 100644
--- a/crates/ide-db/src/apply_change.rs
+++ b/crates/ide-db/src/apply_change.rs
@@ -136,16 +136,11 @@ impl RootDatabase {
             hir::db::FileItemTreeQuery
             hir::db::CrateDefMapQueryQuery
             hir::db::BlockDefMapQuery
-            hir::db::StructDataQuery
             hir::db::StructDataWithDiagnosticsQuery
-            hir::db::UnionDataQuery
             hir::db::UnionDataWithDiagnosticsQuery
             hir::db::EnumDataQuery
             hir::db::EnumVariantDataWithDiagnosticsQuery
-            hir::db::EnumVariantDataQuery
-            hir::db::ImplDataQuery
             hir::db::ImplDataWithDiagnosticsQuery
-            hir::db::TraitDataQuery
             hir::db::TraitDataWithDiagnosticsQuery
             hir::db::TraitAliasDataQuery
             hir::db::TypeAliasDataQuery
diff --git a/crates/ide-db/src/lib.rs b/crates/ide-db/src/lib.rs
index e1b6c13ba8e..dc61fc0e4ca 100644
--- a/crates/ide-db/src/lib.rs
+++ b/crates/ide-db/src/lib.rs
@@ -217,16 +217,11 @@ impl RootDatabase {
             hir_db::FileItemTreeQuery
             hir_db::CrateDefMapQueryQuery
             hir_db::BlockDefMapQuery
-            hir_db::StructDataQuery
             hir_db::StructDataWithDiagnosticsQuery
-            hir_db::UnionDataQuery
             hir_db::UnionDataWithDiagnosticsQuery
             hir_db::EnumDataQuery
-            hir_db::EnumDataQuery
             hir_db::EnumVariantDataWithDiagnosticsQuery
-            hir_db::ImplDataQuery
             hir_db::ImplDataWithDiagnosticsQuery
-            hir_db::TraitDataQuery
             hir_db::TraitDataWithDiagnosticsQuery
             hir_db::TraitAliasDataQuery
             hir_db::TypeAliasDataQuery