aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/attrs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir/src/attrs.rs')
-rw-r--r--crates/hir/src/attrs.rs41
1 files changed, 21 insertions, 20 deletions
diff --git a/crates/hir/src/attrs.rs b/crates/hir/src/attrs.rs
index 36027d183..e5a539cb8 100644
--- a/crates/hir/src/attrs.rs
+++ b/crates/hir/src/attrs.rs
@@ -1,7 +1,6 @@
1//! Attributes & documentation for hir types. 1//! Attributes & documentation for hir types.
2use hir_def::{ 2use hir_def::{
3 attr::Attrs, 3 attr::Attrs,
4 db::DefDatabase,
5 docs::Documentation, 4 docs::Documentation,
6 resolver::{HasResolver, Resolver}, 5 resolver::{HasResolver, Resolver},
7 AdtId, AttrDefId, FunctionId, GenericDefId, ModuleId, StaticId, TraitId, VariantId, 6 AdtId, AttrDefId, FunctionId, GenericDefId, ModuleId, StaticId, TraitId, VariantId,
@@ -62,18 +61,20 @@ macro_rules! impl_has_attrs_adt {
62impl_has_attrs_adt![Struct, Union, Enum]; 61impl_has_attrs_adt![Struct, Union, Enum];
63 62
64impl Resolvable for ModuleDef { 63impl Resolvable for ModuleDef {
65 fn resolver<D: DefDatabase + HirDatabase>(&self, db: &D) -> Option<Resolver> { 64 fn resolver(&self, db: &dyn HirDatabase) -> Option<Resolver> {
66 Some(match self { 65 Some(match self {
67 ModuleDef::Module(m) => ModuleId::from(m.clone()).resolver(db), 66 ModuleDef::Module(m) => ModuleId::from(m.clone()).resolver(db.upcast()),
68 ModuleDef::Function(f) => FunctionId::from(f.clone()).resolver(db), 67 ModuleDef::Function(f) => FunctionId::from(f.clone()).resolver(db.upcast()),
69 ModuleDef::Adt(adt) => AdtId::from(adt.clone()).resolver(db), 68 ModuleDef::Adt(adt) => AdtId::from(adt.clone()).resolver(db.upcast()),
70 ModuleDef::EnumVariant(ev) => { 69 ModuleDef::EnumVariant(ev) => {
71 GenericDefId::from(GenericDef::from(ev.clone())).resolver(db) 70 GenericDefId::from(GenericDef::from(ev.clone())).resolver(db.upcast())
72 } 71 }
73 ModuleDef::Const(c) => GenericDefId::from(GenericDef::from(c.clone())).resolver(db), 72 ModuleDef::Const(c) => {
74 ModuleDef::Static(s) => StaticId::from(s.clone()).resolver(db), 73 GenericDefId::from(GenericDef::from(c.clone())).resolver(db.upcast())
75 ModuleDef::Trait(t) => TraitId::from(t.clone()).resolver(db), 74 }
76 ModuleDef::TypeAlias(t) => ModuleId::from(t.module(db)).resolver(db), 75 ModuleDef::Static(s) => StaticId::from(s.clone()).resolver(db.upcast()),
76 ModuleDef::Trait(t) => TraitId::from(t.clone()).resolver(db.upcast()),
77 ModuleDef::TypeAlias(t) => ModuleId::from(t.module(db)).resolver(db.upcast()),
77 // FIXME: This should be a resolver relative to `std/core` 78 // FIXME: This should be a resolver relative to `std/core`
78 ModuleDef::BuiltinType(_t) => None?, 79 ModuleDef::BuiltinType(_t) => None?,
79 }) 80 })
@@ -85,8 +86,8 @@ impl Resolvable for ModuleDef {
85} 86}
86 87
87impl Resolvable for TypeParam { 88impl Resolvable for TypeParam {
88 fn resolver<D: DefDatabase + HirDatabase>(&self, db: &D) -> Option<Resolver> { 89 fn resolver(&self, db: &dyn HirDatabase) -> Option<Resolver> {
89 Some(ModuleId::from(self.module(db)).resolver(db)) 90 Some(ModuleId::from(self.module(db)).resolver(db.upcast()))
90 } 91 }
91 92
92 fn try_into_module_def(self) -> Option<ModuleDef> { 93 fn try_into_module_def(self) -> Option<ModuleDef> {
@@ -95,8 +96,8 @@ impl Resolvable for TypeParam {
95} 96}
96 97
97impl Resolvable for MacroDef { 98impl Resolvable for MacroDef {
98 fn resolver<D: DefDatabase + HirDatabase>(&self, db: &D) -> Option<Resolver> { 99 fn resolver(&self, db: &dyn HirDatabase) -> Option<Resolver> {
99 Some(ModuleId::from(self.module(db)?).resolver(db)) 100 Some(ModuleId::from(self.module(db)?).resolver(db.upcast()))
100 } 101 }
101 102
102 fn try_into_module_def(self) -> Option<ModuleDef> { 103 fn try_into_module_def(self) -> Option<ModuleDef> {
@@ -105,8 +106,8 @@ impl Resolvable for MacroDef {
105} 106}
106 107
107impl Resolvable for Field { 108impl Resolvable for Field {
108 fn resolver<D: DefDatabase + HirDatabase>(&self, db: &D) -> Option<Resolver> { 109 fn resolver(&self, db: &dyn HirDatabase) -> Option<Resolver> {
109 Some(VariantId::from(self.parent_def(db)).resolver(db)) 110 Some(VariantId::from(self.parent_def(db)).resolver(db.upcast()))
110 } 111 }
111 112
112 fn try_into_module_def(self) -> Option<ModuleDef> { 113 fn try_into_module_def(self) -> Option<ModuleDef> {
@@ -115,8 +116,8 @@ impl Resolvable for Field {
115} 116}
116 117
117impl Resolvable for ImplDef { 118impl Resolvable for ImplDef {
118 fn resolver<D: DefDatabase + HirDatabase>(&self, db: &D) -> Option<Resolver> { 119 fn resolver(&self, db: &dyn HirDatabase) -> Option<Resolver> {
119 Some(ModuleId::from(self.module(db)).resolver(db)) 120 Some(ModuleId::from(self.module(db)).resolver(db.upcast()))
120 } 121 }
121 122
122 fn try_into_module_def(self) -> Option<ModuleDef> { 123 fn try_into_module_def(self) -> Option<ModuleDef> {
@@ -125,8 +126,8 @@ impl Resolvable for ImplDef {
125} 126}
126 127
127impl Resolvable for Local { 128impl Resolvable for Local {
128 fn resolver<D: DefDatabase + HirDatabase>(&self, db: &D) -> Option<Resolver> { 129 fn resolver(&self, db: &dyn HirDatabase) -> Option<Resolver> {
129 Some(ModuleId::from(self.module(db)).resolver(db)) 130 Some(ModuleId::from(self.module(db)).resolver(db.upcast()))
130 } 131 }
131 132
132 fn try_into_module_def(self) -> Option<ModuleDef> { 133 fn try_into_module_def(self) -> Option<ModuleDef> {