Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/symbols.rs')
-rw-r--r--crates/hir/src/symbols.rs32
1 files changed, 29 insertions, 3 deletions
diff --git a/crates/hir/src/symbols.rs b/crates/hir/src/symbols.rs
index 021a20ae1b..79a075ef8b 100644
--- a/crates/hir/src/symbols.rs
+++ b/crates/hir/src/symbols.rs
@@ -2,7 +2,7 @@
use std::marker::PhantomData;
-use base_db::FxIndexSet;
+use base_db::{FxIndexSet, salsa::Update};
use either::Either;
use hir_def::{
AdtId, AssocItemId, AstIdLoc, Complete, DefWithBodyId, ExternCrateId, HasModule, ImplId,
@@ -28,7 +28,7 @@ use crate::{Crate, HasCrate, Module, ModuleDef, Semantics};
/// The actual data that is stored in the index. It should be as compact as
/// possible.
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+#[derive(Clone, PartialEq, Eq, Hash, Update)]
pub struct FileSymbol<'db> {
pub name: Symbol,
pub def: ModuleDef,
@@ -39,7 +39,33 @@ pub struct FileSymbol<'db> {
pub is_assoc: bool,
pub is_import: bool,
pub do_not_complete: Complete,
- _marker: PhantomData<&'db ()>,
+ _marker: PhantomData<fn() -> &'db ()>,
+}
+
+impl<'db> std::fmt::Debug for FileSymbol<'db> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ let FileSymbol {
+ name,
+ def,
+ loc,
+ container_name,
+ is_alias,
+ is_assoc,
+ is_import,
+ do_not_complete,
+ _marker: _,
+ } = self;
+ f.debug_struct("FileSymbol")
+ .field("name", name)
+ .field("def", def)
+ .field("loc", loc)
+ .field("container_name", container_name)
+ .field("is_alias", is_alias)
+ .field("is_assoc", is_assoc)
+ .field("is_import", is_import)
+ .field("do_not_complete", do_not_complete)
+ .finish()
+ }
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]