about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Barsky <me@davidbarsky.com>2025-01-27 17:20:11 -0500
committerDavid Barsky <me@davidbarsky.com>2025-01-27 17:30:34 -0500
commit9c1a7ab5d88b9f374554dfd550c5ba2fe5b8acf1 (patch)
tree0030909371a14bff89351c17b5eb1f4c1b772888
parentf22e331a408f32111cbb7c7743b65b5eba95baa6 (diff)
downloadrust-9c1a7ab5d88b9f374554dfd550c5ba2fe5b8acf1.tar.gz
rust-9c1a7ab5d88b9f374554dfd550c5ba2fe5b8acf1.zip
Back out "Implement `HasResolver` and `HasModule` for `FieldId`"
This backs out commit ce9da9063097c26006886b3f403a0c50790c285a.
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/lib.rs12
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/resolver.rs27
2 files changed, 19 insertions, 20 deletions
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/lib.rs b/src/tools/rust-analyzer/crates/hir-def/src/lib.rs
index cf97d27fd1f..1f06331783d 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/lib.rs
@@ -1357,12 +1357,6 @@ impl HasModule for VariantId {
     }
 }
 
-impl HasModule for FieldId {
-    fn module(&self, db: &dyn DefDatabase) -> ModuleId {
-        self.parent.module(db)
-    }
-}
-
 impl HasModule for MacroId {
     fn module(&self, db: &dyn DefDatabase) -> ModuleId {
         match *self {
@@ -1386,7 +1380,11 @@ impl HasModule for TypeOwnerId {
             TypeOwnerId::ImplId(it) => it.module(db),
             TypeOwnerId::EnumVariantId(it) => it.module(db),
             TypeOwnerId::InTypeConstId(it) => it.lookup(db).owner.module(db),
-            TypeOwnerId::FieldId(it) => it.module(db),
+            TypeOwnerId::FieldId(it) => match it.parent {
+                VariantId::EnumVariantId(it) => it.module(db),
+                VariantId::StructId(it) => it.module(db),
+                VariantId::UnionId(it) => it.module(db),
+            },
         }
     }
 }
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs b/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs
index b415efafa6f..52998942965 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/resolver.rs
@@ -27,11 +27,10 @@ use crate::{
     type_ref::{LifetimeRef, TypesMap},
     visibility::{RawVisibility, Visibility},
     AdtId, ConstId, ConstParamId, CrateRootModuleId, DefWithBodyId, EnumId, EnumVariantId,
-    ExternBlockId, ExternCrateId, FieldId, FunctionId, FxIndexMap, GenericDefId, GenericParamId,
-    HasModule, ImplId, ItemContainerId, ItemTreeLoc, LifetimeParamId, LocalModuleId, Lookup,
-    Macro2Id, MacroId, MacroRulesId, ModuleDefId, ModuleId, ProcMacroId, StaticId, StructId,
-    TraitAliasId, TraitId, TypeAliasId, TypeOrConstParamId, TypeOwnerId, TypeParamId, UseId,
-    VariantId,
+    ExternBlockId, ExternCrateId, FunctionId, FxIndexMap, GenericDefId, GenericParamId, HasModule,
+    ImplId, ItemContainerId, ItemTreeLoc, LifetimeParamId, LocalModuleId, Lookup, Macro2Id,
+    MacroId, MacroRulesId, ModuleDefId, ModuleId, ProcMacroId, StaticId, StructId, TraitAliasId,
+    TraitId, TypeAliasId, TypeOrConstParamId, TypeOwnerId, TypeParamId, UseId, VariantId,
 };
 
 #[derive(Debug, Clone)]
@@ -1228,7 +1227,11 @@ impl HasResolver for TypeOwnerId {
             TypeOwnerId::TypeAliasId(it) => it.resolver(db),
             TypeOwnerId::ImplId(it) => it.resolver(db),
             TypeOwnerId::EnumVariantId(it) => it.resolver(db),
-            TypeOwnerId::FieldId(it) => it.resolver(db),
+            TypeOwnerId::FieldId(it) => match it.parent {
+                VariantId::EnumVariantId(it) => it.resolver(db),
+                VariantId::StructId(it) => it.resolver(db),
+                VariantId::UnionId(it) => it.resolver(db),
+            },
         }
     }
 }
@@ -1241,7 +1244,11 @@ impl HasResolver for DefWithBodyId {
             DefWithBodyId::StaticId(s) => s.resolver(db),
             DefWithBodyId::VariantId(v) => v.resolver(db),
             DefWithBodyId::InTypeConstId(c) => c.lookup(db).owner.resolver(db),
-            DefWithBodyId::FieldId(f) => f.resolver(db),
+            DefWithBodyId::FieldId(f) => match f.parent {
+                VariantId::EnumVariantId(it) => it.resolver(db),
+                VariantId::StructId(it) => it.resolver(db),
+                VariantId::UnionId(it) => it.resolver(db),
+            },
         }
     }
 }
@@ -1288,12 +1295,6 @@ impl HasResolver for VariantId {
     }
 }
 
-impl HasResolver for FieldId {
-    fn resolver(self, db: &dyn DefDatabase) -> Resolver {
-        self.parent.resolver(db)
-    }
-}
-
 impl HasResolver for MacroId {
     fn resolver(self, db: &dyn DefDatabase) -> Resolver {
         match self {